/* Generated by Cython 3.2.4 */

#ifndef PY_SSIZE_T_CLEAN
#define PY_SSIZE_T_CLEAN
#endif /* PY_SSIZE_T_CLEAN */
/* InitLimitedAPI */
#if defined(Py_LIMITED_API)
  #if !defined(CYTHON_LIMITED_API)
  #define CYTHON_LIMITED_API 1
  #endif
#elif defined(CYTHON_LIMITED_API)
  #ifdef _MSC_VER
  #pragma message ("Limited API usage is enabled with 'CYTHON_LIMITED_API' but 'Py_LIMITED_API' does not define a Python target version. Consider setting 'Py_LIMITED_API' instead.")
  #else
  #warning Limited API usage is enabled with 'CYTHON_LIMITED_API' but 'Py_LIMITED_API' does not define a Python target version. Consider setting 'Py_LIMITED_API' instead.
  #endif
#endif

#include "Python.h"

    #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 < 0x03080000
    #error Cython requires Python 3.8+.
#else
#define __PYX_ABI_VERSION "3_2_4"
#define CYTHON_HEX_VERSION 0x030204F0
#define CYTHON_FUTURE_DIVISION 1
/* CModulePreamble */
#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 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_CPYTHON_FREETHREADING 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
  #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_AVOID_THREAD_UNSAFE_BORROWED_REFS
  #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 0
  #undef CYTHON_ASSUME_SAFE_MACROS
  #define CYTHON_ASSUME_SAFE_MACROS 0
  #undef CYTHON_ASSUME_SAFE_SIZE
  #define CYTHON_ASSUME_SAFE_SIZE 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 1
  #undef CYTHON_USE_MODULE_STATE
  #define CYTHON_USE_MODULE_STATE 0
  #undef CYTHON_USE_SYS_MONITORING
  #define CYTHON_USE_SYS_MONITORING 0
  #undef CYTHON_USE_TP_FINALIZE
  #define CYTHON_USE_TP_FINALIZE 0
  #undef CYTHON_USE_AM_SEND
  #define CYTHON_USE_AM_SEND 0
  #undef CYTHON_USE_DICT_VERSIONS
  #define CYTHON_USE_DICT_VERSIONS 0
  #undef CYTHON_USE_EXC_INFO_STACK
  #define CYTHON_USE_EXC_INFO_STACK 1
  #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
    #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
  #endif
  #undef CYTHON_USE_FREELISTS
  #define CYTHON_USE_FREELISTS 0
  #undef CYTHON_IMMORTAL_CONSTANTS
  #define CYTHON_IMMORTAL_CONSTANTS 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_CPYTHON_FREETHREADING 0
  #undef CYTHON_USE_TYPE_SLOTS
  #define CYTHON_USE_TYPE_SLOTS 1
  #ifndef CYTHON_USE_TYPE_SPECS
    #define CYTHON_USE_TYPE_SPECS 0
  #endif
  #undef CYTHON_USE_PYTYPE_LOOKUP
  #define CYTHON_USE_PYTYPE_LOOKUP 0
  #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_AVOID_THREAD_UNSAFE_BORROWED_REFS
  #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 1
  #undef CYTHON_ASSUME_SAFE_MACROS
  #define CYTHON_ASSUME_SAFE_MACROS 0
  #ifndef CYTHON_ASSUME_SAFE_SIZE
    #define CYTHON_ASSUME_SAFE_SIZE 1
  #endif
  #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
  #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_SYS_MONITORING
  #define CYTHON_USE_SYS_MONITORING 0
  #ifndef CYTHON_USE_TP_FINALIZE
    #define CYTHON_USE_TP_FINALIZE (PYPY_VERSION_NUM >= 0x07030C00)
  #endif
  #undef CYTHON_USE_AM_SEND
  #define CYTHON_USE_AM_SEND 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 (PYPY_VERSION_NUM >= 0x07031100)
  #endif
  #undef CYTHON_USE_FREELISTS
  #define CYTHON_USE_FREELISTS 0
  #undef CYTHON_IMMORTAL_CONSTANTS
  #define CYTHON_IMMORTAL_CONSTANTS 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_CPYTHON_FREETHREADING 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_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
  #ifndef CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS
    #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 0
  #endif
  #undef CYTHON_ASSUME_SAFE_MACROS
  #define CYTHON_ASSUME_SAFE_MACROS 0
  #undef CYTHON_ASSUME_SAFE_SIZE
  #define CYTHON_ASSUME_SAFE_SIZE 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 (__PYX_LIMITED_VERSION_HEX >= 0x030C0000)
  #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
  #undef CYTHON_USE_SYS_MONITORING
  #define CYTHON_USE_SYS_MONITORING 0
  #ifndef CYTHON_USE_TP_FINALIZE
    #define CYTHON_USE_TP_FINALIZE 0
  #endif
  #ifndef CYTHON_USE_AM_SEND
    #define CYTHON_USE_AM_SEND (__PYX_LIMITED_VERSION_HEX >= 0x030A0000)
  #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
  #ifndef CYTHON_USE_FREELISTS
  #define CYTHON_USE_FREELISTS 1
  #endif
  #undef CYTHON_IMMORTAL_CONSTANTS
  #define CYTHON_IMMORTAL_CONSTANTS 0
#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
  #ifdef Py_GIL_DISABLED
    #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 1
  #else
    #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 0
  #endif
  #if PY_VERSION_HEX < 0x030A0000
    #undef CYTHON_USE_TYPE_SLOTS
    #define CYTHON_USE_TYPE_SLOTS 1
  #elif !defined(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
  #ifndef CYTHON_USE_PYLONG_INTERNALS
    #define CYTHON_USE_PYLONG_INTERNALS 1
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    #undef CYTHON_USE_PYLIST_INTERNALS
    #define CYTHON_USE_PYLIST_INTERNALS 0
  #elif !defined(CYTHON_USE_PYLIST_INTERNALS)
    #define CYTHON_USE_PYLIST_INTERNALS 1
  #endif
  #ifndef CYTHON_USE_UNICODE_INTERNALS
    #define CYTHON_USE_UNICODE_INTERNALS 1
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING || 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
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    #undef CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS
    #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 1
  #elif !defined(CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS)
    #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 0
  #endif
  #ifndef CYTHON_ASSUME_SAFE_MACROS
    #define CYTHON_ASSUME_SAFE_MACROS 1
  #endif
  #ifndef CYTHON_ASSUME_SAFE_SIZE
    #define CYTHON_ASSUME_SAFE_SIZE 1
  #endif
  #ifndef CYTHON_UNPACK_METHODS
    #define CYTHON_UNPACK_METHODS 1
  #endif
  #ifndef CYTHON_FAST_THREAD_STATE
    #define CYTHON_FAST_THREAD_STATE 1
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    #undef CYTHON_FAST_GIL
    #define CYTHON_FAST_GIL 0
  #elif !defined(CYTHON_FAST_GIL)
    #define CYTHON_FAST_GIL (PY_VERSION_HEX < 0x030C00A6)
  #endif
  #ifndef CYTHON_METH_FASTCALL
    #define CYTHON_METH_FASTCALL 1
  #endif
  #ifndef CYTHON_FAST_PYCALL
    #define CYTHON_FAST_PYCALL 1
  #endif
  #ifndef CYTHON_PEP487_INIT_SUBCLASS
    #define CYTHON_PEP487_INIT_SUBCLASS 1
  #endif
  #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
    #define CYTHON_PEP489_MULTI_PHASE_INIT 1
  #endif
  #ifndef CYTHON_USE_MODULE_STATE
    #define CYTHON_USE_MODULE_STATE 0
  #endif
  #ifndef CYTHON_USE_SYS_MONITORING
    #define CYTHON_USE_SYS_MONITORING (PY_VERSION_HEX >= 0x030d00B1)
  #endif
  #ifndef CYTHON_USE_TP_FINALIZE
    #define CYTHON_USE_TP_FINALIZE 1
  #endif
  #ifndef CYTHON_USE_AM_SEND
    #define CYTHON_USE_AM_SEND 1
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    #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 && !CYTHON_USE_MODULE_STATE)
  #endif
  #ifndef 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 (!CYTHON_COMPILING_IN_CPYTHON_FREETHREADING)
  #endif
  #if defined(CYTHON_IMMORTAL_CONSTANTS) && PY_VERSION_HEX < 0x030C0000
    #undef CYTHON_IMMORTAL_CONSTANTS
    #define CYTHON_IMMORTAL_CONSTANTS 0  // definitely won't work
  #elif !defined(CYTHON_IMMORTAL_CONSTANTS)
    #define CYTHON_IMMORTAL_CONSTANTS (PY_VERSION_HEX >= 0x030C0000 && !CYTHON_USE_MODULE_STATE && CYTHON_COMPILING_IN_CPYTHON_FREETHREADING)
  #endif
#endif
#ifndef CYTHON_COMPRESS_STRINGS
  #define CYTHON_COMPRESS_STRINGS 1
#endif
#ifndef CYTHON_FAST_PYCCALL
#define CYTHON_FAST_PYCCALL  CYTHON_FAST_PYCALL
#endif
#ifndef CYTHON_VECTORCALL
#if CYTHON_COMPILING_IN_LIMITED_API
#define CYTHON_VECTORCALL  (__PYX_LIMITED_VERSION_HEX >= 0x030C0000)
#else
#define CYTHON_VECTORCALL  (CYTHON_FAST_PYCCALL)
#endif
#endif
#if CYTHON_USE_PYLONG_INTERNALS
  #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 && !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
#  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)
#include <stdint.h>
typedef uintptr_t  __pyx_uintptr_t;
#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
#ifndef Py_UNREACHABLE
  #define Py_UNREACHABLE()  assert(0); abort()
#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 < 0x030A0000)
#else
  #define __PYX_NEED_TP_PRINT_SLOT  (PY_VERSION_HEX < 0x03090000)
#endif
#define __PYX_REINTERPRET_FUNCION(func_pointer, other_pointer) ((func_pointer)(void(*)(void))(other_pointer))

/* CInitCode */
#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

/* PythonCompatibility */
#define __PYX_BUILD_PY_SSIZE_T "n"
#define CYTHON_FORMAT_SSIZE_T "z"
#define __Pyx_BUILTIN_MODULE_NAME "builtins"
#define __Pyx_DefaultClassType PyType_Type
#if CYTHON_COMPILING_IN_LIMITED_API
    #ifndef CO_OPTIMIZED
    static int CO_OPTIMIZED;
    #endif
    #ifndef CO_NEWLOCALS
    static int CO_NEWLOCALS;
    #endif
    #ifndef CO_VARARGS
    static int CO_VARARGS;
    #endif
    #ifndef CO_VARKEYWORDS
    static int CO_VARKEYWORDS;
    #endif
    #ifndef CO_ASYNC_GENERATOR
    static int CO_ASYNC_GENERATOR;
    #endif
    #ifndef CO_GENERATOR
    static int CO_GENERATOR;
    #endif
    #ifndef CO_COROUTINE
    static int CO_COROUTINE;
    #endif
#else
    #ifndef CO_COROUTINE
      #define CO_COROUTINE 0x80
    #endif
    #ifndef CO_ASYNC_GENERATOR
      #define CO_ASYNC_GENERATOR 0x200
    #endif
#endif
static int __Pyx_init_co_variables(void);
#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 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 Py_TPFLAGS_IMMUTABLETYPE
  #define Py_TPFLAGS_IMMUTABLETYPE (1UL << 8)
#endif
#ifndef Py_TPFLAGS_DISALLOW_INSTANTIATION
  #define Py_TPFLAGS_DISALLOW_INSTANTIATION (1UL << 7)
#endif
#ifndef METH_STACKLESS
  #define METH_STACKLESS 0
#endif
#ifndef 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))
#else
  #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET  0
  #define __Pyx_PyVectorcall_NARGS(n)  ((Py_ssize_t)(n))
#endif
#if PY_VERSION_HEX >= 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)(void)) {
#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 PY_VERSION_HEX < 0x03090000 || (CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000)
  #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_PyFrame_SetLineNumber(frame, lineno)
#elif CYTHON_COMPILING_IN_GRAAL && defined(GRAALPY_VERSION_NUM) && GRAALPY_VERSION_NUM > 0x19000000
  #define __Pyx_PyCode_HasFreeVars(co)  (PyCode_GetNumFree(co) > 0)
  #define __Pyx_PyFrame_SetLineNumber(frame, lineno) GraalPyFrame_SetLineNumber((frame), (lineno))
#elif CYTHON_COMPILING_IN_GRAAL
  #define __Pyx_PyCode_HasFreeVars(co)  (PyCode_GetNumFree(co) > 0)
  #define __Pyx_PyFrame_SetLineNumber(frame, lineno) _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()
#else
  #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet()
#endif
#if CYTHON_USE_MODULE_STATE
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;
}
#define __Pyx_PyModule_GetState(o) (__pyx_mstatetype *)__Pyx__PyModule_GetState(o)
#else
#define __Pyx_PyModule_GetState(op) ((void)op,__pyx_mstate_global)
#endif
#define __Pyx_PyObject_GetSlot(obj, name, func_ctype)  __Pyx_PyType_GetSlot(Py_TYPE((PyObject *) obj), name, func_ctype)
#define __Pyx_PyObject_TryGetSlot(obj, name, func_ctype) __Pyx_PyType_TryGetSlot(Py_TYPE(obj), name, func_ctype)
#define __Pyx_PyObject_GetSubSlot(obj, sub, name, func_ctype) __Pyx_PyType_GetSubSlot(Py_TYPE(obj), sub, name, func_ctype)
#define __Pyx_PyObject_TryGetSubSlot(obj, sub, name, func_ctype) __Pyx_PyType_TryGetSubSlot(Py_TYPE(obj), sub, name, func_ctype)
#if CYTHON_USE_TYPE_SLOTS
  #define __Pyx_PyType_GetSlot(type, name, func_ctype)  ((type)->name)
  #define __Pyx_PyType_TryGetSlot(type, name, func_ctype) __Pyx_PyType_GetSlot(type, name, func_ctype)
  #define __Pyx_PyType_GetSubSlot(type, sub, name, func_ctype) (((type)->sub) ? ((type)->sub->name) : NULL)
  #define __Pyx_PyType_TryGetSubSlot(type, sub, name, func_ctype) __Pyx_PyType_GetSubSlot(type, sub, name, func_ctype)
#else
  #define __Pyx_PyType_GetSlot(type, name, func_ctype)  ((func_ctype) PyType_GetSlot((type), Py_##name))
  #define __Pyx_PyType_TryGetSlot(type, name, func_ctype)\
    ((__PYX_LIMITED_VERSION_HEX >= 0x030A0000 ||\
     (PyType_GetFlags(type) & Py_TPFLAGS_HEAPTYPE) || __Pyx_get_runtime_version() >= 0x030A0000) ?\
     __Pyx_PyType_GetSlot(type, name, func_ctype) : NULL)
  #define __Pyx_PyType_GetSubSlot(obj, sub, name, func_ctype) __Pyx_PyType_GetSlot(obj, name, func_ctype)
  #define __Pyx_PyType_TryGetSubSlot(obj, sub, name, func_ctype) __Pyx_PyType_TryGetSlot(obj, name, func_ctype)
#endif
#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized)
#define __Pyx_PyDict_NewPresized(n)  ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n))
#else
#define __Pyx_PyDict_NewPresized(n)  PyDict_New()
#endif
#define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
#define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
#if CYTHON_COMPILING_IN_CPYTHON && 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 !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)
#else
  #define __Pyx_PyType_GetFlags(tp)   (PyType_GetFlags((PyTypeObject *)tp))
  #define __Pyx_PyType_HasFeature(type, feature)  PyType_HasFeature(type, feature)
#endif
#define __Pyx_PyObject_GetIterNextFunc(iterator)  __Pyx_PyObject_GetSlot(iterator, tp_iternext, iternextfunc)
#if CYTHON_USE_TYPE_SPECS
#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 __Pyx_PyUnicode_READY(op)       (0)
  #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))
#else
  #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_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
#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)
    #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_PyUnicode_FormatSafe(a, b)  ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  #define __Pyx_PySequence_ListKeepNew(obj)\
    (likely(PyList_CheckExact(obj) && PyUnstable_Object_IsUniquelyReferenced(obj)) ? __Pyx_NewRef(obj) : PySequence_List(obj))
#elif 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
enum __Pyx_ReferenceSharing {
  __Pyx_ReferenceSharing_DefinitelyUnique, // We created it so we know it's unshared - no need to check
  __Pyx_ReferenceSharing_OwnStrongReference,
  __Pyx_ReferenceSharing_FunctionArgument,
  __Pyx_ReferenceSharing_SharedReference, // Never trust it to be unshared because it's a global or similar
};
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && PY_VERSION_HEX >= 0x030E0000
#define __Pyx_IS_UNIQUELY_REFERENCED(o, sharing)\
    (sharing == __Pyx_ReferenceSharing_DefinitelyUnique ? 1 :\
      (sharing == __Pyx_ReferenceSharing_FunctionArgument ? PyUnstable_Object_IsUniqueReferencedTemporary(o) :\
      (sharing == __Pyx_ReferenceSharing_OwnStrongReference ? PyUnstable_Object_IsUniquelyReferenced(o) : 0)))
#elif (CYTHON_COMPILING_IN_CPYTHON && !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING) || CYTHON_COMPILING_IN_LIMITED_API
#define __Pyx_IS_UNIQUELY_REFERENCED(o, sharing) (((void)sharing), Py_REFCNT(o) == 1)
#else
#define __Pyx_IS_UNIQUELY_REFERENCED(o, sharing) (((void)o), ((void)sharing), 0)
#endif
#if CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS
  #if __PYX_LIMITED_VERSION_HEX >= 0x030d0000
    #define __Pyx_PyList_GetItemRef(o, i) PyList_GetItemRef(o, i)
  #elif CYTHON_COMPILING_IN_LIMITED_API || !CYTHON_ASSUME_SAFE_MACROS
    #define __Pyx_PyList_GetItemRef(o, i) (likely((i) >= 0) ? PySequence_GetItem(o, i) : (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL))
  #else
    #define __Pyx_PyList_GetItemRef(o, i) PySequence_ITEM(o, i)
  #endif
#elif CYTHON_COMPILING_IN_LIMITED_API || !CYTHON_ASSUME_SAFE_MACROS
  #if __PYX_LIMITED_VERSION_HEX >= 0x030d0000
    #define __Pyx_PyList_GetItemRef(o, i) PyList_GetItemRef(o, i)
  #else
    #define __Pyx_PyList_GetItemRef(o, i) __Pyx_XNewRef(PyList_GetItem(o, i))
  #endif
#else
  #define __Pyx_PyList_GetItemRef(o, i) __Pyx_NewRef(PyList_GET_ITEM(o, i))
#endif
#if CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS && !CYTHON_COMPILING_IN_LIMITED_API && CYTHON_ASSUME_SAFE_MACROS
  #define __Pyx_PyList_GetItemRefFast(o, i, unsafe_shared) (__Pyx_IS_UNIQUELY_REFERENCED(o, unsafe_shared) ?\
    __Pyx_NewRef(PyList_GET_ITEM(o, i)) : __Pyx_PyList_GetItemRef(o, i))
#else
  #define __Pyx_PyList_GetItemRefFast(o, i, unsafe_shared) __Pyx_PyList_GetItemRef(o, i)
#endif
#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000
#define __Pyx_PyDict_GetItemRef(dict, key, result) PyDict_GetItemRef(dict, key, result)
#elif CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS
static CYTHON_INLINE int __Pyx_PyDict_GetItemRef(PyObject *dict, PyObject *key, PyObject **result) {
  *result = PyObject_GetItem(dict, key);
  if (*result == NULL) {
    if (PyErr_ExceptionMatches(PyExc_KeyError)) {
      PyErr_Clear();
      return 0;
    }
    return -1;
  }
  return 1;
}
#else
static CYTHON_INLINE int __Pyx_PyDict_GetItemRef(PyObject *dict, PyObject *key, PyObject **result) {
  *result = PyDict_GetItemWithError(dict, key);
  if (*result == NULL) {
    return PyErr_Occurred() ? -1 : 0;
  }
  Py_INCREF(*result);
  return 1;
}
#endif
#if defined(CYTHON_DEBUG_VISIT_CONST) && CYTHON_DEBUG_VISIT_CONST
  #define __Pyx_VISIT_CONST(obj)  Py_VISIT(obj)
#else
  #define __Pyx_VISIT_CONST(obj)
#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_PyTuple_GET_ITEM(o, i) PyTuple_GET_ITEM(o, i)
  #define __Pyx_PyList_SET_ITEM(o, i, v) (PyList_SET_ITEM(o, i, v), (0))
  #define __Pyx_PyList_GET_ITEM(o, i) PyList_GET_ITEM(o, i)
#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_PyTuple_GET_ITEM(o, i) PyTuple_GetItem(o, i)
  #define __Pyx_PyList_SET_ITEM(o, i, v) PyList_SetItem(o, i, v)
  #define __Pyx_PyList_GET_ITEM(o, i) PyList_GetItem(o, i)
#endif
#if CYTHON_ASSUME_SAFE_SIZE
  #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)
  #define __Pyx_PyUnicode_GET_LENGTH(o) PyUnicode_GET_LENGTH(o)
#else
  #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)
  #define __Pyx_PyUnicode_GET_LENGTH(o) PyUnicode_GetLength(o)
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_InternFromString)
  #define PyUnicode_InternFromString(s) PyUnicode_FromString(s)
#endif
#define __Pyx_PyLong_FromHash_t PyLong_FromSsize_t
#define __Pyx_PyLong_AsHash_t   __Pyx_PyIndex_AsSsize_t
#if __PYX_LIMITED_VERSION_HEX >= 0x030A0000
    #define __Pyx_PySendResult PySendResult
#else
    typedef enum {
        PYGEN_RETURN = 0,
        PYGEN_ERROR = -1,
        PYGEN_NEXT = 1,
    } __Pyx_PySendResult;
#endif
#if CYTHON_COMPILING_IN_LIMITED_API || PY_VERSION_HEX < 0x030A00A3
  typedef __Pyx_PySendResult (*__Pyx_pyiter_sendfunc)(PyObject *iter, PyObject *value, PyObject **result);
#else
  #define __Pyx_pyiter_sendfunc sendfunc
#endif
#if !CYTHON_USE_AM_SEND
#define __PYX_HAS_PY_AM_SEND 0
#elif __PYX_LIMITED_VERSION_HEX >= 0x030A0000
#define __PYX_HAS_PY_AM_SEND 1
#else
#define __PYX_HAS_PY_AM_SEND 2  // our own backported implementation
#endif
#if __PYX_HAS_PY_AM_SEND < 2
    #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
#else
    typedef struct {
        unaryfunc am_await;
        unaryfunc am_aiter;
        unaryfunc am_anext;
        __Pyx_pyiter_sendfunc am_send;
    } __Pyx_PyAsyncMethodsStruct;
    #define __Pyx_SlotTpAsAsync(s) ((PyAsyncMethods*)(s))
#endif
#if CYTHON_USE_AM_SEND && PY_VERSION_HEX < 0x030A00F0
    #define __Pyx_TPFLAGS_HAVE_AM_SEND (1UL << 21)
#else
    #define __Pyx_TPFLAGS_HAVE_AM_SEND (0)
#endif
#if PY_VERSION_HEX >= 0x03090000
#define __Pyx_PyInterpreterState_Get() PyInterpreterState_Get()
#else
#define __Pyx_PyInterpreterState_Get() PyThreadState_Get()->interp
#endif
#if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030A0000
#ifdef __cplusplus
extern "C"
#endif
PyAPI_FUNC(void *) PyMem_Calloc(size_t nelem, size_t elsize);
#endif
#if CYTHON_COMPILING_IN_LIMITED_API
static int __Pyx_init_co_variable(PyObject *inspect, const char* name, int *write_to) {
    int value;
    PyObject *py_value = PyObject_GetAttrString(inspect, name);
    if (!py_value) return 0;
    value = (int) PyLong_AsLong(py_value);
    Py_DECREF(py_value);
    *write_to = value;
    return value != -1 || !PyErr_Occurred();
}
static int __Pyx_init_co_variables(void) {
    PyObject *inspect;
    int result;
    inspect = PyImport_ImportModule("inspect");
    result =
#if !defined(CO_OPTIMIZED)
        __Pyx_init_co_variable(inspect, "CO_OPTIMIZED", &CO_OPTIMIZED) &&
#endif
#if !defined(CO_NEWLOCALS)
        __Pyx_init_co_variable(inspect, "CO_NEWLOCALS", &CO_NEWLOCALS) &&
#endif
#if !defined(CO_VARARGS)
        __Pyx_init_co_variable(inspect, "CO_VARARGS", &CO_VARARGS) &&
#endif
#if !defined(CO_VARKEYWORDS)
        __Pyx_init_co_variable(inspect, "CO_VARKEYWORDS", &CO_VARKEYWORDS) &&
#endif
#if !defined(CO_ASYNC_GENERATOR)
        __Pyx_init_co_variable(inspect, "CO_ASYNC_GENERATOR", &CO_ASYNC_GENERATOR) &&
#endif
#if !defined(CO_GENERATOR)
        __Pyx_init_co_variable(inspect, "CO_GENERATOR", &CO_GENERATOR) &&
#endif
#if !defined(CO_COROUTINE)
        __Pyx_init_co_variable(inspect, "CO_COROUTINE", &CO_COROUTINE) &&
#endif
        1;
    Py_DECREF(inspect);
    return result ? 0 : -1;
}
#else
static int __Pyx_init_co_variables(void) {
    return 0;  // It's a limited API-only feature
}
#endif

/* MathInitCode */
#if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS)
  #ifndef _USE_MATH_DEFINES
    #define _USE_MATH_DEFINES
  #endif
#endif
#include <math.h>
#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL)
#define __Pyx_truncl trunc
#else
#define __Pyx_truncl truncl
#endif

#ifndef CYTHON_CLINE_IN_TRACEBACK_RUNTIME
#define CYTHON_CLINE_IN_TRACEBACK_RUNTIME 0
#endif
#ifndef CYTHON_CLINE_IN_TRACEBACK
#define CYTHON_CLINE_IN_TRACEBACK CYTHON_CLINE_IN_TRACEBACK_RUNTIME
#endif
#if CYTHON_CLINE_IN_TRACEBACK
#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; }
#else
#define __PYX_MARK_ERR_POS(f_index, lineno)  { __pyx_filename = __pyx_f[f_index]; (void) __pyx_filename; __pyx_lineno = lineno; (void) __pyx_lineno; (void) __pyx_clineno; }
#endif
#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.h"
    #include "pyapicompat.h"
    #include "pympivendor.h"
    #include "pympicommctx.h"
    

    #if (MPI_VERSION < 3) && !defined(PyMPI_HAVE_MPI_Message)
    #if !defined(MPI_Message) && !defined(MPI_MESSAGE_NULL)
    typedef void *PyMPI_MPI_Message;
    #define MPI_Message PyMPI_MPI_Message
    #endif
    #endif

    #if (MPI_VERSION < 4) && !defined(PyMPI_HAVE_MPI_Session)
    #if !defined(MPI_Session) && !defined(MPI_SESSION_NULL)
    typedef void *PyMPI_MPI_Session;
    #define MPI_Session PyMPI_MPI_Session
    #endif
    #endif
    

    #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

#ifdef CYTHON_FREETHREADING_COMPATIBLE
#if CYTHON_FREETHREADING_COMPATIBLE
#define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_NOT_USED
#else
#define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED
#endif
#else
#define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_NOT_USED
#endif
#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
#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 CYTHON_ASSUME_SAFE_MACROS
    #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_PyByteArray_AsString(s) PyByteArray_AS_STRING(s)
#else
    #define __Pyx_PyBytes_AsWritableString(s)     ((char*) PyBytes_AsString(s))
    #define __Pyx_PyBytes_AsWritableSString(s)    ((signed char*) PyBytes_AsString(s))
    #define __Pyx_PyBytes_AsWritableUString(s)    ((unsigned char*) PyBytes_AsString(s))
    #define __Pyx_PyBytes_AsString(s)     ((const char*) PyBytes_AsString(s))
    #define __Pyx_PyBytes_AsSString(s)    ((const signed char*) PyBytes_AsString(s))
    #define __Pyx_PyBytes_AsUString(s)    ((const unsigned char*) PyBytes_AsString(s))
    #define __Pyx_PyByteArray_AsString(s) PyByteArray_AsString(s)
#endif
#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_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)
#define __Pyx_PyUnicode_FromOrdinal(o)       PyUnicode_FromOrdinal((int)o)
#define __Pyx_PyUnicode_AsUnicode            PyUnicode_AsUnicode
static CYTHON_INLINE PyObject *__Pyx_NewRef(PyObject *obj) {
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030a0000 || defined(Py_NewRef)
    return Py_NewRef(obj);
#else
    Py_INCREF(obj);
    return obj;
#endif
}
static CYTHON_INLINE PyObject *__Pyx_XNewRef(PyObject *obj) {
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030a0000 || defined(Py_XNewRef)
    return Py_XNewRef(obj);
#else
    Py_XINCREF(obj);
    return obj;
#endif
}
static CYTHON_INLINE PyObject *__Pyx_Owned_Py_None(int b);
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_Long(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_PyLong_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))
#define __Pyx_PyFloat_AS_DOUBLE(x) PyFloat_AS_DOUBLE(x)
#else
#define __Pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
#define __Pyx_PyFloat_AS_DOUBLE(x) PyFloat_AsDouble(x)
#endif
#define __Pyx_PyFloat_AsFloat(x) ((float) __Pyx_PyFloat_AsDouble(x))
#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x))
#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 __PYX_DEFAULT_STRING_ENCODING_IS_UTF8
  #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
#elif __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
  #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeASCII(c_str, size, NULL)
#else
  #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)
#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__ */
/* PretendToInitialize */
#ifdef __cplusplus
#if __cplusplus > 201103L
#include <type_traits>
#endif
template <typename T>
static void __Pyx_pretend_to_initialize(T* ptr) {
#if __cplusplus > 201103L
    if ((std::is_trivially_default_constructible<T>::value))
#endif
        *ptr = T();
    (void)ptr;
}
#else
static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }
#endif


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

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

static const char* const __pyx_f[] = {
  "src/mpi4py/MPI.pyx",
  "src/mpi4py/MPI.src/asbuffer.pxi",
  "src/mpi4py/MPI.src/Exception.pyx",
  "src/mpi4py/MPI.src/constant.pxi",
  "src/mpi4py/MPI.src/atimport.pxi",
  "src/mpi4py/MPI.src/allocate.pxi",
  "src/mpi4py/MPI.src/asstring.pxi",
  "src/mpi4py/MPI.src/asfspath.pxi",
  "src/mpi4py/MPI.src/asdlpack.pxi",
  "src/mpi4py/MPI.src/ascaibuf.pxi",
  "src/mpi4py/MPI.src/asarray.pxi",
  "src/mpi4py/MPI.src/objmodel.pxi",
  "src/mpi4py/MPI.src/attrimpl.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/msgpickle.pxi",
  "src/mpi4py/MPI.src/CAPI.pxi",
  "src/mpi4py/MPI.src/ErrorCode.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",
};
/* #### 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()

/* Atomics.proto (used by UnpackUnboundCMethod) */
#include <pythread.h>
#ifndef CYTHON_ATOMICS
    #define CYTHON_ATOMICS 1
#endif
#define __PYX_CYTHON_ATOMICS_ENABLED() CYTHON_ATOMICS
#define __PYX_GET_CYTHON_COMPILING_IN_CPYTHON_FREETHREADING() CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
#define __pyx_atomic_int_type int
#define __pyx_nonatomic_int_type int
#if CYTHON_ATOMICS && (defined(__STDC_VERSION__) &&\
                        (__STDC_VERSION__ >= 201112L) &&\
                        !defined(__STDC_NO_ATOMICS__))
    #include <stdatomic.h>
#elif CYTHON_ATOMICS && (defined(__cplusplus) && (\
                    (__cplusplus >= 201103L) ||\
                    (defined(_MSC_VER) && _MSC_VER >= 1700)))
    #include <atomic>
#endif
#if CYTHON_ATOMICS && (defined(__STDC_VERSION__) &&\
                        (__STDC_VERSION__ >= 201112L) &&\
                        !defined(__STDC_NO_ATOMICS__) &&\
                       ATOMIC_INT_LOCK_FREE == 2)
    #undef __pyx_atomic_int_type
    #define __pyx_atomic_int_type atomic_int
    #define __pyx_atomic_ptr_type atomic_uintptr_t
    #define __pyx_nonatomic_ptr_type uintptr_t
    #define __pyx_atomic_incr_relaxed(value) atomic_fetch_add_explicit(value, 1, memory_order_relaxed)
    #define __pyx_atomic_incr_acq_rel(value) atomic_fetch_add_explicit(value, 1, memory_order_acq_rel)
    #define __pyx_atomic_decr_acq_rel(value) atomic_fetch_sub_explicit(value, 1, memory_order_acq_rel)
    #define __pyx_atomic_sub(value, arg) atomic_fetch_sub(value, arg)
    #define __pyx_atomic_int_cmp_exchange(value, expected, desired) atomic_compare_exchange_strong(value, expected, desired)
    #define __pyx_atomic_load(value) atomic_load(value)
    #define __pyx_atomic_store(value, new_value) atomic_store(value, new_value)
    #define __pyx_atomic_pointer_load_relaxed(value) atomic_load_explicit(value, memory_order_relaxed)
    #define __pyx_atomic_pointer_load_acquire(value) atomic_load_explicit(value, memory_order_acquire)
    #define __pyx_atomic_pointer_exchange(value, new_value) atomic_exchange(value, (__pyx_nonatomic_ptr_type)new_value)
    #define __pyx_atomic_pointer_cmp_exchange(value, expected, desired) atomic_compare_exchange_strong(value, expected, desired)
    #if defined(__PYX_DEBUG_ATOMICS) && defined(_MSC_VER)
        #pragma message ("Using standard C atomics")
    #elif defined(__PYX_DEBUG_ATOMICS)
        #warning "Using standard C atomics"
    #endif
#elif CYTHON_ATOMICS && (defined(__cplusplus) && (\
                    (__cplusplus >= 201103L) ||\
\
                    (defined(_MSC_VER) && _MSC_VER >= 1700)) &&\
                    ATOMIC_INT_LOCK_FREE == 2)
    #undef __pyx_atomic_int_type
    #define __pyx_atomic_int_type std::atomic_int
    #define __pyx_atomic_ptr_type std::atomic_uintptr_t
    #define __pyx_nonatomic_ptr_type uintptr_t
    #define __pyx_atomic_incr_relaxed(value) std::atomic_fetch_add_explicit(value, 1, std::memory_order_relaxed)
    #define __pyx_atomic_incr_acq_rel(value) std::atomic_fetch_add_explicit(value, 1, std::memory_order_acq_rel)
    #define __pyx_atomic_decr_acq_rel(value) std::atomic_fetch_sub_explicit(value, 1, std::memory_order_acq_rel)
    #define __pyx_atomic_sub(value, arg) std::atomic_fetch_sub(value, arg)
    #define __pyx_atomic_int_cmp_exchange(value, expected, desired) std::atomic_compare_exchange_strong(value, expected, desired)
    #define __pyx_atomic_load(value) std::atomic_load(value)
    #define __pyx_atomic_store(value, new_value) std::atomic_store(value, new_value)
    #define __pyx_atomic_pointer_load_relaxed(value) std::atomic_load_explicit(value, std::memory_order_relaxed)
    #define __pyx_atomic_pointer_load_acquire(value) std::atomic_load_explicit(value, std::memory_order_acquire)
    #define __pyx_atomic_pointer_exchange(value, new_value) std::atomic_exchange(value, (__pyx_nonatomic_ptr_type)new_value)
    #define __pyx_atomic_pointer_cmp_exchange(value, expected, desired) std::atomic_compare_exchange_strong(value, expected, desired)
    #if defined(__PYX_DEBUG_ATOMICS) && defined(_MSC_VER)
        #pragma message ("Using standard C++ atomics")
    #elif defined(__PYX_DEBUG_ATOMICS)
        #warning "Using standard C++ atomics"
    #endif
#elif CYTHON_ATOMICS && (__GNUC__ >= 5 || (__GNUC__ == 4 &&\
                    (__GNUC_MINOR__ > 1 ||\
                    (__GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ >= 2))))
    #define __pyx_atomic_ptr_type void*
    #define __pyx_nonatomic_ptr_type void*
    #define __pyx_atomic_incr_relaxed(value) __sync_fetch_and_add(value, 1)
    #define __pyx_atomic_incr_acq_rel(value) __sync_fetch_and_add(value, 1)
    #define __pyx_atomic_decr_acq_rel(value) __sync_fetch_and_sub(value, 1)
    #define __pyx_atomic_sub(value, arg) __sync_fetch_and_sub(value, arg)
    static CYTHON_INLINE int __pyx_atomic_int_cmp_exchange(__pyx_atomic_int_type* value, __pyx_nonatomic_int_type* expected, __pyx_nonatomic_int_type desired) {
        __pyx_nonatomic_int_type old = __sync_val_compare_and_swap(value, *expected, desired);
        int result = old == *expected;
        *expected = old;
        return result;
    }
    #define __pyx_atomic_load(value) __sync_fetch_and_add(value, 0)
    #define __pyx_atomic_store(value, new_value) __sync_lock_test_and_set(value, new_value)
    #define __pyx_atomic_pointer_load_relaxed(value) __sync_fetch_and_add(value, 0)
    #define __pyx_atomic_pointer_load_acquire(value) __sync_fetch_and_add(value, 0)
    #define __pyx_atomic_pointer_exchange(value, new_value) __sync_lock_test_and_set(value, (__pyx_atomic_ptr_type)new_value)
    static CYTHON_INLINE int __pyx_atomic_pointer_cmp_exchange(__pyx_atomic_ptr_type* value, __pyx_nonatomic_ptr_type* expected, __pyx_nonatomic_ptr_type desired) {
        __pyx_nonatomic_ptr_type old = __sync_val_compare_and_swap(value, *expected, desired);
        int result = old == *expected;
        *expected = old;
        return result;
    }
    #ifdef __PYX_DEBUG_ATOMICS
        #warning "Using GNU atomics"
    #endif
#elif CYTHON_ATOMICS && defined(_MSC_VER)
    #include <intrin.h>
    #undef __pyx_atomic_int_type
    #define __pyx_atomic_int_type long
    #define __pyx_atomic_ptr_type void*
    #undef __pyx_nonatomic_int_type
    #define __pyx_nonatomic_int_type long
    #define __pyx_nonatomic_ptr_type void*
    #pragma intrinsic (_InterlockedExchangeAdd, _InterlockedExchange, _InterlockedCompareExchange, _InterlockedCompareExchangePointer, _InterlockedExchangePointer)
    #define __pyx_atomic_incr_relaxed(value) _InterlockedExchangeAdd(value, 1)
    #define __pyx_atomic_incr_acq_rel(value) _InterlockedExchangeAdd(value, 1)
    #define __pyx_atomic_decr_acq_rel(value) _InterlockedExchangeAdd(value, -1)
    #define __pyx_atomic_sub(value, arg) _InterlockedExchangeAdd(value, -arg)
    static CYTHON_INLINE int __pyx_atomic_int_cmp_exchange(__pyx_atomic_int_type* value, __pyx_nonatomic_int_type* expected, __pyx_nonatomic_int_type desired) {
        __pyx_nonatomic_int_type old = _InterlockedCompareExchange(value, desired, *expected);
        int result = old == *expected;
        *expected = old;
        return result;
    }
    #define __pyx_atomic_load(value) _InterlockedExchangeAdd(value, 0)
    #define __pyx_atomic_store(value, new_value) _InterlockedExchange(value, new_value)
    #define __pyx_atomic_pointer_load_relaxed(value) *(void * volatile *)value
    #define __pyx_atomic_pointer_load_acquire(value) _InterlockedCompareExchangePointer(value, 0, 0)
    #define __pyx_atomic_pointer_exchange(value, new_value) _InterlockedExchangePointer(value, (__pyx_atomic_ptr_type)new_value)
    static CYTHON_INLINE int __pyx_atomic_pointer_cmp_exchange(__pyx_atomic_ptr_type* value, __pyx_nonatomic_ptr_type* expected, __pyx_nonatomic_ptr_type desired) {
        __pyx_atomic_ptr_type old = _InterlockedCompareExchangePointer(value, desired, *expected);
        int result = old == *expected;
        *expected = old;
        return result;
    }
    #ifdef __PYX_DEBUG_ATOMICS
        #pragma message ("Using MSVC atomics")
    #endif
#else
    #undef CYTHON_ATOMICS
    #define CYTHON_ATOMICS 0
    #ifdef __PYX_DEBUG_ATOMICS
        #warning "Not using atomics"
    #endif
#endif

/* CriticalSectionsDefinition.proto (used by CriticalSections) */
#if !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
#define __Pyx_PyCriticalSection void*
#define __Pyx_PyCriticalSection2 void*
#define __Pyx_PyCriticalSection_End(cs)
#define __Pyx_PyCriticalSection2_End(cs)
#else
#define __Pyx_PyCriticalSection PyCriticalSection
#define __Pyx_PyCriticalSection2 PyCriticalSection2
#define __Pyx_PyCriticalSection_End PyCriticalSection_End
#define __Pyx_PyCriticalSection2_End PyCriticalSection2_End
#endif

/* CriticalSections.proto (used by ParseKeywordsImpl) */
#if !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
#define __Pyx_PyCriticalSection_Begin(cs, arg) (void)(cs)
#define __Pyx_PyCriticalSection2_Begin(cs, arg1, arg2) (void)(cs)
#else
#define __Pyx_PyCriticalSection_Begin PyCriticalSection_Begin
#define __Pyx_PyCriticalSection2_Begin PyCriticalSection2_Begin
#endif
#if PY_VERSION_HEX < 0x030d0000 || CYTHON_COMPILING_IN_LIMITED_API
#define __Pyx_BEGIN_CRITICAL_SECTION(o) {
#define __Pyx_END_CRITICAL_SECTION() }
#else
#define __Pyx_BEGIN_CRITICAL_SECTION Py_BEGIN_CRITICAL_SECTION
#define __Pyx_END_CRITICAL_SECTION Py_END_CRITICAL_SECTION
#endif

/* IncludeStructmemberH.proto (used by FixUpExtensionType) */
#include <structmember.h>

/* #### 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_BottomType;
struct __pyx_obj_6mpi4py_3MPI_InPlaceType;
struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType;
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__p_datarep;
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_defaults;
struct __pyx_defaults1;
struct __pyx_defaults2;
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;

/* "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":65
 *     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;
};

/* "mpi4py/MPI.pxd":44
 *     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":52
 *     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":60
 *     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":69
 *     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":75
 *     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":81
 *     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":90
 *     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":98
 *     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":106
 *     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":114
 *     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":122
 *     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":130
 *     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":138
 *     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":144
 *     pass
 * 
 * ctypedef api class Topocomm(Intracomm) [             # <<<<<<<<<<<<<<
 *     type   PyMPITopocomm_Type,
 *     object PyMPITopocommObject,
*/
struct PyMPITopocommObject {
  struct PyMPIIntracommObject __pyx_base;
};
typedef struct PyMPITopocommObject PyMPITopocommObject;


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


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


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


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


/* "mpi4py/MPI.pxd":174
 *     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":183
 *     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":17
 * 
 * 
 * @cython.final             # <<<<<<<<<<<<<<
 * @cython.internal
 * cdef class _PyMem:
*/
struct __pyx_obj_6mpi4py_3MPI__PyMem {
  PyObject_HEAD
  void *buf;
  Py_ssize_t len;
  void (*free)(void *);
};


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


/* "src/mpi4py/MPI.src/constant.pxi":4
 * 
 * 
 * @cython.final             # <<<<<<<<<<<<<<
 * cdef class BottomType:
 *     """
*/
struct __pyx_obj_6mpi4py_3MPI_BottomType {
  PyObject_HEAD
  struct __pyx_vtabstruct_6mpi4py_3MPI_BottomType *__pyx_vtab;
};


/* "src/mpi4py/MPI.src/constant.pxi":57
 * 
 * 
 * @cython.final             # <<<<<<<<<<<<<<
 * cdef class InPlaceType:
 *     """
*/
struct __pyx_obj_6mpi4py_3MPI_InPlaceType {
  PyObject_HEAD
  struct __pyx_vtabstruct_6mpi4py_3MPI_InPlaceType *__pyx_vtab;
};


/* "src/mpi4py/MPI.src/constant.pxi":107
 * 
 * 
 * @cython.final             # <<<<<<<<<<<<<<
 * cdef class BufferAutomaticType:
 *     """
*/
struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType {
  PyObject_HEAD
  struct __pyx_vtabstruct_6mpi4py_3MPI_BufferAutomaticType *__pyx_vtab;
};


/* "src/mpi4py/MPI.src/attrimpl.pxi":10
 * 
 * 
 * @cython.final             # <<<<<<<<<<<<<<
 * @cython.internal
 * cdef class _p_keyval:
*/
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":4
 * 
 * 
 * @cython.final             # <<<<<<<<<<<<<<
 * @cython.internal
 * cdef class _p_rs:
*/
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":138
 * 
 * 
 * @cython.final             # <<<<<<<<<<<<<<
 * @cython.internal
 * cdef class _p_greq:
*/
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/drepimpl.pxi":7
 * 
 * 
 * @cython.linetrace(False)  # ~> TODO             # <<<<<<<<<<<<<<
 * @cython.final
 * @cython.internal
*/
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":62
 * 
 * 
 * @cython.final             # <<<<<<<<<<<<<<
 * @cython.internal
 * cdef class _p_message:
*/
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":376
 * 
 * 
 * @cython.final             # <<<<<<<<<<<<<<
 * @cython.internal
 * cdef class _p_msg_p2p:
*/
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":436
 * 
 * 
 * @cython.final             # <<<<<<<<<<<<<<
 * @cython.internal
 * cdef class _p_msg_cco:
*/
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":837
 * 
 * 
 * @cython.final             # <<<<<<<<<<<<<<
 * @cython.internal
 * cdef class _p_msg_ccow:
*/
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":907
 * 
 * 
 * @cython.final             # <<<<<<<<<<<<<<
 * @cython.internal
 * cdef class _p_msg_rma:
*/
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":1073
 * 
 * 
 * @cython.final             # <<<<<<<<<<<<<<
 * @cython.internal
 * cdef class _p_msg_io:
*/
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":475
 * 
 * 
 * @cython.final             # <<<<<<<<<<<<<<
 * @cython.internal
 * cdef class _p_req_buf:
*/
struct __pyx_obj_6mpi4py_3MPI__p_req_buf {
  PyObject_HEAD
  struct __pyx_obj_6mpi4py_3MPI_buffer *buf;
};


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


/* "src/mpi4py/MPI.src/Exception.pyx":9
 *     """
 * 
 *     def __init__(self, int ierr: int = SUCCESS, /) -> None:             # <<<<<<<<<<<<<<
 *         """Initialize self."""
 *         if ierr < MPI_SUCCESS: ierr = MPI_ERR_UNKNOWN
*/
struct __pyx_defaults {
  PyObject_HEAD
  int arg0;
};


/* "src/mpi4py/MPI.src/Comm.pyx":3485
 * # ---------------
 * 
 * def Open_port(Info info: Info = INFO_NULL) -> str:             # <<<<<<<<<<<<<<
 *     """
 *     Return an address used to connect group of processes.
*/
struct __pyx_defaults1 {
  PyObject_HEAD
  struct PyMPIInfoObject *arg0;
};


/* "src/mpi4py/MPI.src/Comm.pyx":3540
 * 
 * 
 * def Lookup_name(             # <<<<<<<<<<<<<<
 *     service_name: str,
 *     info: Info = INFO_NULL,
*/
struct __pyx_defaults2 {
  PyObject_HEAD
  PyObject *arg0;
};


/* "src/mpi4py/MPI.src/msgpickle.pxi":129
 * # -----------------------------------------------------------------------------
 * 
 * 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/constant.pxi":4
 * 
 * 
 * @cython.final             # <<<<<<<<<<<<<<
 * cdef class BottomType:
 *     """
*/

struct __pyx_vtabstruct_6mpi4py_3MPI_BottomType {
  PyObject *(*as_str)(struct __pyx_obj_6mpi4py_3MPI_BottomType *);
  void *(*as_buf)(struct __pyx_obj_6mpi4py_3MPI_BottomType *);
  MPI_Aint (*as_int)(struct __pyx_obj_6mpi4py_3MPI_BottomType *);
};
static struct __pyx_vtabstruct_6mpi4py_3MPI_BottomType *__pyx_vtabptr_6mpi4py_3MPI_BottomType;
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_10BottomType_as_str(struct __pyx_obj_6mpi4py_3MPI_BottomType *);
static CYTHON_INLINE void *__pyx_f_6mpi4py_3MPI_10BottomType_as_buf(struct __pyx_obj_6mpi4py_3MPI_BottomType *);
static CYTHON_INLINE MPI_Aint __pyx_f_6mpi4py_3MPI_10BottomType_as_int(struct __pyx_obj_6mpi4py_3MPI_BottomType *);


/* "src/mpi4py/MPI.src/constant.pxi":57
 * 
 * 
 * @cython.final             # <<<<<<<<<<<<<<
 * cdef class InPlaceType:
 *     """
*/

struct __pyx_vtabstruct_6mpi4py_3MPI_InPlaceType {
  PyObject *(*as_str)(struct __pyx_obj_6mpi4py_3MPI_InPlaceType *);
  void *(*as_buf)(struct __pyx_obj_6mpi4py_3MPI_InPlaceType *);
  MPI_Aint (*as_int)(struct __pyx_obj_6mpi4py_3MPI_InPlaceType *);
};
static struct __pyx_vtabstruct_6mpi4py_3MPI_InPlaceType *__pyx_vtabptr_6mpi4py_3MPI_InPlaceType;
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_11InPlaceType_as_str(struct __pyx_obj_6mpi4py_3MPI_InPlaceType *);
static CYTHON_INLINE void *__pyx_f_6mpi4py_3MPI_11InPlaceType_as_buf(struct __pyx_obj_6mpi4py_3MPI_InPlaceType *);
static CYTHON_INLINE MPI_Aint __pyx_f_6mpi4py_3MPI_11InPlaceType_as_int(struct __pyx_obj_6mpi4py_3MPI_InPlaceType *);


/* "src/mpi4py/MPI.src/constant.pxi":107
 * 
 * 
 * @cython.final             # <<<<<<<<<<<<<<
 * cdef class BufferAutomaticType:
 *     """
*/

struct __pyx_vtabstruct_6mpi4py_3MPI_BufferAutomaticType {
  PyObject *(*as_str)(struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *);
  void *(*as_buf)(struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *);
  MPI_Aint (*as_int)(struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *);
};
static struct __pyx_vtabstruct_6mpi4py_3MPI_BufferAutomaticType *__pyx_vtabptr_6mpi4py_3MPI_BufferAutomaticType;
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_19BufferAutomaticType_as_str(struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *);
static CYTHON_INLINE void *__pyx_f_6mpi4py_3MPI_19BufferAutomaticType_as_buf(struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *);
static CYTHON_INLINE MPI_Aint __pyx_f_6mpi4py_3MPI_19BufferAutomaticType_as_int(struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *);


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

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":138
 * 
 * 
 * @cython.final             # <<<<<<<<<<<<<<
 * @cython.internal
 * cdef class _p_greq:
*/

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":7
 * 
 * 
 * @cython.linetrace(False)  # ~> TODO             # <<<<<<<<<<<<<<
 * @cython.final
 * @cython.internal
*/

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":376
 * 
 * 
 * @cython.final             # <<<<<<<<<<<<<<
 * @cython.internal
 * cdef class _p_msg_p2p:
*/

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":436
 * 
 * 
 * @cython.final             # <<<<<<<<<<<<<<
 * @cython.internal
 * cdef class _p_msg_cco:
*/

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":837
 * 
 * 
 * @cython.final             # <<<<<<<<<<<<<<
 * @cython.internal
 * cdef class _p_msg_ccow:
*/

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":907
 * 
 * 
 * @cython.final             # <<<<<<<<<<<<<<
 * @cython.internal
 * cdef class _p_msg_rma:
*/

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":1073
 * 
 * 
 * @cython.final             # <<<<<<<<<<<<<<
 * @cython.internal
 * cdef class _p_msg_io:
*/

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;
  #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);\
          }
  #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 (used by PyObjectGetAttrStrNoError) */
#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 (used by PyErrFetchRestore) */
#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 (used by PyObjectGetAttrStrNoError) */
#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 (used by PyObjectGetAttrStrNoError) */
#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 (used by GetBuiltinName) */
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name);

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

/* PyObjectCall.proto (used by PyObjectFastCall) */
#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 (used by PyObjectFastCall) */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
#endif

/* PyObjectFastCall.proto (used by PyObjectFastCallMethod) */
#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 * const*args, size_t nargs, PyObject *kwargs);

/* PyObjectFastCallMethod.proto */
#if CYTHON_VECTORCALL && PY_VERSION_HEX >= 0x03090000
#define __Pyx_PyObject_FastCallMethod(name, args, nargsf) PyObject_VectorcallMethod(name, args, nargsf, NULL)
#else
static PyObject *__Pyx_PyObject_FastCallMethod(PyObject *name, PyObject *const *args, size_t nargsf);
#endif

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

/* GetTopmostException.proto (used by SaveResetException) */
#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

/* PyRuntimeWarning_Check.proto */
#define __Pyx_PyExc_RuntimeWarning_Check(obj)  __Pyx_TypeCheck(obj, PyExc_RuntimeWarning)

/* HasAttr.proto (used by ImportImpl) */
#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000
#define __Pyx_HasAttr(o, n)  PyObject_HasAttrWithError(o, n)
#else
static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *);
#endif

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

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

/* IncludeStringH.proto (used by ImportImpl) */
#include <string.h>

/* ImportImpl.export */
static PyObject *__Pyx__Import(PyObject *name, PyObject *const *imported_names, Py_ssize_t len_imported_names, PyObject *qualname, PyObject *moddict, int level);

/* Import.proto */
static CYTHON_INLINE PyObject *__Pyx_Import(PyObject *name, PyObject *const *imported_names, Py_ssize_t len_imported_names, PyObject *qualname, int level);

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

/* PyImportError_Check.proto */
#define __Pyx_PyExc_ImportError_Check(obj)  __Pyx_TypeCheck(obj, PyExc_ImportError)

/* PyImportWarning_Check.proto */
#define __Pyx_PyExc_ImportWarning_Check(obj)  __Pyx_TypeCheck(obj, PyExc_ImportWarning)

/* 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)
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2) {
    return 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)
#ifdef PyExceptionInstance_Check
  #define __Pyx_PyBaseException_Check(obj) PyExceptionInstance_Check(obj)
#else
  #define __Pyx_PyBaseException_Check(obj) __Pyx_TypeCheck(obj, PyExc_BaseException)
#endif

/* BytesEquals.proto (used by UnicodeEquals) */
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);

/* PyRuntimeError_Check.proto */
#define __Pyx_PyExc_RuntimeError_Check(obj)  __Pyx_TypeCheck(obj, PyExc_RuntimeError)

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

/* COrdinalToPyUnicode.proto (used by CIntToPyUnicode) */
static CYTHON_INLINE int __Pyx_CheckUnicodeValue(int value);
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromOrdinal_Padded(int value, Py_ssize_t width, char padding_char);

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

/* IncludeStdlibH.proto (used by CIntToPyUnicode) */
#include <stdlib.h>

/* CIntToPyUnicode.proto */
#define __Pyx_PyUnicode_From_int(value, width, padding_char, format_char) (\
    ((format_char) == ('c')) ?\
        __Pyx_uchar___Pyx_PyUnicode_From_int(value, width, padding_char) :\
        __Pyx____Pyx_PyUnicode_From_int(value, width, padding_char, format_char)\
    )
static CYTHON_INLINE PyObject* __Pyx_uchar___Pyx_PyUnicode_From_int(int value, Py_ssize_t width, char padding_char);
static CYTHON_INLINE PyObject* __Pyx____Pyx_PyUnicode_From_int(int value, Py_ssize_t width, char padding_char, char format_char);

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

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

/* fastcall.proto */
#if CYTHON_AVOID_BORROWED_REFS
    #define __Pyx_ArgRef_VARARGS(args, i) __Pyx_PySequence_ITEM(args, i)
#elif CYTHON_ASSUME_SAFE_MACROS
    #define __Pyx_ArgRef_VARARGS(args, i) __Pyx_NewRef(__Pyx_PyTuple_GET_ITEM(args, i))
#else
    #define __Pyx_ArgRef_VARARGS(args, i) __Pyx_XNewRef(PyTuple_GetItem(args, i))
#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_ArgRef_FASTCALL(args, i) __Pyx_NewRef(args[i])
    #define __Pyx_NumKwargs_FASTCALL(kwds) __Pyx_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_COMPILING_IN_LIMITED_API
    CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues);
  #else
    #define __Pyx_KwargsAsDict_FASTCALL(kw, kwvalues) _PyStack_AsDict(kwvalues, kw)
  #endif
#else
    #define __Pyx_ArgRef_FASTCALL __Pyx_ArgRef_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
#endif
#define __Pyx_ArgsSlice_VARARGS(args, start, stop) PyTuple_GetSlice(args, start, stop)
#if CYTHON_METH_FASTCALL || (CYTHON_COMPILING_IN_CPYTHON && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS)
#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) __Pyx_PyTuple_FromArray(args + start, stop - start)
#else
#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) PyTuple_GetSlice(args, start, stop)
#endif

/* py_dict_items.proto (used by OwnedDictNext) */
static CYTHON_INLINE PyObject* __Pyx_PyDict_Items(PyObject* d);

/* CallCFunction.proto (used by CallUnboundCMethod0) */
#define __Pyx_CallCFunction(cfunc, self, args)\
    ((PyCFunction)(void(*)(void))(cfunc)->func)(self, args)
#define __Pyx_CallCFunctionWithKeywords(cfunc, self, args, kwargs)\
    ((PyCFunctionWithKeywords)(void(*)(void))(cfunc)->func)(self, args, kwargs)
#define __Pyx_CallCFunctionFast(cfunc, self, args, nargs)\
    ((__Pyx_PyCFunctionFast)(void(*)(void))(PyCFunction)(cfunc)->func)(self, args, nargs)
#define __Pyx_CallCFunctionFastWithKeywords(cfunc, self, args, nargs, kwnames)\
    ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))(PyCFunction)(cfunc)->func)(self, args, nargs, kwnames)

/* UnpackUnboundCMethod.proto (used by CallUnboundCMethod0) */
typedef struct {
    PyObject *type;
    PyObject **method_name;
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && CYTHON_ATOMICS
    __pyx_atomic_int_type initialized;
#endif
    PyCFunction func;
    PyObject *method;
    int flag;
} __Pyx_CachedCFunction;
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
static CYTHON_INLINE int __Pyx_CachedCFunction_GetAndSetInitializing(__Pyx_CachedCFunction *cfunc) {
#if !CYTHON_ATOMICS
    return 1;
#else
    __pyx_nonatomic_int_type expected = 0;
    if (__pyx_atomic_int_cmp_exchange(&cfunc->initialized, &expected, 1)) {
        return 0;
    }
    return expected;
#endif
}
static CYTHON_INLINE void __Pyx_CachedCFunction_SetFinishedInitializing(__Pyx_CachedCFunction *cfunc) {
#if CYTHON_ATOMICS
    __pyx_atomic_store(&cfunc->initialized, 2);
#endif
}
#else
#define __Pyx_CachedCFunction_GetAndSetInitializing(cfunc) 2
#define __Pyx_CachedCFunction_SetFinishedInitializing(cfunc)
#endif

/* CallUnboundCMethod0.proto */
CYTHON_UNUSED
static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self);
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self);
#else
#define __Pyx_CallUnboundCMethod0(cfunc, self)  __Pyx__CallUnboundCMethod0(cfunc, self)
#endif

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

/* OwnedDictNext.proto (used by ParseKeywordsImpl) */
#if CYTHON_AVOID_BORROWED_REFS
static int __Pyx_PyDict_NextRef(PyObject *p, PyObject **ppos, PyObject **pkey, PyObject **pvalue);
#else
CYTHON_INLINE
static int __Pyx_PyDict_NextRef(PyObject *p, Py_ssize_t *ppos, PyObject **pkey, PyObject **pvalue);
#endif

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

/* ParseKeywordsImpl.export */
static int __Pyx_ParseKeywordsTuple(
    PyObject *kwds,
    PyObject * const *kwvalues,
    PyObject ** const argnames[],
    PyObject *kwds2,
    PyObject *values[],
    Py_ssize_t num_pos_args,
    Py_ssize_t num_kwargs,
    const char* function_name,
    int ignore_unknown_kwargs
);
static int __Pyx_ParseKeywordDictToDict(
    PyObject *kwds,
    PyObject ** const argnames[],
    PyObject *kwds2,
    PyObject *values[],
    Py_ssize_t num_pos_args,
    const char* function_name
);
static int __Pyx_ParseKeywordDict(
    PyObject *kwds,
    PyObject ** const argnames[],
    PyObject *values[],
    Py_ssize_t num_pos_args,
    Py_ssize_t num_kwargs,
    const char* function_name,
    int ignore_unknown_kwargs
);

/* CallUnboundCMethod2.proto */
CYTHON_UNUSED
static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2);
#if CYTHON_COMPILING_IN_CPYTHON
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

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

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

/* PyDictVersioning.proto (used by GetModuleGlobalName) */
#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_XNewRef(__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_mstate_global->__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

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

/* RejectKeywords.export */
static void __Pyx_RejectKeywords(const char* function_name, PyObject *kwds);

/* PyMemoryError_Check.proto */
#define __Pyx_PyExc_MemoryError_Check(obj)  __Pyx_TypeCheck(obj, PyExc_MemoryError)

/* PyBufferError_Check.proto */
#define __Pyx_PyExc_BufferError_Check(obj)  __Pyx_TypeCheck(obj, PyExc_BufferError)

/* PyAttributeError_Check.proto */
#define __Pyx_PyExc_AttributeError_Check(obj)  __Pyx_TypeCheck(obj, PyExc_AttributeError)

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

/* PyNotImplementedError_Check.proto */
#define __Pyx_PyExc_NotImplementedError_Check(obj)  __Pyx_TypeCheck(obj, PyExc_NotImplementedError)

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

/* PyObjectVectorCallKwBuilder.proto */
CYTHON_UNUSED static int __Pyx_VectorcallBuilder_AddArg_Check(PyObject *key, PyObject *value, PyObject *builder, PyObject **args, int n);
#if CYTHON_VECTORCALL
#if PY_VERSION_HEX >= 0x03090000
#define __Pyx_Object_Vectorcall_CallFromBuilder PyObject_Vectorcall
#else
#define __Pyx_Object_Vectorcall_CallFromBuilder _PyObject_Vectorcall
#endif
#define __Pyx_MakeVectorcallBuilderKwds(n) PyTuple_New(n)
static int __Pyx_VectorcallBuilder_AddArg(PyObject *key, PyObject *value, PyObject *builder, PyObject **args, int n);
static int __Pyx_VectorcallBuilder_AddArgStr(const char *key, PyObject *value, PyObject *builder, PyObject **args, int n);
#else
#define __Pyx_Object_Vectorcall_CallFromBuilder __Pyx_PyObject_FastCallDict
#define __Pyx_MakeVectorcallBuilderKwds(n) __Pyx_PyDict_NewPresized(n)
#define __Pyx_VectorcallBuilder_AddArg(key, value, builder, args, n) PyDict_SetItem(builder, key, value)
#define __Pyx_VectorcallBuilder_AddArgStr(key, value, builder, args, n) PyDict_SetItemString(builder, key, value)
#endif

/* PyTypeError_Check.proto */
#define __Pyx_PyExc_TypeError_Check(obj)  __Pyx_TypeCheck(obj, PyExc_TypeError)

/* GetItemInt.proto */
#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil, unsafe_shared)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck, unsafe_shared) :\
    (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, has_gil, unsafe_shared)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck, unsafe_shared) :\
    (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, int unsafe_shared);
#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil, unsafe_shared)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck, unsafe_shared) :\
    (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, int unsafe_shared);
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, int unsafe_shared);

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

/* DictGetItem.proto */
#if !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);

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

/* CallUnboundCMethod1.proto */
CYTHON_UNUSED
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

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

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

/* object_ord.proto */
#define __Pyx_PyObject_Ord(c)\
    (likely(PyUnicode_Check(c)) ? (long)__Pyx_PyUnicode_AsPy_UCS4(c) : __Pyx__PyObject_Ord(c))
static long __Pyx__PyObject_Ord(PyObject* c);

/* PyUnicode_Substring.proto */
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_Substring(
            PyObject* text, Py_ssize_t start, Py_ssize_t stop);

/* 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 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 */
#define __Pyx_PyUnicode_From_Py_ssize_t(value, width, padding_char, format_char) (\
    ((format_char) == ('c')) ?\
        __Pyx_uchar___Pyx_PyUnicode_From_Py_ssize_t(value, width, padding_char) :\
        __Pyx____Pyx_PyUnicode_From_Py_ssize_t(value, width, padding_char, format_char)\
    )
static CYTHON_INLINE PyObject* __Pyx_uchar___Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char);
static CYTHON_INLINE PyObject* __Pyx____Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char, char format_char);

/* PyValueError_Check.proto */
#define __Pyx_PyExc_ValueError_Check(obj)  __Pyx_TypeCheck(obj, PyExc_ValueError)

/* PyIndexError_Check.proto */
#define __Pyx_PyExc_IndexError_Check(obj)  __Pyx_TypeCheck(obj, PyExc_IndexError)

/* PyOverflowError_Check.proto */
#define __Pyx_PyExc_OverflowError_Check(obj)  __Pyx_TypeCheck(obj, PyExc_OverflowError)

/* CIntToPyUnicode.proto */
#define __Pyx_PyUnicode_From_MPI_Count(value, width, padding_char, format_char) (\
    ((format_char) == ('c')) ?\
        __Pyx_uchar___Pyx_PyUnicode_From_MPI_Count(value, width, padding_char) :\
        __Pyx____Pyx_PyUnicode_From_MPI_Count(value, width, padding_char, format_char)\
    )
static CYTHON_INLINE PyObject* __Pyx_uchar___Pyx_PyUnicode_From_MPI_Count(MPI_Count value, Py_ssize_t width, char padding_char);
static CYTHON_INLINE PyObject* __Pyx____Pyx_PyUnicode_From_MPI_Count(MPI_Count 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, has_gil, unsafe_shared)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_SetItemInt_Fast(o, (Py_ssize_t)i, v, is_list, wraparound, boundscheck, unsafe_shared) :\
    (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, int unsafe_shared);

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

/* PyUnicode_Unicode.proto */
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_Unicode(PyObject *obj);

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

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

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

/* PyKeyError_Check.proto */
#define __Pyx_PyExc_KeyError_Check(obj)  __Pyx_TypeCheck(obj, PyExc_KeyError)

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

/* ArgTypeTestFunc.export */
static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact);

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

/* CIntToPyUnicode.proto */
#define __Pyx_PyUnicode_From_MPI_Aint(value, width, padding_char, format_char) (\
    ((format_char) == ('c')) ?\
        __Pyx_uchar___Pyx_PyUnicode_From_MPI_Aint(value, width, padding_char) :\
        __Pyx____Pyx_PyUnicode_From_MPI_Aint(value, width, padding_char, format_char)\
    )
static CYTHON_INLINE PyObject* __Pyx_uchar___Pyx_PyUnicode_From_MPI_Aint(MPI_Aint value, Py_ssize_t width, char padding_char);
static CYTHON_INLINE PyObject* __Pyx____Pyx_PyUnicode_From_MPI_Aint(MPI_Aint value, Py_ssize_t width, char padding_char, char format_char);

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

/* 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 void __Pyx_RaiseClosureNameError(const char *varname);

/* dict_setdefault.proto (used by FetchCommonType) */
static CYTHON_INLINE PyObject *__Pyx_PyDict_SetDefault(PyObject *d, PyObject *key, PyObject *default_value);

/* LimitedApiGetTypeDict.proto (used by SetItemOnTypeDict) */
#if CYTHON_COMPILING_IN_LIMITED_API
static PyObject *__Pyx_GetTypeDict(PyTypeObject *tp);
#endif

/* SetItemOnTypeDict.proto (used by FixUpExtensionType) */
static int __Pyx__SetItemOnTypeDict(PyTypeObject *tp, PyObject *k, PyObject *v);
#define __Pyx_SetItemOnTypeDict(tp, k, v) __Pyx__SetItemOnTypeDict((PyTypeObject*)tp, k, v)

/* FixUpExtensionType.proto (used by FetchCommonType) */
static CYTHON_INLINE int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type);

/* AddModuleRef.proto (used by FetchSharedCythonModule) */
#if ((CYTHON_COMPILING_IN_CPYTHON_FREETHREADING ) ||\
     __PYX_LIMITED_VERSION_HEX < 0x030d0000)
  static PyObject *__Pyx_PyImport_AddModuleRef(const char *name);
#else
  #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name)
#endif

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

/* FetchCommonType.proto (used by CommonTypesMetaclass) */
static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases);

/* CommonTypesMetaclass.proto (used by CythonFunctionShared) */
static int __pyx_CommonTypesMetaclass_init(PyObject *module);
#define __Pyx_CommonTypesMetaclass_USED

/* CallTypeTraverse.proto (used by CythonFunctionShared) */
#if !CYTHON_USE_TYPE_SPECS || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x03090000)
#define __Pyx_call_type_traverse(o, always_call, visit, arg) 0
#else
static int __Pyx_call_type_traverse(PyObject *o, int always_call, visitproc visit, void *arg);
#endif

/* PyMethodNew.proto (used by CythonFunctionShared) */
static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ);

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

/* CythonFunctionShared.proto (used by CythonFunction) */
#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_COMPILING_IN_LIMITED_API && CYTHON_METH_FASTCALL
    __pyx_vectorcallfunc func_vectorcall;
#endif
#if CYTHON_COMPILING_IN_LIMITED_API
    PyObject *func_weakreflist;
#endif
#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API
    PyObject *func_dict;
#endif
    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
    PyObject *defaults;
    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_mstate_global->__pyx_CyFunctionType)
#define __Pyx_CyOrPyCFunction_Check(obj)  __Pyx_TypeCheck2(obj, __pyx_mstate_global->__pyx_CyFunctionType, &PyCFunction_Type)
#define __Pyx_CyFunction_CheckExact(obj)  __Pyx_IS_TYPE(obj, __pyx_mstate_global->__pyx_CyFunctionType)
static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void (*cfunc)(void));
#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 PyObject *__Pyx_CyFunction_InitDefaults(PyObject *func,
                                                         PyTypeObject *defaults_type);
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_COMPILING_IN_LIMITED_API
#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);

/* PyObjectGetMethod.proto (used by PyObjectCallMethod1) */
#if !(CYTHON_VECTORCALL && (__PYX_LIMITED_VERSION_HEX >= 0x030C0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x03090000)))
static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method);
#endif

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

/* StringJoin.proto */
static CYTHON_INLINE PyObject* __Pyx_PyBytes_Join(PyObject* sep, PyObject* values);

/* PyUserWarning_Check.proto */
#define __Pyx_PyExc_UserWarning_Check(obj)  __Pyx_TypeCheck(obj, PyExc_UserWarning)

/* 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 && CYTHON_ASSUME_SAFE_SIZE
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 (used by PyObjectCallMethod0) */
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);

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

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

/* UnpackTuple2.proto (used by dict_iter) */
static CYTHON_INLINE int __Pyx_unpack_tuple2(
    PyObject* tuple, PyObject** value1, PyObject** value2, int is_tuple, int has_known_size, int 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);

/* PyLongBinop.proto */
#if !CYTHON_COMPILING_IN_PYPY
static CYTHON_INLINE PyObject* __Pyx_PyLong_MultiplyCObj(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check);
#else
#define __Pyx_PyLong_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);

/* PyRange_Check.proto */
#if CYTHON_COMPILING_IN_PYPY && !defined(PyRange_Check)
  #define PyRange_Check(obj)  __Pyx_TypeCheck((obj), &PyRange_Type)
#endif

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

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

/* AllocateExtensionType.proto */
static PyObject *__Pyx_AllocateExtensionType(PyTypeObject *t, int is_final);

/* CheckTypeForFreelists.proto */
#if CYTHON_USE_FREELISTS
#if CYTHON_USE_TYPE_SPECS
#define __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, expected_tp, expected_size) ((int) ((t) == (expected_tp)))
#define __PYX_CHECK_TYPE_FOR_FREELIST_FLAGS  Py_TPFLAGS_IS_ABSTRACT
#else
#define __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, expected_tp, expected_size) ((int) ((t)->tp_basicsize == (expected_size)))
#define __PYX_CHECK_TYPE_FOR_FREELIST_FLAGS  (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)
#endif
#define __PYX_CHECK_TYPE_FOR_FREELISTS(t, expected_tp, expected_size)\
    (__PYX_CHECK_FINAL_TYPE_FOR_FREELISTS((t), (expected_tp), (expected_size)) &\
     (int) (!__Pyx_PyType_HasFeature((t), __PYX_CHECK_TYPE_FOR_FREELIST_FLAGS)))
#endif

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

/* GetApiDict.proto */
static PyObject *__Pyx_ApiExport_GetApiDict(void);

/* ValidateBasesTuple.proto (used by PyType_Ready) */
#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);

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

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

/* MergeVTables.proto */
static int __Pyx_MergeVtables(PyTypeObject *type);

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

/* ListPack.proto */
static PyObject *__Pyx_PyList_Pack(Py_ssize_t n, ...);

/* Py3UpdateBases.proto */
static PyObject* __Pyx_PEP560_update_bases(PyObject *bases);

/* CalculateMetaclass.proto */
static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases);

/* SetNameInClass.proto */
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000
#define __Pyx_SetNameInClass(ns, name, value)\
    (likely(PyDict_CheckExact(ns)) ? _PyDict_SetItem_KnownHash(ns, name, value, ((PyASCIIObject *) name)->hash) : PyObject_SetItem(ns, name, value))
#elif CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_SetNameInClass(ns, name, value)\
    (likely(PyDict_CheckExact(ns)) ? PyDict_SetItem(ns, name, value) : PyObject_SetItem(ns, name, value))
#else
#define __Pyx_SetNameInClass(ns, name, value)  PyObject_SetItem(ns, name, value)
#endif

/* Py3ClassCreate.proto */
static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname,
                                           PyObject *mkw, PyObject *modname, PyObject *doc);
static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict,
                                      PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass);

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

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

/* CLineInTraceback.proto (used by AddTraceback) */
#if CYTHON_CLINE_IN_TRACEBACK && CYTHON_CLINE_IN_TRACEBACK_RUNTIME
static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line);
#else
#define __Pyx_CLineForTraceback(tstate, c_line)  (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0)
#endif

/* CodeObjectCache.proto (used by AddTraceback) */
#if CYTHON_COMPILING_IN_LIMITED_API
typedef PyObject __Pyx_CachedCodeObjectType;
#else
typedef PyCodeObject __Pyx_CachedCodeObjectType;
#endif
typedef struct {
    __Pyx_CachedCodeObjectType* code_object;
    int code_line;
} __Pyx_CodeObjectCacheEntry;
struct __Pyx_CodeObjectCache {
    int count;
    int max_count;
    __Pyx_CodeObjectCacheEntry* entries;
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    __pyx_atomic_int_type accessor_count;
  #endif
};
static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
static __Pyx_CachedCodeObjectType *__pyx_find_code_object(int code_line);
static void __pyx_insert_code_object(int code_line, __Pyx_CachedCodeObjectType* code_object);

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

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

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

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

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

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

/* CIntFromPy.proto */
static CYTHON_INLINE MPI_Offset __Pyx_PyLong_As_MPI_Offset(PyObject *);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_long(long value);

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

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

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

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

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

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

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_MPI_Fint(MPI_Fint value);

/* CIntFromPy.proto */
static CYTHON_INLINE MPI_Fint __Pyx_PyLong_As_MPI_Fint(PyObject *);

/* FormatTypeName.proto */
#if CYTHON_COMPILING_IN_LIMITED_API
typedef PyObject *__Pyx_TypeName;
#define __Pyx_FMT_TYPENAME "%U"
#define __Pyx_DECREF_TypeName(obj) Py_XDECREF(obj)
#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000
#define __Pyx_PyType_GetFullyQualifiedName PyType_GetFullyQualifiedName
#else
static __Pyx_TypeName __Pyx_PyType_GetFullyQualifiedName(PyTypeObject* tp);
#endif
#else  // !LIMITED_API
typedef const char *__Pyx_TypeName;
#define __Pyx_FMT_TYPENAME "%.200s"
#define __Pyx_PyType_GetFullyQualifiedName(tp) ((tp)->tp_name)
#define __Pyx_DECREF_TypeName(obj)
#endif

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

/* GetRuntimeVersion.proto */
#if __PYX_LIMITED_VERSION_HEX < 0x030b0000
static unsigned long __Pyx_cached_runtime_version = 0;
static void __Pyx_init_runtime_version(void);
#else
#define __Pyx_init_runtime_version()
#endif
static unsigned long __Pyx_get_runtime_version(void);

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

/* DecompressString.proto */
static PyObject *__Pyx_DecompressString(const char *s, Py_ssize_t length, int algo);

/* MultiPhaseInitModuleState.proto */
#if CYTHON_PEP489_MULTI_PHASE_INIT && CYTHON_USE_MODULE_STATE
static PyObject *__Pyx_State_FindModule(void*);
static int __Pyx_State_AddModule(PyObject* module, void*);
static int __Pyx_State_RemoveModule(void*);
#elif CYTHON_USE_MODULE_STATE
#define __Pyx_State_FindModule PyState_FindModule
#define __Pyx_State_AddModule PyState_AddModule
#define __Pyx_State_RemoveModule PyState_RemoveModule
#endif

/* #### Code section: module_declarations ### */
/* CythonABIVersion.proto */
#if CYTHON_COMPILING_IN_LIMITED_API
    #if CYTHON_METH_FASTCALL
        #define __PYX_FASTCALL_ABI_SUFFIX  "_fastcall"
    #else
        #define __PYX_FASTCALL_ABI_SUFFIX
    #endif
    #define __PYX_LIMITED_ABI_SUFFIX "limited" __PYX_FASTCALL_ABI_SUFFIX __PYX_AM_SEND_ABI_SUFFIX
#else
    #define __PYX_LIMITED_ABI_SUFFIX
#endif
#if __PYX_HAS_PY_AM_SEND == 1
    #define __PYX_AM_SEND_ABI_SUFFIX
#elif __PYX_HAS_PY_AM_SEND == 2
    #define __PYX_AM_SEND_ABI_SUFFIX "amsendbackport"
#else
    #define __PYX_AM_SEND_ABI_SUFFIX "noamsend"
#endif
#ifndef __PYX_MONITORING_ABI_SUFFIX
    #define __PYX_MONITORING_ABI_SUFFIX
#endif
#if CYTHON_USE_TP_FINALIZE
    #define __PYX_TP_FINALIZE_ABI_SUFFIX
#else
    #define __PYX_TP_FINALIZE_ABI_SUFFIX "nofinalize"
#endif
#if CYTHON_USE_FREELISTS || !defined(__Pyx_AsyncGen_USED)
    #define __PYX_FREELISTS_ABI_SUFFIX
#else
    #define __PYX_FREELISTS_ABI_SUFFIX "nofreelists"
#endif
#define CYTHON_ABI  __PYX_ABI_VERSION __PYX_LIMITED_ABI_SUFFIX __PYX_MONITORING_ABI_SUFFIX __PYX_TP_FINALIZE_ABI_SUFFIX __PYX_FREELISTS_ABI_SUFFIX __PYX_AM_SEND_ABI_SUFFIX
#define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI
#define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "."

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_10BottomType_as_str(CYTHON_UNUSED struct __pyx_obj_6mpi4py_3MPI_BottomType *__pyx_v_self); /* proto*/
static CYTHON_INLINE void *__pyx_f_6mpi4py_3MPI_10BottomType_as_buf(CYTHON_UNUSED struct __pyx_obj_6mpi4py_3MPI_BottomType *__pyx_v_self); /* proto*/
static CYTHON_INLINE MPI_Aint __pyx_f_6mpi4py_3MPI_10BottomType_as_int(CYTHON_UNUSED struct __pyx_obj_6mpi4py_3MPI_BottomType *__pyx_v_self); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_11InPlaceType_as_str(CYTHON_UNUSED struct __pyx_obj_6mpi4py_3MPI_InPlaceType *__pyx_v_self); /* proto*/
static CYTHON_INLINE void *__pyx_f_6mpi4py_3MPI_11InPlaceType_as_buf(CYTHON_UNUSED struct __pyx_obj_6mpi4py_3MPI_InPlaceType *__pyx_v_self); /* proto*/
static CYTHON_INLINE MPI_Aint __pyx_f_6mpi4py_3MPI_11InPlaceType_as_int(CYTHON_UNUSED struct __pyx_obj_6mpi4py_3MPI_InPlaceType *__pyx_v_self); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_19BufferAutomaticType_as_str(CYTHON_UNUSED struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *__pyx_v_self); /* proto*/
static CYTHON_INLINE void *__pyx_f_6mpi4py_3MPI_19BufferAutomaticType_as_buf(CYTHON_UNUSED struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *__pyx_v_self); /* proto*/
static CYTHON_INLINE MPI_Aint __pyx_f_6mpi4py_3MPI_19BufferAutomaticType_as_int(CYTHON_UNUSED struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *__pyx_v_self); /* proto*/
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 "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___BOTTOM__ = 0;
static PyObject *__pyx_v_6mpi4py_3MPI___IN_PLACE__ = 0;
static PyObject *__pyx_v_6mpi4py_3MPI___BUFFER_AUTOMATIC__ = 0;
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__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_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 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___FLOAT16_T__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___FLOAT32_T__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___FLOAT64_T__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___BFLOAT16_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___LOGICAL16__ = 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 int __pyx_f_6mpi4py_3MPI_dlpack_check_rdonly(int, int); /*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 void __pyx_f_6mpi4py_3MPI_PyMPI_ReleaseBuffer(int, Py_buffer *); /*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 int __pyx_f_6mpi4py_3MPI_is_fspath(PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asstring(PyObject *, char **); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asfspath(PyObject *, char **); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_string(PyObject *, char ***); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_fspath(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 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 int __pyx_f_6mpi4py_3MPI_is_BUFFER_AUTOMATIC(PyObject *); /*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 MPI_Errhandler __pyx_f_6mpi4py_3MPI_options_get_errhandler(void); /*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 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 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 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 size_t __pyx_f_6mpi4py_3MPI_mpisizeof(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 int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_constobj(struct PyMPIDatatypeObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_constobj(struct PyMPIRequestObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_3__pyx_f_6mpi4py_3MPI_constobj(struct PyMPIOpObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_4__pyx_f_6mpi4py_3MPI_constobj(struct PyMPIGroupObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_5__pyx_f_6mpi4py_3MPI_constobj(struct PyMPIInfoObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_6__pyx_f_6mpi4py_3MPI_constobj(struct PyMPIErrhandlerObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_7__pyx_f_6mpi4py_3MPI_constobj(struct PyMPISessionObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_8__pyx_f_6mpi4py_3MPI_constobj(struct PyMPICommObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_9__pyx_f_6mpi4py_3MPI_constobj(struct PyMPIWinObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_10__pyx_f_6mpi4py_3MPI_constobj(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 CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_options_set_errhandler(MPI_Session); /*proto*/
static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_options_set_errhandler(MPI_Comm); /*proto*/
static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_options_set_errhandler(MPI_Win); /*proto*/
static CYTHON_INLINE int __pyx_fuse_3__pyx_f_6mpi4py_3MPI_options_set_errhandler(MPI_File); /*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_property;
static PyObject *__pyx_builtin_Ellipsis;
static PyObject *__pyx_builtin_NotImplemented;
/* #### Code section: string_decls ### */
static const char __pyx_k_0[] = "0";
static const char __pyx_k_1[] = "1";
static const char __pyx_k_B[] = "B";
static const char __pyx_k_D[] = "D";
static const char __pyx_k_E[] = "E";
static const char __pyx_k_F[] = "F";
static const char __pyx_k_G[] = "G";
static const char __pyx_k_H[] = "H";
static const char __pyx_k_I[] = "I";
static const char __pyx_k_L[] = "L";
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_S[] = "S";
static const char __pyx_k_U[] = "U";
static const char __pyx_k_a[] = "a";
static const char __pyx_k_b[] = "b";
static const char __pyx_k_c[] = "c";
static const char __pyx_k_d[] = "d";
static const char __pyx_k_e[] = "e";
static const char __pyx_k_f[] = "f";
static const char __pyx_k_g[] = "g";
static const char __pyx_k_h[] = "h";
static const char __pyx_k_i[] = "i";
static const char __pyx_k_l[] = "l";
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_u[] = "u";
static const char __pyx_k_w[] = "w";
static const char __pyx_k_y[] = "y";
static const char __pyx_k_z[] = "z";
static const char __pyx_k_1s[] = "1s";
static const char __pyx_k_1u[] = "1u";
static const char __pyx_k_1w[] = "1w";
static const char __pyx_k_M8[] = "M8";
static const char __pyx_k_S1[] = "S1";
static const char __pyx_k_U1[] = "U1";
static const char __pyx_k_Zd[] = "Zd";
static const char __pyx_k_Ze[] = "Ze";
static const char __pyx_k_Zf[] = "Zf";
static const char __pyx_k_Zg[] = "Zg";
static const char __pyx_k_b1[] = "b1";
static const char __pyx_k_c4[] = "c4";
static const char __pyx_k_c8[] = "c8";
static const char __pyx_k_f2[] = "f2";
static const char __pyx_k_f4[] = "f4";
static const char __pyx_k_f8[] = "f8";
static const char __pyx_k_i1[] = "i1";
static const char __pyx_k_i2[] = "i2";
static const char __pyx_k_i4[] = "i4";
static const char __pyx_k_i8[] = "i8";
static const char __pyx_k_l1[] = "l1";
static const char __pyx_k_l2[] = "l2";
static const char __pyx_k_l4[] = "l4";
static const char __pyx_k_l8[] = "l8";
static const char __pyx_k_m8[] = "m8";
static const char __pyx_k_no[] = "no";
static const char __pyx_k_on[] = "on";
static const char __pyx_k_r2[] = "r2";
static const char __pyx_k_r4[] = "r4";
static const char __pyx_k_r8[] = "r8";
static const char __pyx_k_u1[] = "u1";
static const char __pyx_k_u2[] = "u2";
static const char __pyx_k_u4[] = "u4";
static const char __pyx_k_u8[] = "u8";
static const char __pyx_k_c16[] = "c16";
static const char __pyx_k_c24[] = "c24";
static const char __pyx_k_c32[] = "c32";
static const char __pyx_k_f12[] = "f12";
static const char __pyx_k_f16[] = "f16";
static const char __pyx_k_i16[] = "i16";
static const char __pyx_k_l16[] = "l16";
static const char __pyx_k_off[] = "off";
static const char __pyx_k_r16[] = "r16";
static const char __pyx_k_u16[] = "u16";
static const char __pyx_k_yes[] = "yes";
static const char __pyx_k__135[] = "?";
static const char __pyx_k_true[] = "true";
static const char __pyx_k_MPICH[] = "MPICH";
static const char __pyx_k_false[] = "false";
static const char __pyx_k_errors[] = "errors";
static const char __pyx_k_MVAPICH[] = "MVAPICH";
static const char __pyx_k_threads[] = "threads";
static const char __pyx_k_MVAPICH2[] = "MVAPICH2";
static const char __pyx_k_Open_MPI[] = "Open MPI";
static const char __pyx_k_PMI_SIZE[] = "PMI_SIZE";
static const char __pyx_k_dltensor[] = "dltensor";
static const char __pyx_k_finalize[] = "finalize";
static const char __pyx_k_Intel_MPI[] = "Intel MPI";
static const char __pyx_k_initialize[] = "initialize";
static const char __pyx_k_fast_reduce[] = "fast_reduce";
static const char __pyx_k_irecv_bufsz[] = "irecv_bufsz";
static const char __pyx_k_recv_mprobe[] = "recv_mprobe";
static const char __pyx_k_thread_level[] = "thread_level";
static const char __pyx_k_HYDI_CONTROL_FD[] = "HYDI_CONTROL_FD";
static const char __pyx_k_dltensor_versioned[] = "dltensor_versioned";
static const char __pyx_k_I_MPI_HYDRA_TOPOLIB[] = "I_MPI_HYDRA_TOPOLIB";
static const char __pyx_k_MPI4PY_CHECK_MPIEXEC[] = "MPI4PY_CHECK_MPIEXEC";
static const char __pyx_k_OMPI_COMM_WORLD_SIZE[] = "OMPI_COMM_WORLD_SIZE";
/* #### 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_10BottomType___bool__(struct __pyx_obj_6mpi4py_3MPI_BottomType *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_10BottomType_2__int__(struct __pyx_obj_6mpi4py_3MPI_BottomType *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_10BottomType_4__index__(struct __pyx_obj_6mpi4py_3MPI_BottomType *__pyx_v_self); /* proto */
static Py_hash_t __pyx_pf_6mpi4py_3MPI_10BottomType_6__hash__(struct __pyx_obj_6mpi4py_3MPI_BottomType *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_10BottomType_8__eq__(struct __pyx_obj_6mpi4py_3MPI_BottomType *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_10BottomType_10__ne__(struct __pyx_obj_6mpi4py_3MPI_BottomType *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_6mpi4py_3MPI_10BottomType_12__getbuffer__(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_14__repr__(struct __pyx_obj_6mpi4py_3MPI_BottomType *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_10BottomType_16__reduce__(struct __pyx_obj_6mpi4py_3MPI_BottomType *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_11InPlaceType___bool__(struct __pyx_obj_6mpi4py_3MPI_InPlaceType *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_11InPlaceType_2__int__(struct __pyx_obj_6mpi4py_3MPI_InPlaceType *__pyx_v_self); /* proto */
static Py_hash_t __pyx_pf_6mpi4py_3MPI_11InPlaceType_4__hash__(struct __pyx_obj_6mpi4py_3MPI_InPlaceType *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_11InPlaceType_6__eq__(struct __pyx_obj_6mpi4py_3MPI_InPlaceType *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_11InPlaceType_8__ne__(struct __pyx_obj_6mpi4py_3MPI_InPlaceType *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_6mpi4py_3MPI_11InPlaceType_10__getbuffer__(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_12__repr__(struct __pyx_obj_6mpi4py_3MPI_InPlaceType *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_11InPlaceType_14__reduce__(struct __pyx_obj_6mpi4py_3MPI_InPlaceType *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_19BufferAutomaticType___bool__(struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_19BufferAutomaticType_2__int__(struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *__pyx_v_self); /* proto */
static Py_hash_t __pyx_pf_6mpi4py_3MPI_19BufferAutomaticType_4__hash__(struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_19BufferAutomaticType_6__eq__(struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_19BufferAutomaticType_8__ne__(struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_6mpi4py_3MPI_19BufferAutomaticType_10__getbuffer__(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_12__repr__(struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_19BufferAutomaticType_14__reduce__(struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *__pyx_v_self); /* 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 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_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 PyObject *__pyx_pf_6mpi4py_3MPI_108__defaults__(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, int __pyx_v_ierr); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_2__int__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_4__bool__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_6__hash__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_8__eq__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_10__ne__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_12__lt__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_14__le__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_16__gt__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_18__ge__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_20__repr__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_22__str__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_24Get_error_code(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_26Get_error_class(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_28Get_error_string(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_30error_code(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_32error_class(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_34error_string(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__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_90toint(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_92fromint(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_94py2f(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_96f2py(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_98tocode(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_100fromcode(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_32tomemory(struct PyMPIStatusObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_34py2f(struct PyMPIStatusObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_36f2py(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_42toint(struct PyMPIRequestObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_44fromint(PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_46py2f(struct PyMPIRequestObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_48f2py(PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_50wait(struct PyMPIRequestObject *__pyx_v_self, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_52test(struct PyMPIRequestObject *__pyx_v_self, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_54get_status(struct PyMPIRequestObject *__pyx_v_self, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_56waitany(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_58testany(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_60get_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_62waitall(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_64testall(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_66get_status_all(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_68waitsome(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_70testsome(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_72get_status_some(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_74cancel(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_30toint(struct PyMPIMessageObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_32fromint(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_34py2f(struct PyMPIMessageObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_36f2py(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_24toint(struct PyMPIOpObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_26fromint(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_28py2f(struct PyMPIOpObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_30f2py(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_42toint(struct PyMPIGroupObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_44fromint(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_46py2f(struct PyMPIGroupObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_48f2py(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_32toint(struct PyMPIInfoObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_34fromint(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_36py2f(struct PyMPIInfoObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_38f2py(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg); /* proto */
static Py_ssize_t __pyx_pf_6mpi4py_3MPI_4Info_40__len__(struct PyMPIInfoObject *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_4Info_42__contains__(struct PyMPIInfoObject *__pyx_v_self, PyObject *__pyx_v_key); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_44__iter__(struct PyMPIInfoObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_46__getitem__(struct PyMPIInfoObject *__pyx_v_self, PyObject *__pyx_v_key); /* proto */
static int __pyx_pf_6mpi4py_3MPI_4Info_48__setitem__(struct PyMPIInfoObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_6mpi4py_3MPI_4Info_50__delitem__(struct PyMPIInfoObject *__pyx_v_self, PyObject *__pyx_v_key); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_52get(struct PyMPIInfoObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_default); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_54keys(struct PyMPIInfoObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_56values(struct PyMPIInfoObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_58items(struct PyMPIInfoObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_60update(struct PyMPIInfoObject *__pyx_v_self, PyObject *__pyx_v_items, PyObject *__pyx_v_kwds); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_62pop(struct PyMPIInfoObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_default); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_64popitem(struct PyMPIInfoObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_66copy(struct PyMPIInfoObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_68clear(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_16toint(struct PyMPIErrhandlerObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_18fromint(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_20py2f(struct PyMPIErrhandlerObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_22f2py(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_44toint(struct PyMPISessionObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_46fromint(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_48py2f(struct PyMPISessionObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_50f2py(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_244toint(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_246fromint(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_248py2f(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_250f2py(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_252send(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_254bsend(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_256ssend(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_258recv(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_260sendrecv(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_262isend(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_264ibsend(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_266issend(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_268irecv(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_270probe(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_272iprobe(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_274mprobe(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_276improbe(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_278barrier(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_280bcast(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_obj, int __pyx_v_root); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_282gather(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendobj, int __pyx_v_root); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_284scatter(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendobj, int __pyx_v_root); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_286allgather(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendobj); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_288alltoall(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendobj); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_290reduce(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_292allreduce(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_110__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_112__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_114__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_116__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_112toint(struct PyMPIWinObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_114fromint(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_116py2f(struct PyMPIWinObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_118f2py(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_132toint(struct PyMPIFileObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_134fromint(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_136py2f(struct PyMPIFileObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_138f2py(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_118__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_120__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_abi_version(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_78Get_abi_info(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_80Get_abi_fortran_info(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_82Get_processor_name(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_84Get_hw_resource_info(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_86Wtime(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_88Wtick(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_90Pcontrol(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_level); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_92_typecode(CYTHON_UNUSED PyObject *__pyx_self, struct PyMPIDatatypeObject *__pyx_v_datatype); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_94_typealign(CYTHON_UNUSED PyObject *__pyx_self, struct PyMPIDatatypeObject *__pyx_v_datatype); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_96_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_98_datatype_decode(CYTHON_UNUSED PyObject *__pyx_self, struct PyMPIDatatypeObject *__pyx_v_datatype, int __pyx_v_mark); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_100get_vendor(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_102_sizeof(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_arg); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_104_addressof(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_arg); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_106_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_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_BufferAutomaticType(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__p_datarep(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___pyx_defaults(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI___pyx_defaults1(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI___pyx_defaults2(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*/
/* #### Code section: late_includes ### */
/* #### Code section: module_state ### */
/* SmallCodeConfig */
#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

typedef struct {
  PyObject *__pyx_d;
  PyObject *__pyx_b;
  PyObject *__pyx_cython_runtime;
  PyObject *__pyx_empty_tuple;
  PyObject *__pyx_empty_bytes;
  PyObject *__pyx_empty_unicode;
  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_BottomType;
  PyObject *__pyx_type_6mpi4py_3MPI_InPlaceType;
  PyObject *__pyx_type_6mpi4py_3MPI_BufferAutomaticType;
  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__p_datarep;
  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___pyx_defaults;
  PyObject *__pyx_type_6mpi4py_3MPI___pyx_defaults1;
  PyObject *__pyx_type_6mpi4py_3MPI___pyx_defaults2;
  PyObject *__pyx_type_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback;
  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_BottomType;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI_InPlaceType;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI_BufferAutomaticType;
  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__p_datarep;
  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___pyx_defaults;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI___pyx_defaults1;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI___pyx_defaults2;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback;
  __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_get;
  __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_items;
  __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_pop;
  __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_values;
  __Pyx_CachedCFunction __pyx_umethod_PyList_Type__index;
  __Pyx_CachedCFunction __pyx_umethod_PyUnicode_Type__lower;
  int __pyx_k__7;
  int __pyx_k__8;
  struct PyMPIDatatypeObject *__pyx_k__9;
  int __pyx_k__10;
  int __pyx_k__11;
  int __pyx_k__12;
  int __pyx_k__13;
  int __pyx_k__14;
  int __pyx_k__15;
  int __pyx_k__16;
  int __pyx_k__17;
  struct PyMPIInfoObject *__pyx_k__18;
  struct PyMPIInfoObject *__pyx_k__19;
  struct PyMPIInfoObject *__pyx_k__20;
  struct PyMPIInfoObject *__pyx_k__21;
  int __pyx_k__22;
  int __pyx_k__23;
  int __pyx_k__24;
  int __pyx_k__25;
  int __pyx_k__26;
  int __pyx_k__27;
  int __pyx_k__28;
  int __pyx_k__29;
  int __pyx_k__30;
  int __pyx_k__31;
  int __pyx_k__32;
  int __pyx_k__33;
  int __pyx_k__34;
  int __pyx_k__35;
  int __pyx_k__36;
  int __pyx_k__37;
  int __pyx_k__38;
  int __pyx_k__39;
  int __pyx_k__40;
  int __pyx_k__41;
  int __pyx_k__42;
  int __pyx_k__43;
  struct PyMPIInfoObject *__pyx_k__44;
  struct PyMPIInfoObject *__pyx_k__45;
  int __pyx_k__46;
  int __pyx_k__47;
  struct PyMPIOpObject *__pyx_k__48;
  struct PyMPIOpObject *__pyx_k__49;
  struct PyMPIOpObject *__pyx_k__50;
  struct PyMPIOpObject *__pyx_k__51;
  struct PyMPIOpObject *__pyx_k__52;
  struct PyMPIOpObject *__pyx_k__53;
  struct PyMPIOpObject *__pyx_k__54;
  struct PyMPIOpObject *__pyx_k__55;
  struct PyMPIInfoObject *__pyx_k__56;
  struct PyMPIInfoObject *__pyx_k__57;
  struct PyMPIInfoObject *__pyx_k__58;
  struct PyMPIInfoObject *__pyx_k__59;
  struct PyMPIInfoObject *__pyx_k__60;
  struct PyMPIInfoObject *__pyx_k__61;
  struct PyMPIInfoObject *__pyx_k__62;
  struct PyMPIInfoObject *__pyx_k__63;
  struct PyMPIInfoObject *__pyx_k__64;
  struct PyMPIInfoObject *__pyx_k__65;
  struct PyMPIInfoObject *__pyx_k__66;
  struct PyMPIOpObject *__pyx_k__67;
  struct PyMPIInfoObject *__pyx_k__68;
  struct PyMPIOpObject *__pyx_k__69;
  struct PyMPIInfoObject *__pyx_k__70;
  struct PyMPIOpObject *__pyx_k__71;
  struct PyMPIInfoObject *__pyx_k__72;
  struct PyMPIOpObject *__pyx_k__73;
  struct PyMPIInfoObject *__pyx_k__74;
  int __pyx_k__75;
  int __pyx_k__76;
  int __pyx_k__77;
  int __pyx_k__78;
  int __pyx_k__79;
  int __pyx_k__80;
  int __pyx_k__81;
  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;
  PyObject *__pyx_k__89;
  PyObject *__pyx_k__90;
  struct PyMPIInfoObject *__pyx_k__91;
  struct PyMPIInfoObject *__pyx_k__92;
  struct PyMPIInfoObject *__pyx_k__93;
  struct PyMPIOpObject *__pyx_k__94;
  struct PyMPIOpObject *__pyx_k__95;
  struct PyMPIOpObject *__pyx_k__96;
  struct PyMPIOpObject *__pyx_k__97;
  struct PyMPIOpObject *__pyx_k__98;
  struct PyMPIInfoObject *__pyx_k__99;
  struct PyMPIOpObject *__pyx_k__100;
  struct PyMPIInfoObject *__pyx_k__101;
  PyObject *__pyx_k__102;
  PyObject *__pyx_k__103;
  struct PyMPIInfoObject *__pyx_k__104;
  PyObject *__pyx_k__105;
  struct PyMPIInfoObject *__pyx_k__106;
  struct PyMPIInfoObject *__pyx_k__107;
  struct PyMPIInfoObject *__pyx_k__108;
  struct PyMPIInfoObject *__pyx_k__109;
  struct PyMPIInfoObject *__pyx_k__110;
  struct PyMPIInfoObject *__pyx_k__111;
  struct PyMPIInfoObject *__pyx_k__112;
  struct PyMPIInfoObject *__pyx_k__113;
  struct PyMPIInfoObject *__pyx_k__114;
  struct PyMPIIntracommObject *__pyx_k__115;
  struct PyMPIInfoObject *__pyx_k__116;
  struct PyMPIIntracommObject *__pyx_k__117;
  struct PyMPIInfoObject *__pyx_k__118;
  struct PyMPIIntracommObject *__pyx_k__119;
  struct PyMPIInfoObject *__pyx_k__120;
  struct PyMPIIntracommObject *__pyx_k__121;
  struct PyMPIOpObject *__pyx_k__122;
  struct PyMPIOpObject *__pyx_k__123;
  struct PyMPIOpObject *__pyx_k__124;
  struct PyMPIOpObject *__pyx_k__125;
  struct PyMPIOpObject *__pyx_k__126;
  int __pyx_k__127;
  struct PyMPIInfoObject *__pyx_k__128;
  int __pyx_k__129;
  struct PyMPIInfoObject *__pyx_k__130;
  struct PyMPIDatatypeObject *__pyx_k__131;
  struct PyMPIInfoObject *__pyx_k__132;
  int __pyx_k__133;
  int __pyx_k__134;
  PyObject *__pyx_slice[2];
  PyObject *__pyx_tuple[24];
  PyObject *__pyx_codeobj_tab[614];
  PyObject *__pyx_string_tab[2557];
  PyObject *__pyx_number_tab[6];
/* #### Code section: module_state_contents ### */
/* CommonTypesMetaclass.module_state_decls */
PyTypeObject *__pyx_CommonTypesMetaclassType;

/* CachedMethodType.module_state_decls */
#if CYTHON_COMPILING_IN_LIMITED_API
PyObject *__Pyx_CachedMethodType;
#endif

/* CythonFunctionShared.module_state_decls */
PyTypeObject *__pyx_CyFunctionType;


#if CYTHON_USE_FREELISTS
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];
int __pyx_freecount_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback;
#endif
/* CodeObjectCache.module_state_decls */
struct __Pyx_CodeObjectCache __pyx_code_cache;

/* #### Code section: module_state_end ### */
} __pyx_mstatetype;

#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_global (__Pyx_PyModule_GetState(__Pyx_State_FindModule(&__pyx_moduledef)))

#define __pyx_m (__Pyx_State_FindModule(&__pyx_moduledef))
#else
static __pyx_mstatetype __pyx_mstate_global_static =
#ifdef __cplusplus
    {};
#else
    {0};
#endif
static __pyx_mstatetype * const __pyx_mstate_global = &__pyx_mstate_global_static;
#endif
/* #### Code section: constant_name_defines ### */
#define __pyx_kp_u_ __pyx_string_tab[0]
#define __pyx_kp_u_Any_None __pyx_string_tab[1]
#define __pyx_kp_u_BufSpecB_InPlace __pyx_string_tab[2]
#define __pyx_kp_u_BufSpecB_None __pyx_string_tab[3]
#define __pyx_kp_u_BufSpecV_InPlace __pyx_string_tab[4]
#define __pyx_kp_u_BufSpecV_None __pyx_string_tab[5]
#define __pyx_kp_u_BufSpecW_InPlace __pyx_string_tab[6]
#define __pyx_kp_u_BufSpec_BufSpecB __pyx_string_tab[7]
#define __pyx_kp_u_BufSpec_InPlace __pyx_string_tab[8]
#define __pyx_kp_u_BufSpec_None __pyx_string_tab[9]
#define __pyx_kp_u_Buffer_Bottom __pyx_string_tab[10]
#define __pyx_kp_u_Buffer_None __pyx_string_tab[11]
#define __pyx_kp_u_Callable_Buffer_Buffer_Datatype __pyx_string_tab[12]
#define __pyx_kp_u_Callable_Buffer_Datatype_int_Buf __pyx_string_tab[13]
#define __pyx_kp_u_Callable_Comm_int_Any_Any_None __pyx_string_tab[14]
#define __pyx_kp_u_Callable_Comm_int_Any_None_None __pyx_string_tab[15]
#define __pyx_kp_u_Callable_Comm_int_None __pyx_string_tab[16]
#define __pyx_kp_u_Callable_Datatype_int __pyx_string_tab[17]
#define __pyx_kp_u_Callable_Datatype_int_Any_Any_No __pyx_string_tab[18]
#define __pyx_kp_u_Callable_Datatype_int_Any_None_N __pyx_string_tab[19]
#define __pyx_kp_u_Callable_File_int_None __pyx_string_tab[20]
#define __pyx_kp_u_Callable_None_None __pyx_string_tab[21]
#define __pyx_kp_u_Callable_Session_int_None __pyx_string_tab[22]
#define __pyx_kp_u_Callable_Win_int_Any_Any_None __pyx_string_tab[23]
#define __pyx_kp_u_Callable_Win_int_Any_None_None __pyx_string_tab[24]
#define __pyx_kp_u_Callable_Win_int_None __pyx_string_tab[25]
#define __pyx_kp_u_Datatype_None __pyx_string_tab[26]
#define __pyx_kp_u_Errhandler_None __pyx_string_tab[27]
#define __pyx_kp_u_Exception_class __pyx_string_tab[28]
#define __pyx_kp_u_Group_None __pyx_string_tab[29]
#define __pyx_kp_u_Hashable_None __pyx_string_tab[30]
#define __pyx_kp_u_Info_Mapping_str_str_Iterable_tu __pyx_string_tab[31]
#define __pyx_kp_u_Info_Mapping_str_str_Iterable_tu_2 __pyx_string_tab[32]
#define __pyx_kp_u_Info_None __pyx_string_tab[33]
#define __pyx_kp_u_Iterable_Buffer __pyx_string_tab[34]
#define __pyx_kp_u_Literal_True __pyx_string_tab[35]
#define __pyx_kp_u_MPI_Exception __pyx_string_tab[36]
#define __pyx_kp_u_MPI_Init_failed_error_code __pyx_string_tab[37]
#define __pyx_kp_u_MPI_Init_thread_failed_error_cod __pyx_string_tab[38]
#define __pyx_kp_u_Message_None __pyx_string_tab[39]
#define __pyx_kp_u_Message_Passing_Interface __pyx_string_tab[40]
#define __pyx_kp_u_None __pyx_string_tab[41]
#define __pyx_kp_u_Note_that_Cython_is_deliberately __pyx_string_tab[42]
#define __pyx_kp_u_Object_is_not_writable __pyx_string_tab[43]
#define __pyx_kp_u_Op_Callable_Any_Any_Any __pyx_string_tab[44]
#define __pyx_kp_u_PathLike_AnyStr_str_bytes __pyx_string_tab[45]
#define __pyx_kp_u_Self_None __pyx_string_tab[46]
#define __pyx_kp_u_Sequence_Any __pyx_string_tab[47]
#define __pyx_kp_u_Sequence_Any_None __pyx_string_tab[48]
#define __pyx_kp_u_Sequence_Datatype __pyx_string_tab[49]
#define __pyx_kp_u_Sequence_Info_Info __pyx_string_tab[50]
#define __pyx_kp_u_Sequence_PathLike_AnyStr_str_byt __pyx_string_tab[51]
#define __pyx_kp_u_Sequence_Request __pyx_string_tab[52]
#define __pyx_kp_u_Sequence_Sequence_str_None __pyx_string_tab[53]
#define __pyx_kp_u_Sequence_bool __pyx_string_tab[54]
#define __pyx_kp_u_Sequence_bool_None __pyx_string_tab[55]
#define __pyx_kp_u_Sequence_int __pyx_string_tab[56]
#define __pyx_kp_u_Sequence_int_None __pyx_string_tab[57]
#define __pyx_kp_u_Sequence_str_None __pyx_string_tab[58]
#define __pyx_kp_u_Sequence_tuple_int_int_int __pyx_string_tab[59]
#define __pyx_kp_u_Status_None __pyx_string_tab[60]
#define __pyx_kp_u_TargetSpec_None __pyx_string_tab[61]
#define __pyx_kp_u__135 __pyx_string_tab[62]
#define __pyx_kp_u__2 __pyx_string_tab[63]
#define __pyx_kp_u__3 __pyx_string_tab[64]
#define __pyx_kp_u__4 __pyx_string_tab[65]
#define __pyx_kp_u__5 __pyx_string_tab[66]
#define __pyx_kp_u__6 __pyx_string_tab[67]
#define __pyx_kp_u_add_note __pyx_string_tab[68]
#define __pyx_kp_u_and_counts __pyx_string_tab[69]
#define __pyx_kp_u_and_receive_count __pyx_string_tab[70]
#define __pyx_kp_u_and_sum_counts __pyx_string_tab[71]
#define __pyx_kp_u_bcast_p2p __pyx_string_tab[72]
#define __pyx_kp_u_buffer_is_not_CPU_accessible __pyx_string_tab[73]
#define __pyx_kp_u_buffer_is_read_only __pyx_string_tab[74]
#define __pyx_kp_u_cannot_call_user_defined_operati __pyx_string_tab[75]
#define __pyx_kp_u_cannot_create_too_many_user_defi __pyx_string_tab[76]
#define __pyx_kp_u_cannot_create_too_many_user_defi_2 __pyx_string_tab[77]
#define __pyx_kp_u_cannot_map __pyx_string_tab[78]
#define __pyx_kp_u_cannot_map_code __pyx_string_tab[79]
#define __pyx_kp_u_cannot_map_to_character_code_or __pyx_string_tab[80]
#define __pyx_kp_u_cannot_pickle_user_defined_reduc __pyx_string_tab[81]
#define __pyx_kp_u_cannot_serialize __pyx_string_tab[82]
#define __pyx_kp_u_commctx_inter __pyx_string_tab[83]
#define __pyx_kp_u_commctx_intra __pyx_string_tab[84]
#define __pyx_kp_u_compare_expecting_a_single_eleme __pyx_string_tab[85]
#define __pyx_kp_u_cuda_array_interface___buffer __pyx_string_tab[86]
#define __pyx_kp_u_cuda_array_interface___buffer_2 __pyx_string_tab[87]
#define __pyx_kp_u_cuda_array_interface___buffer_3 __pyx_string_tab[88]
#define __pyx_kp_u_cuda_array_interface___cannot __pyx_string_tab[89]
#define __pyx_kp_u_cuda_array_interface___typestr __pyx_string_tab[90]
#define __pyx_kp_u_dict_Hashable_Lock __pyx_string_tab[91]
#define __pyx_kp_u_dict_str_Any __pyx_string_tab[92]
#define __pyx_kp_u_dict_str_Any_None __pyx_string_tab[93]
#define __pyx_kp_u_dict_str_int __pyx_string_tab[94]
#define __pyx_kp_u_disable __pyx_string_tab[95]
#define __pyx_kp_u_dlpack_buffer_is_not_contiguous __pyx_string_tab[96]
#define __pyx_kp_u_dlpack_buffer_is_not_writable __pyx_string_tab[97]
#define __pyx_kp_u_dlpack_invalid_capsule_object __pyx_string_tab[98]
#define __pyx_kp_u_dlpack_missing_support __pyx_string_tab[99]
#define __pyx_kp_u_dlpack_number_of_dimensions_is_n __pyx_string_tab[100]
#define __pyx_kp_u_dlpack_shape_is_NULL __pyx_string_tab[101]
#define __pyx_kp_u_dlpack_shape_item_is_negative __pyx_string_tab[102]
#define __pyx_kp_u_dlpack_strides_item_is_negative __pyx_string_tab[103]
#define __pyx_kp_u_dlpack_unexpected_version __pyx_string_tab[104]
#define __pyx_kp_u_empty_weights_but_nonzero_degree __pyx_string_tab[105]
#define __pyx_kp_u_enable __pyx_string_tab[106]
#define __pyx_kp_u_error_code __pyx_string_tab[107]
#define __pyx_kp_u_expecting __pyx_string_tab[108]
#define __pyx_kp_u_expecting_a_Cartesian_communicat __pyx_string_tab[109]
#define __pyx_kp_u_expecting_a_distributed_graph_co __pyx_string_tab[110]
#define __pyx_kp_u_expecting_a_general_graph_commun __pyx_string_tab[111]
#define __pyx_kp_u_expecting_a_sequence_of_path_lik __pyx_string_tab[112]
#define __pyx_kp_u_expecting_a_topology_communicato __pyx_string_tab[113]
#define __pyx_kp_u_expecting_an_MPI_instance __pyx_string_tab[114]
#define __pyx_kp_u_expecting_an_MPI_type_or_instanc __pyx_string_tab[115]
#define __pyx_kp_u_expecting_an_intercommunicator __pyx_string_tab[116]
#define __pyx_kp_u_expecting_an_intracommunicator __pyx_string_tab[117]
#define __pyx_kp_u_expecting_buffer_with_format __pyx_string_tab[118]
#define __pyx_kp_u_expecting_non_NULL_address __pyx_string_tab[119]
#define __pyx_kp_u_expecting_non_negative_buffer_le __pyx_string_tab[120]
#define __pyx_kp_u_expecting_non_negative_size __pyx_string_tab[121]
#define __pyx_kp_u_flag_expecting_int_buffer_of_len __pyx_string_tab[122]
#define __pyx_kp_u_format_string __pyx_string_tab[123]
#define __pyx_kp_u_gc __pyx_string_tab[124]
#define __pyx_kp_u_got __pyx_string_tab[125]
#define __pyx_kp_u_index_must_be_integer_or_slice __pyx_string_tab[126]
#define __pyx_kp_u_index_out_of_range __pyx_string_tab[127]
#define __pyx_kp_u_instance __pyx_string_tab[128]
#define __pyx_kp_u_int_Any_None __pyx_string_tab[129]
#define __pyx_kp_u_int_None __pyx_string_tab[130]
#define __pyx_kp_u_int_Sequence_int __pyx_string_tab[131]
#define __pyx_kp_u_is_not_a_multiple_of_datatype_e __pyx_string_tab[132]
#define __pyx_kp_u_is_not_a_multiple_of_required_n __pyx_string_tab[133]
#define __pyx_kp_u_isenabled __pyx_string_tab[134]
#define __pyx_kp_u_items_got __pyx_string_tab[135]
#define __pyx_kp_u_itemsize __pyx_string_tab[136]
#define __pyx_kp_u_lb __pyx_string_tab[137]
#define __pyx_kp_u_length_count_does_not_fit_in_MPI __pyx_string_tab[138]
#define __pyx_kp_u_length_size_larger_than_INT_MAX __pyx_string_tab[139]
#define __pyx_kp_u_list_Any __pyx_string_tab[140]
#define __pyx_kp_u_list_Any_None __pyx_string_tab[141]
#define __pyx_kp_u_list_Prequest __pyx_string_tab[142]
#define __pyx_kp_u_list_Status_None __pyx_string_tab[143]
#define __pyx_kp_u_list_int __pyx_string_tab[144]
#define __pyx_kp_u_list_int_None __pyx_string_tab[145]
#define __pyx_kp_u_list_int_tuple_int __pyx_string_tab[146]
#define __pyx_kp_u_list_list_int_None __pyx_string_tab[147]
#define __pyx_kp_u_list_str __pyx_string_tab[148]
#define __pyx_kp_u_list_tuple_str_str __pyx_string_tab[149]
#define __pyx_kp_u_memory_allocation_size_too_large __pyx_string_tab[150]
#define __pyx_kp_u_memory_allocation_with_negative __pyx_string_tab[151]
#define __pyx_kp_u_message_BOTTOM_requires_counts __pyx_string_tab[152]
#define __pyx_kp_u_message_BOTTOM_requires_displs __pyx_string_tab[153]
#define __pyx_kp_u_message_buffer_is_None_but_count __pyx_string_tab[154]
#define __pyx_kp_u_message_cannot_handle_displaceme __pyx_string_tab[155]
#define __pyx_kp_u_message_cannot_handle_displaceme_2 __pyx_string_tab[156]
#define __pyx_kp_u_message_cannot_infer_count_buffe __pyx_string_tab[157]
#define __pyx_kp_u_message_cannot_infer_count_datat __pyx_string_tab[158]
#define __pyx_kp_u_message_cannot_infer_count_datat_2 __pyx_string_tab[159]
#define __pyx_kp_u_message_cannot_infer_count_numbe __pyx_string_tab[160]
#define __pyx_kp_u_message_displacement __pyx_string_tab[161]
#define __pyx_kp_u_message_expecting_2_to_4_items __pyx_string_tab[162]
#define __pyx_kp_u_message_expecting_buffer_or_list __pyx_string_tab[163]
#define __pyx_kp_u_message_negative_count __pyx_string_tab[164]
#define __pyx_kp_u_message_negative_displacement __pyx_string_tab[165]
#define __pyx_kp_u_mismatch_in_origin_and_compare_M __pyx_string_tab[166]
#define __pyx_kp_u_mismatch_in_origin_and_result_MP __pyx_string_tab[167]
#define __pyx_kp_u_mismatch_in_receive_count __pyx_string_tab[168]
#define __pyx_kp_u_mismatch_in_send_and_receive_MPI __pyx_string_tab[169]
#define __pyx_kp_u_mismatch_in_send_count __pyx_string_tab[170]
#define __pyx_kp_u_missing_CUDA_array_interface __pyx_string_tab[171]
#define __pyx_kp_u_mpi4py __pyx_string_tab[172]
#define __pyx_kp_u_org_mpi4py __pyx_string_tab[173]
#define __pyx_kp_u_origin_expecting_a_single_elemen __pyx_string_tab[174]
#define __pyx_kp_u_out_of_bounds_number_of_datatyp __pyx_string_tab[175]
#define __pyx_kp_u_result_expecting_a_single_elemen __pyx_string_tab[176]
#define __pyx_kp_u_size __pyx_string_tab[177]
#define __pyx_kp_u_slice_length_does_not_match_buff __pyx_string_tab[178]
#define __pyx_kp_u_slice_with_step_not_supported __pyx_string_tab[179]
#define __pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx __pyx_string_tab[180]
#define __pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx __pyx_string_tab[181]
#define __pyx_kp_u_src_mpi4py_MPI_src_Errhandler_py __pyx_string_tab[182]
#define __pyx_kp_u_src_mpi4py_MPI_src_ErrorCode_pyx __pyx_string_tab[183]
#define __pyx_kp_u_src_mpi4py_MPI_src_Exception_pyx __pyx_string_tab[184]
#define __pyx_kp_u_src_mpi4py_MPI_src_File_pyx __pyx_string_tab[185]
#define __pyx_kp_u_src_mpi4py_MPI_src_Group_pyx __pyx_string_tab[186]
#define __pyx_kp_u_src_mpi4py_MPI_src_Info_pyx __pyx_string_tab[187]
#define __pyx_kp_u_src_mpi4py_MPI_src_MPI_pyx __pyx_string_tab[188]
#define __pyx_kp_u_src_mpi4py_MPI_src_Message_pyx __pyx_string_tab[189]
#define __pyx_kp_u_src_mpi4py_MPI_src_Op_pyx __pyx_string_tab[190]
#define __pyx_kp_u_src_mpi4py_MPI_src_Request_pyx __pyx_string_tab[191]
#define __pyx_kp_u_src_mpi4py_MPI_src_Session_pyx __pyx_string_tab[192]
#define __pyx_kp_u_src_mpi4py_MPI_src_Status_pyx __pyx_string_tab[193]
#define __pyx_kp_u_src_mpi4py_MPI_src_Win_pyx __pyx_string_tab[194]
#define __pyx_kp_u_src_mpi4py_MPI_src_asbuffer_pxi __pyx_string_tab[195]
#define __pyx_kp_u_src_mpi4py_MPI_src_atimport_pxi __pyx_string_tab[196]
#define __pyx_kp_u_src_mpi4py_MPI_src_commimpl_pxi __pyx_string_tab[197]
#define __pyx_kp_u_src_mpi4py_MPI_src_constant_pxi __pyx_string_tab[198]
#define __pyx_kp_u_src_mpi4py_MPI_src_msgpickle_pxi __pyx_string_tab[199]
#define __pyx_kp_u_src_mpi4py_MPI_src_typedec_pxi __pyx_string_tab[200]
#define __pyx_kp_u_src_mpi4py_MPI_src_typestr_pxi __pyx_string_tab[201]
#define __pyx_kp_u_str_None __pyx_string_tab[202]
#define __pyx_kp_u_str_tuple_Any __pyx_string_tab[203]
#define __pyx_kp_u_strides_2 __pyx_string_tab[204]
#define __pyx_kp_u_target_expecting_3_items_at_most __pyx_string_tab[205]
#define __pyx_kp_u_target_expecting_integral_or_lis __pyx_string_tab[206]
#define __pyx_kp_u_to_MPI_datatype __pyx_string_tab[207]
#define __pyx_kp_u_tuple_Any_None __pyx_string_tab[208]
#define __pyx_kp_u_tuple_Any_tuple_Any_dict_str_Any __pyx_string_tab[209]
#define __pyx_kp_u_tuple_Comm_Request __pyx_string_tab[210]
#define __pyx_kp_u_tuple_Datatype_str_dict_str_Any __pyx_string_tab[211]
#define __pyx_kp_u_tuple_Intercomm_int_Intracomm_bo __pyx_string_tab[212]
#define __pyx_kp_u_tuple_Intracomm_int __pyx_string_tab[213]
#define __pyx_kp_u_tuple_Self_Request __pyx_string_tab[214]
#define __pyx_kp_u_tuple_bool_Any_None __pyx_string_tab[215]
#define __pyx_kp_u_tuple_bool_list_Any_None __pyx_string_tab[216]
#define __pyx_kp_u_tuple_buffer_int __pyx_string_tab[217]
#define __pyx_kp_u_tuple_bytes_list_buffer __pyx_string_tab[218]
#define __pyx_kp_u_tuple_int_Any __pyx_string_tab[219]
#define __pyx_kp_u_tuple_int_Datatype_Datatype_str __pyx_string_tab[220]
#define __pyx_kp_u_tuple_int_bool __pyx_string_tab[221]
#define __pyx_kp_u_tuple_int_bool_Any_None __pyx_string_tab[222]
#define __pyx_kp_u_tuple_int_int __pyx_string_tab[223]
#define __pyx_kp_u_tuple_int_int_int_int_int __pyx_string_tab[224]
#define __pyx_kp_u_tuple_list_int_None_list_Any_Non __pyx_string_tab[225]
#define __pyx_kp_u_tuple_list_int_list_int __pyx_string_tab[226]
#define __pyx_kp_u_tuple_list_int_list_int_list_int __pyx_string_tab[227]
#define __pyx_kp_u_tuple_list_int_list_int_list_int_2 __pyx_string_tab[228]
#define __pyx_kp_u_tuple_list_int_list_int_tuple_li __pyx_string_tab[229]
#define __pyx_kp_u_tuple_str_str __pyx_string_tab[230]
#define __pyx_kp_u_tuple_str_tuple_int_int_int __pyx_string_tab[231]
#define __pyx_kp_u_ub __pyx_string_tab[232]
#define __pyx_kp_u_unknown_combiner_value __pyx_string_tab[233]
#define __pyx_kp_u_unorderable_type __pyx_string_tab[234]
#define __pyx_kp_u_with_non_native_byte_order __pyx_string_tab[235]
#define __pyx_kp_u_with_unrecognized_byte_order __pyx_string_tab[236]
#define __pyx_n_u_ __pyx_string_tab[237]
#define __pyx_n_u_AINT __pyx_string_tab[238]
#define __pyx_n_u_ANY_SOURCE __pyx_string_tab[239]
#define __pyx_n_u_ANY_TAG __pyx_string_tab[240]
#define __pyx_n_u_APPNUM __pyx_string_tab[241]
#define __pyx_n_u_Abort __pyx_string_tab[242]
#define __pyx_n_u_Accept __pyx_string_tab[243]
#define __pyx_n_u_Accumulate __pyx_string_tab[244]
#define __pyx_n_u_Ack_failed __pyx_string_tab[245]
#define __pyx_n_u_Add_error_class __pyx_string_tab[246]
#define __pyx_n_u_Add_error_code __pyx_string_tab[247]
#define __pyx_n_u_Add_error_string __pyx_string_tab[248]
#define __pyx_n_u_Agree __pyx_string_tab[249]
#define __pyx_n_u_Aint_add __pyx_string_tab[250]
#define __pyx_n_u_Aint_diff __pyx_string_tab[251]
#define __pyx_n_u_Allgather __pyx_string_tab[252]
#define __pyx_n_u_Allgather_init __pyx_string_tab[253]
#define __pyx_n_u_Allgatherv __pyx_string_tab[254]
#define __pyx_n_u_Allgatherv_init __pyx_string_tab[255]
#define __pyx_n_u_Alloc_mem __pyx_string_tab[256]
#define __pyx_n_u_Allocate __pyx_string_tab[257]
#define __pyx_n_u_Allocate_shared __pyx_string_tab[258]
#define __pyx_n_u_Allreduce __pyx_string_tab[259]
#define __pyx_n_u_Allreduce_init __pyx_string_tab[260]
#define __pyx_n_u_Alltoall __pyx_string_tab[261]
#define __pyx_n_u_Alltoall_init __pyx_string_tab[262]
#define __pyx_n_u_Alltoallv __pyx_string_tab[263]
#define __pyx_n_u_Alltoallv_init __pyx_string_tab[264]
#define __pyx_n_u_Alltoallw __pyx_string_tab[265]
#define __pyx_n_u_Alltoallw_init __pyx_string_tab[266]
#define __pyx_n_u_Any __pyx_string_tab[267]
#define __pyx_n_u_Attach __pyx_string_tab[268]
#define __pyx_n_u_Attach_buffer __pyx_string_tab[269]
#define __pyx_n_u_BAND __pyx_string_tab[270]
#define __pyx_n_u_BFLOAT16_T __pyx_string_tab[271]
#define __pyx_n_u_BOOL __pyx_string_tab[272]
#define __pyx_n_u_BOR __pyx_string_tab[273]
#define __pyx_n_u_BOTTOM __pyx_string_tab[274]
#define __pyx_n_u_BSEND_OVERHEAD __pyx_string_tab[275]
#define __pyx_n_u_BUFFER_AUTOMATIC __pyx_string_tab[276]
#define __pyx_n_u_BXOR __pyx_string_tab[277]
#define __pyx_n_u_BYTE __pyx_string_tab[278]
#define __pyx_n_u_Barrier __pyx_string_tab[279]
#define __pyx_n_u_Barrier_init __pyx_string_tab[280]
#define __pyx_n_u_Bcast __pyx_string_tab[281]
#define __pyx_n_u_Bcast_init __pyx_string_tab[282]
#define __pyx_n_u_BottomType __pyx_string_tab[283]
#define __pyx_n_u_BottomType___reduce __pyx_string_tab[284]
#define __pyx_n_u_Bsend __pyx_string_tab[285]
#define __pyx_n_u_Bsend_init __pyx_string_tab[286]
#define __pyx_n_u_BufSpec __pyx_string_tab[287]
#define __pyx_n_u_BufSpecB __pyx_string_tab[288]
#define __pyx_n_u_BufSpecV __pyx_string_tab[289]
#define __pyx_n_u_BufSpecW __pyx_string_tab[290]
#define __pyx_n_u_Buffer __pyx_string_tab[291]
#define __pyx_n_u_BufferAutomaticType __pyx_string_tab[292]
#define __pyx_n_u_BufferAutomaticType___reduce __pyx_string_tab[293]
#define __pyx_n_u_CART __pyx_string_tab[294]
#define __pyx_n_u_CHAR __pyx_string_tab[295]
#define __pyx_n_u_CHARACTER __pyx_string_tab[296]
#define __pyx_n_u_COMBINER_CONTIGUOUS __pyx_string_tab[297]
#define __pyx_n_u_COMBINER_DARRAY __pyx_string_tab[298]
#define __pyx_n_u_COMBINER_DUP __pyx_string_tab[299]
#define __pyx_n_u_COMBINER_F90_COMPLEX __pyx_string_tab[300]
#define __pyx_n_u_COMBINER_F90_INTEGER __pyx_string_tab[301]
#define __pyx_n_u_COMBINER_F90_REAL __pyx_string_tab[302]
#define __pyx_n_u_COMBINER_HINDEXED __pyx_string_tab[303]
#define __pyx_n_u_COMBINER_HINDEXED_BLOCK __pyx_string_tab[304]
#define __pyx_n_u_COMBINER_HVECTOR __pyx_string_tab[305]
#define __pyx_n_u_COMBINER_INDEXED __pyx_string_tab[306]
#define __pyx_n_u_COMBINER_INDEXED_BLOCK __pyx_string_tab[307]
#define __pyx_n_u_COMBINER_NAMED __pyx_string_tab[308]
#define __pyx_n_u_COMBINER_RESIZED __pyx_string_tab[309]
#define __pyx_n_u_COMBINER_STRUCT __pyx_string_tab[310]
#define __pyx_n_u_COMBINER_SUBARRAY __pyx_string_tab[311]
#define __pyx_n_u_COMBINER_VALUE_INDEX __pyx_string_tab[312]
#define __pyx_n_u_COMBINER_VECTOR __pyx_string_tab[313]
#define __pyx_n_u_COMM_NULL __pyx_string_tab[314]
#define __pyx_n_u_COMM_SELF __pyx_string_tab[315]
#define __pyx_n_u_COMM_TYPE_HW_GUIDED __pyx_string_tab[316]
#define __pyx_n_u_COMM_TYPE_HW_UNGUIDED __pyx_string_tab[317]
#define __pyx_n_u_COMM_TYPE_RESOURCE_GUIDED __pyx_string_tab[318]
#define __pyx_n_u_COMM_TYPE_SHARED __pyx_string_tab[319]
#define __pyx_n_u_COMM_WORLD __pyx_string_tab[320]
#define __pyx_n_u_COMPLEX __pyx_string_tab[321]
#define __pyx_n_u_COMPLEX16 __pyx_string_tab[322]
#define __pyx_n_u_COMPLEX32 __pyx_string_tab[323]
#define __pyx_n_u_COMPLEX4 __pyx_string_tab[324]
#define __pyx_n_u_COMPLEX8 __pyx_string_tab[325]
#define __pyx_n_u_CONGRUENT __pyx_string_tab[326]
#define __pyx_n_u_CONTIGUOUS __pyx_string_tab[327]
#define __pyx_n_u_COUNT __pyx_string_tab[328]
#define __pyx_n_u_CXX_BOOL __pyx_string_tab[329]
#define __pyx_n_u_CXX_DOUBLE_COMPLEX __pyx_string_tab[330]
#define __pyx_n_u_CXX_FLOAT_COMPLEX __pyx_string_tab[331]
#define __pyx_n_u_CXX_LONG_DOUBLE_COMPLEX __pyx_string_tab[332]
#define __pyx_n_u_C_BOOL __pyx_string_tab[333]
#define __pyx_n_u_C_COMPLEX __pyx_string_tab[334]
#define __pyx_n_u_C_DOUBLE_COMPLEX __pyx_string_tab[335]
#define __pyx_n_u_C_FLOAT_COMPLEX __pyx_string_tab[336]
#define __pyx_n_u_C_LONG_DOUBLE_COMPLEX __pyx_string_tab[337]
#define __pyx_n_u_Call_errhandler __pyx_string_tab[338]
#define __pyx_n_u_Cancel __pyx_string_tab[339]
#define __pyx_n_u_Cart_map __pyx_string_tab[340]
#define __pyx_n_u_Cartcomm __pyx_string_tab[341]
#define __pyx_n_u_Cartcomm_Get_cart_rank __pyx_string_tab[342]
#define __pyx_n_u_Cartcomm_Get_coords __pyx_string_tab[343]
#define __pyx_n_u_Cartcomm_Get_dim __pyx_string_tab[344]
#define __pyx_n_u_Cartcomm_Get_topo __pyx_string_tab[345]
#define __pyx_n_u_Cartcomm_Shift __pyx_string_tab[346]
#define __pyx_n_u_Cartcomm_Sub __pyx_string_tab[347]
#define __pyx_n_u_Clone __pyx_string_tab[348]
#define __pyx_n_u_Close __pyx_string_tab[349]
#define __pyx_n_u_Close_port __pyx_string_tab[350]
#define __pyx_n_u_Comm __pyx_string_tab[351]
#define __pyx_n_u_Comm_Abort __pyx_string_tab[352]
#define __pyx_n_u_Comm_Ack_failed __pyx_string_tab[353]
#define __pyx_n_u_Comm_Agree __pyx_string_tab[354]
#define __pyx_n_u_Comm_Allgather __pyx_string_tab[355]
#define __pyx_n_u_Comm_Allgather_init __pyx_string_tab[356]
#define __pyx_n_u_Comm_Allgatherv __pyx_string_tab[357]
#define __pyx_n_u_Comm_Allgatherv_init __pyx_string_tab[358]
#define __pyx_n_u_Comm_Allreduce __pyx_string_tab[359]
#define __pyx_n_u_Comm_Allreduce_init __pyx_string_tab[360]
#define __pyx_n_u_Comm_Alltoall __pyx_string_tab[361]
#define __pyx_n_u_Comm_Alltoall_init __pyx_string_tab[362]
#define __pyx_n_u_Comm_Alltoallv __pyx_string_tab[363]
#define __pyx_n_u_Comm_Alltoallv_init __pyx_string_tab[364]
#define __pyx_n_u_Comm_Alltoallw __pyx_string_tab[365]
#define __pyx_n_u_Comm_Alltoallw_init __pyx_string_tab[366]
#define __pyx_n_u_Comm_Attach_buffer __pyx_string_tab[367]
#define __pyx_n_u_Comm_Barrier __pyx_string_tab[368]
#define __pyx_n_u_Comm_Barrier_init __pyx_string_tab[369]
#define __pyx_n_u_Comm_Bcast __pyx_string_tab[370]
#define __pyx_n_u_Comm_Bcast_init __pyx_string_tab[371]
#define __pyx_n_u_Comm_Bsend __pyx_string_tab[372]
#define __pyx_n_u_Comm_Bsend_init __pyx_string_tab[373]
#define __pyx_n_u_Comm_Call_errhandler __pyx_string_tab[374]
#define __pyx_n_u_Comm_Clone __pyx_string_tab[375]
#define __pyx_n_u_Comm_Compare __pyx_string_tab[376]
#define __pyx_n_u_Comm_Create __pyx_string_tab[377]
#define __pyx_n_u_Comm_Create_errhandler __pyx_string_tab[378]
#define __pyx_n_u_Comm_Create_keyval __pyx_string_tab[379]
#define __pyx_n_u_Comm_Delete_attr __pyx_string_tab[380]
#define __pyx_n_u_Comm_Detach_buffer __pyx_string_tab[381]
#define __pyx_n_u_Comm_Disconnect __pyx_string_tab[382]
#define __pyx_n_u_Comm_Dup __pyx_string_tab[383]
#define __pyx_n_u_Comm_Dup_with_info __pyx_string_tab[384]
#define __pyx_n_u_Comm_Flush_buffer __pyx_string_tab[385]
#define __pyx_n_u_Comm_Free __pyx_string_tab[386]
#define __pyx_n_u_Comm_Free_keyval __pyx_string_tab[387]
#define __pyx_n_u_Comm_Gather __pyx_string_tab[388]
#define __pyx_n_u_Comm_Gather_init __pyx_string_tab[389]
#define __pyx_n_u_Comm_Gatherv __pyx_string_tab[390]
#define __pyx_n_u_Comm_Gatherv_init __pyx_string_tab[391]
#define __pyx_n_u_Comm_Get_attr __pyx_string_tab[392]
#define __pyx_n_u_Comm_Get_errhandler __pyx_string_tab[393]
#define __pyx_n_u_Comm_Get_failed __pyx_string_tab[394]
#define __pyx_n_u_Comm_Get_group __pyx_string_tab[395]
#define __pyx_n_u_Comm_Get_info __pyx_string_tab[396]
#define __pyx_n_u_Comm_Get_name __pyx_string_tab[397]
#define __pyx_n_u_Comm_Get_parent __pyx_string_tab[398]
#define __pyx_n_u_Comm_Get_rank __pyx_string_tab[399]
#define __pyx_n_u_Comm_Get_size __pyx_string_tab[400]
#define __pyx_n_u_Comm_Get_topology __pyx_string_tab[401]
#define __pyx_n_u_Comm_Iagree __pyx_string_tab[402]
#define __pyx_n_u_Comm_Iallgather __pyx_string_tab[403]
#define __pyx_n_u_Comm_Iallgatherv __pyx_string_tab[404]
#define __pyx_n_u_Comm_Iallreduce __pyx_string_tab[405]
#define __pyx_n_u_Comm_Ialltoall __pyx_string_tab[406]
#define __pyx_n_u_Comm_Ialltoallv __pyx_string_tab[407]
#define __pyx_n_u_Comm_Ialltoallw __pyx_string_tab[408]
#define __pyx_n_u_Comm_Ibarrier __pyx_string_tab[409]
#define __pyx_n_u_Comm_Ibcast __pyx_string_tab[410]
#define __pyx_n_u_Comm_Ibsend __pyx_string_tab[411]
#define __pyx_n_u_Comm_Idup __pyx_string_tab[412]
#define __pyx_n_u_Comm_Idup_with_info __pyx_string_tab[413]
#define __pyx_n_u_Comm_Iflush_buffer __pyx_string_tab[414]
#define __pyx_n_u_Comm_Igather __pyx_string_tab[415]
#define __pyx_n_u_Comm_Igatherv __pyx_string_tab[416]
#define __pyx_n_u_Comm_Improbe __pyx_string_tab[417]
#define __pyx_n_u_Comm_Iprobe __pyx_string_tab[418]
#define __pyx_n_u_Comm_Irecv __pyx_string_tab[419]
#define __pyx_n_u_Comm_Ireduce __pyx_string_tab[420]
#define __pyx_n_u_Comm_Ireduce_scatter __pyx_string_tab[421]
#define __pyx_n_u_Comm_Ireduce_scatter_block __pyx_string_tab[422]
#define __pyx_n_u_Comm_Irsend __pyx_string_tab[423]
#define __pyx_n_u_Comm_Is_inter __pyx_string_tab[424]
#define __pyx_n_u_Comm_Is_intra __pyx_string_tab[425]
#define __pyx_n_u_Comm_Is_revoked __pyx_string_tab[426]
#define __pyx_n_u_Comm_Iscatter __pyx_string_tab[427]
#define __pyx_n_u_Comm_Iscatterv __pyx_string_tab[428]
#define __pyx_n_u_Comm_Isend __pyx_string_tab[429]
#define __pyx_n_u_Comm_Isendrecv __pyx_string_tab[430]
#define __pyx_n_u_Comm_Isendrecv_replace __pyx_string_tab[431]
#define __pyx_n_u_Comm_Ishrink __pyx_string_tab[432]
#define __pyx_n_u_Comm_Issend __pyx_string_tab[433]
#define __pyx_n_u_Comm_Join __pyx_string_tab[434]
#define __pyx_n_u_Comm_Mprobe __pyx_string_tab[435]
#define __pyx_n_u_Comm_Precv_init __pyx_string_tab[436]
#define __pyx_n_u_Comm_Probe __pyx_string_tab[437]
#define __pyx_n_u_Comm_Psend_init __pyx_string_tab[438]
#define __pyx_n_u_Comm_Recv __pyx_string_tab[439]
#define __pyx_n_u_Comm_Recv_init __pyx_string_tab[440]
#define __pyx_n_u_Comm_Reduce __pyx_string_tab[441]
#define __pyx_n_u_Comm_Reduce_init __pyx_string_tab[442]
#define __pyx_n_u_Comm_Reduce_scatter __pyx_string_tab[443]
#define __pyx_n_u_Comm_Reduce_scatter_block __pyx_string_tab[444]
#define __pyx_n_u_Comm_Reduce_scatter_block_init __pyx_string_tab[445]
#define __pyx_n_u_Comm_Reduce_scatter_init __pyx_string_tab[446]
#define __pyx_n_u_Comm_Revoke __pyx_string_tab[447]
#define __pyx_n_u_Comm_Rsend __pyx_string_tab[448]
#define __pyx_n_u_Comm_Rsend_init __pyx_string_tab[449]
#define __pyx_n_u_Comm_Scatter __pyx_string_tab[450]
#define __pyx_n_u_Comm_Scatter_init __pyx_string_tab[451]
#define __pyx_n_u_Comm_Scatterv __pyx_string_tab[452]
#define __pyx_n_u_Comm_Scatterv_init __pyx_string_tab[453]
#define __pyx_n_u_Comm_Send __pyx_string_tab[454]
#define __pyx_n_u_Comm_Send_init __pyx_string_tab[455]
#define __pyx_n_u_Comm_Sendrecv __pyx_string_tab[456]
#define __pyx_n_u_Comm_Sendrecv_replace __pyx_string_tab[457]
#define __pyx_n_u_Comm_Set_attr __pyx_string_tab[458]
#define __pyx_n_u_Comm_Set_errhandler __pyx_string_tab[459]
#define __pyx_n_u_Comm_Set_info __pyx_string_tab[460]
#define __pyx_n_u_Comm_Set_name __pyx_string_tab[461]
#define __pyx_n_u_Comm_Shrink __pyx_string_tab[462]
#define __pyx_n_u_Comm_Split __pyx_string_tab[463]
#define __pyx_n_u_Comm_Split_type __pyx_string_tab[464]
#define __pyx_n_u_Comm_Ssend __pyx_string_tab[465]
#define __pyx_n_u_Comm_Ssend_init __pyx_string_tab[466]
#define __pyx_n_u_Comm___reduce __pyx_string_tab[467]
#define __pyx_n_u_Comm_allgather __pyx_string_tab[468]
#define __pyx_n_u_Comm_allreduce __pyx_string_tab[469]
#define __pyx_n_u_Comm_alltoall __pyx_string_tab[470]
#define __pyx_n_u_Comm_barrier __pyx_string_tab[471]
#define __pyx_n_u_Comm_bcast __pyx_string_tab[472]
#define __pyx_n_u_Comm_bsend __pyx_string_tab[473]
#define __pyx_n_u_Comm_f2py __pyx_string_tab[474]
#define __pyx_n_u_Comm_free __pyx_string_tab[475]
#define __pyx_n_u_Comm_fromhandle __pyx_string_tab[476]
#define __pyx_n_u_Comm_fromint __pyx_string_tab[477]
#define __pyx_n_u_Comm_gather __pyx_string_tab[478]
#define __pyx_n_u_Comm_ibsend __pyx_string_tab[479]
#define __pyx_n_u_Comm_improbe __pyx_string_tab[480]
#define __pyx_n_u_Comm_iprobe __pyx_string_tab[481]
#define __pyx_n_u_Comm_irecv __pyx_string_tab[482]
#define __pyx_n_u_Comm_isend __pyx_string_tab[483]
#define __pyx_n_u_Comm_issend __pyx_string_tab[484]
#define __pyx_n_u_Comm_mprobe __pyx_string_tab[485]
#define __pyx_n_u_Comm_probe __pyx_string_tab[486]
#define __pyx_n_u_Comm_py2f __pyx_string_tab[487]
#define __pyx_n_u_Comm_recv __pyx_string_tab[488]
#define __pyx_n_u_Comm_reduce __pyx_string_tab[489]
#define __pyx_n_u_Comm_scatter __pyx_string_tab[490]
#define __pyx_n_u_Comm_send __pyx_string_tab[491]
#define __pyx_n_u_Comm_sendrecv __pyx_string_tab[492]
#define __pyx_n_u_Comm_ssend __pyx_string_tab[493]
#define __pyx_n_u_Comm_toint __pyx_string_tab[494]
#define __pyx_n_u_Commit __pyx_string_tab[495]
#define __pyx_n_u_Compare __pyx_string_tab[496]
#define __pyx_n_u_Compare_and_swap __pyx_string_tab[497]
#define __pyx_n_u_Complete __pyx_string_tab[498]
#define __pyx_n_u_Compute_dims __pyx_string_tab[499]
#define __pyx_n_u_Connect __pyx_string_tab[500]
#define __pyx_n_u_Create __pyx_string_tab[501]
#define __pyx_n_u_Create_2 __pyx_string_tab[502]
#define __pyx_n_u_Create_cart __pyx_string_tab[503]
#define __pyx_n_u_Create_contiguous __pyx_string_tab[504]
#define __pyx_n_u_Create_darray __pyx_string_tab[505]
#define __pyx_n_u_Create_dist_graph __pyx_string_tab[506]
#define __pyx_n_u_Create_dist_graph_adjacent __pyx_string_tab[507]
#define __pyx_n_u_Create_dup __pyx_string_tab[508]
#define __pyx_n_u_Create_dynamic __pyx_string_tab[509]
#define __pyx_n_u_Create_env __pyx_string_tab[510]
#define __pyx_n_u_Create_errhandler __pyx_string_tab[511]
#define __pyx_n_u_Create_f90_complex __pyx_string_tab[512]
#define __pyx_n_u_Create_f90_integer __pyx_string_tab[513]
#define __pyx_n_u_Create_f90_real __pyx_string_tab[514]
#define __pyx_n_u_Create_from_group __pyx_string_tab[515]
#define __pyx_n_u_Create_from_groups __pyx_string_tab[516]
#define __pyx_n_u_Create_from_session_pset __pyx_string_tab[517]
#define __pyx_n_u_Create_graph __pyx_string_tab[518]
#define __pyx_n_u_Create_group __pyx_string_tab[519]
#define __pyx_n_u_Create_hindexed __pyx_string_tab[520]
#define __pyx_n_u_Create_hindexed_block __pyx_string_tab[521]
#define __pyx_n_u_Create_hvector __pyx_string_tab[522]
#define __pyx_n_u_Create_indexed __pyx_string_tab[523]
#define __pyx_n_u_Create_indexed_block __pyx_string_tab[524]
#define __pyx_n_u_Create_intercomm __pyx_string_tab[525]
#define __pyx_n_u_Create_keyval __pyx_string_tab[526]
#define __pyx_n_u_Create_resized __pyx_string_tab[527]
#define __pyx_n_u_Create_struct __pyx_string_tab[528]
#define __pyx_n_u_Create_subarray __pyx_string_tab[529]
#define __pyx_n_u_Create_vector __pyx_string_tab[530]
#define __pyx_n_u_DARRAY __pyx_string_tab[531]
#define __pyx_n_u_DATATYPE_NULL __pyx_string_tab[532]
#define __pyx_n_u_DISPLACEMENT_CURRENT __pyx_string_tab[533]
#define __pyx_n_u_DISP_CUR __pyx_string_tab[534]
#define __pyx_n_u_DISTRIBUTE_BLOCK __pyx_string_tab[535]
#define __pyx_n_u_DISTRIBUTE_CYCLIC __pyx_string_tab[536]
#define __pyx_n_u_DISTRIBUTE_DFLT_DARG __pyx_string_tab[537]
#define __pyx_n_u_DISTRIBUTE_NONE __pyx_string_tab[538]
#define __pyx_n_u_DIST_GRAPH __pyx_string_tab[539]
#define __pyx_n_u_DOUBLE __pyx_string_tab[540]
#define __pyx_n_u_DOUBLE_COMPLEX __pyx_string_tab[541]
#define __pyx_n_u_DOUBLE_INT __pyx_string_tab[542]
#define __pyx_n_u_DOUBLE_PRECISION __pyx_string_tab[543]
#define __pyx_n_u_DUP __pyx_string_tab[544]
#define __pyx_n_u_Datatype __pyx_string_tab[545]
#define __pyx_n_u_Datatype_Commit __pyx_string_tab[546]
#define __pyx_n_u_Datatype_Create_contiguous __pyx_string_tab[547]
#define __pyx_n_u_Datatype_Create_darray __pyx_string_tab[548]
#define __pyx_n_u_Datatype_Create_f90_complex __pyx_string_tab[549]
#define __pyx_n_u_Datatype_Create_f90_integer __pyx_string_tab[550]
#define __pyx_n_u_Datatype_Create_f90_real __pyx_string_tab[551]
#define __pyx_n_u_Datatype_Create_hindexed __pyx_string_tab[552]
#define __pyx_n_u_Datatype_Create_hindexed_block __pyx_string_tab[553]
#define __pyx_n_u_Datatype_Create_hvector __pyx_string_tab[554]
#define __pyx_n_u_Datatype_Create_indexed __pyx_string_tab[555]
#define __pyx_n_u_Datatype_Create_indexed_block __pyx_string_tab[556]
#define __pyx_n_u_Datatype_Create_keyval __pyx_string_tab[557]
#define __pyx_n_u_Datatype_Create_resized __pyx_string_tab[558]
#define __pyx_n_u_Datatype_Create_struct __pyx_string_tab[559]
#define __pyx_n_u_Datatype_Create_subarray __pyx_string_tab[560]
#define __pyx_n_u_Datatype_Create_vector __pyx_string_tab[561]
#define __pyx_n_u_Datatype_Delete_attr __pyx_string_tab[562]
#define __pyx_n_u_Datatype_Dup __pyx_string_tab[563]
#define __pyx_n_u_Datatype_Free __pyx_string_tab[564]
#define __pyx_n_u_Datatype_Free_keyval __pyx_string_tab[565]
#define __pyx_n_u_Datatype_Get_attr __pyx_string_tab[566]
#define __pyx_n_u_Datatype_Get_contents __pyx_string_tab[567]
#define __pyx_n_u_Datatype_Get_envelope __pyx_string_tab[568]
#define __pyx_n_u_Datatype_Get_extent __pyx_string_tab[569]
#define __pyx_n_u_Datatype_Get_name __pyx_string_tab[570]
#define __pyx_n_u_Datatype_Get_size __pyx_string_tab[571]
#define __pyx_n_u_Datatype_Get_true_extent __pyx_string_tab[572]
#define __pyx_n_u_Datatype_Get_value_index __pyx_string_tab[573]
#define __pyx_n_u_Datatype_Match_size __pyx_string_tab[574]
#define __pyx_n_u_Datatype_Pack __pyx_string_tab[575]
#define __pyx_n_u_Datatype_Pack_external __pyx_string_tab[576]
#define __pyx_n_u_Datatype_Pack_external_size __pyx_string_tab[577]
#define __pyx_n_u_Datatype_Pack_size __pyx_string_tab[578]
#define __pyx_n_u_Datatype_Set_attr __pyx_string_tab[579]
#define __pyx_n_u_Datatype_Set_name __pyx_string_tab[580]
#define __pyx_n_u_Datatype_Unpack __pyx_string_tab[581]
#define __pyx_n_u_Datatype_Unpack_external __pyx_string_tab[582]
#define __pyx_n_u_Datatype___reduce __pyx_string_tab[583]
#define __pyx_n_u_Datatype_decode __pyx_string_tab[584]
#define __pyx_n_u_Datatype_f2py __pyx_string_tab[585]
#define __pyx_n_u_Datatype_free __pyx_string_tab[586]
#define __pyx_n_u_Datatype_fromcode __pyx_string_tab[587]
#define __pyx_n_u_Datatype_fromhandle __pyx_string_tab[588]
#define __pyx_n_u_Datatype_fromint __pyx_string_tab[589]
#define __pyx_n_u_Datatype_py2f __pyx_string_tab[590]
#define __pyx_n_u_Datatype_tocode __pyx_string_tab[591]
#define __pyx_n_u_Datatype_toint __pyx_string_tab[592]
#define __pyx_n_u_Delete __pyx_string_tab[593]
#define __pyx_n_u_Delete_attr __pyx_string_tab[594]
#define __pyx_n_u_Detach __pyx_string_tab[595]
#define __pyx_n_u_Detach_buffer __pyx_string_tab[596]
#define __pyx_n_u_Difference __pyx_string_tab[597]
#define __pyx_n_u_Disconnect __pyx_string_tab[598]
#define __pyx_n_u_Distgraphcomm __pyx_string_tab[599]
#define __pyx_n_u_Distgraphcomm_Get_dist_neighbors __pyx_string_tab[600]
#define __pyx_n_u_Distgraphcomm_Get_dist_neighbors_2 __pyx_string_tab[601]
#define __pyx_n_u_Dup __pyx_string_tab[602]
#define __pyx_n_u_Dup_with_info __pyx_string_tab[603]
#define __pyx_n_u_ERRHANDLER_NULL __pyx_string_tab[604]
#define __pyx_n_u_ERRORS_ABORT __pyx_string_tab[605]
#define __pyx_n_u_ERRORS_ARE_FATAL __pyx_string_tab[606]
#define __pyx_n_u_ERRORS_RETURN __pyx_string_tab[607]
#define __pyx_n_u_ERR_ABI __pyx_string_tab[608]
#define __pyx_n_u_ERR_ACCESS __pyx_string_tab[609]
#define __pyx_n_u_ERR_AMODE __pyx_string_tab[610]
#define __pyx_n_u_ERR_ARG __pyx_string_tab[611]
#define __pyx_n_u_ERR_ASSERT __pyx_string_tab[612]
#define __pyx_n_u_ERR_BAD_FILE __pyx_string_tab[613]
#define __pyx_n_u_ERR_BASE __pyx_string_tab[614]
#define __pyx_n_u_ERR_BUFFER __pyx_string_tab[615]
#define __pyx_n_u_ERR_COMM __pyx_string_tab[616]
#define __pyx_n_u_ERR_CONVERSION __pyx_string_tab[617]
#define __pyx_n_u_ERR_COUNT __pyx_string_tab[618]
#define __pyx_n_u_ERR_DIMS __pyx_string_tab[619]
#define __pyx_n_u_ERR_DISP __pyx_string_tab[620]
#define __pyx_n_u_ERR_DUP_DATAREP __pyx_string_tab[621]
#define __pyx_n_u_ERR_ERRHANDLER __pyx_string_tab[622]
#define __pyx_n_u_ERR_FILE __pyx_string_tab[623]
#define __pyx_n_u_ERR_FILE_EXISTS __pyx_string_tab[624]
#define __pyx_n_u_ERR_FILE_IN_USE __pyx_string_tab[625]
#define __pyx_n_u_ERR_GROUP __pyx_string_tab[626]
#define __pyx_n_u_ERR_INFO __pyx_string_tab[627]
#define __pyx_n_u_ERR_INFO_KEY __pyx_string_tab[628]
#define __pyx_n_u_ERR_INFO_NOKEY __pyx_string_tab[629]
#define __pyx_n_u_ERR_INFO_VALUE __pyx_string_tab[630]
#define __pyx_n_u_ERR_INTERN __pyx_string_tab[631]
#define __pyx_n_u_ERR_IN_STATUS __pyx_string_tab[632]
#define __pyx_n_u_ERR_IO __pyx_string_tab[633]
#define __pyx_n_u_ERR_KEYVAL __pyx_string_tab[634]
#define __pyx_n_u_ERR_LASTCODE __pyx_string_tab[635]
#define __pyx_n_u_ERR_LOCKTYPE __pyx_string_tab[636]
#define __pyx_n_u_ERR_NAME __pyx_string_tab[637]
#define __pyx_n_u_ERR_NOT_SAME __pyx_string_tab[638]
#define __pyx_n_u_ERR_NO_MEM __pyx_string_tab[639]
#define __pyx_n_u_ERR_NO_SPACE __pyx_string_tab[640]
#define __pyx_n_u_ERR_NO_SUCH_FILE __pyx_string_tab[641]
#define __pyx_n_u_ERR_OP __pyx_string_tab[642]
#define __pyx_n_u_ERR_OTHER __pyx_string_tab[643]
#define __pyx_n_u_ERR_PENDING __pyx_string_tab[644]
#define __pyx_n_u_ERR_PORT __pyx_string_tab[645]
#define __pyx_n_u_ERR_PROC_ABORTED __pyx_string_tab[646]
#define __pyx_n_u_ERR_PROC_FAILED __pyx_string_tab[647]
#define __pyx_n_u_ERR_PROC_FAILED_PENDING __pyx_string_tab[648]
#define __pyx_n_u_ERR_QUOTA __pyx_string_tab[649]
#define __pyx_n_u_ERR_RANK __pyx_string_tab[650]
#define __pyx_n_u_ERR_READ_ONLY __pyx_string_tab[651]
#define __pyx_n_u_ERR_REQUEST __pyx_string_tab[652]
#define __pyx_n_u_ERR_REVOKED __pyx_string_tab[653]
#define __pyx_n_u_ERR_RMA_ATTACH __pyx_string_tab[654]
#define __pyx_n_u_ERR_RMA_CONFLICT __pyx_string_tab[655]
#define __pyx_n_u_ERR_RMA_FLAVOR __pyx_string_tab[656]
#define __pyx_n_u_ERR_RMA_RANGE __pyx_string_tab[657]
#define __pyx_n_u_ERR_RMA_SHARED __pyx_string_tab[658]
#define __pyx_n_u_ERR_RMA_SYNC __pyx_string_tab[659]
#define __pyx_n_u_ERR_ROOT __pyx_string_tab[660]
#define __pyx_n_u_ERR_SERVICE __pyx_string_tab[661]
#define __pyx_n_u_ERR_SESSION __pyx_string_tab[662]
#define __pyx_n_u_ERR_SIZE __pyx_string_tab[663]
#define __pyx_n_u_ERR_SPAWN __pyx_string_tab[664]
#define __pyx_n_u_ERR_TAG __pyx_string_tab[665]
#define __pyx_n_u_ERR_TOPOLOGY __pyx_string_tab[666]
#define __pyx_n_u_ERR_TRUNCATE __pyx_string_tab[667]
#define __pyx_n_u_ERR_TYPE __pyx_string_tab[668]
#define __pyx_n_u_ERR_UNKNOWN __pyx_string_tab[669]
#define __pyx_n_u_ERR_UNSUPPORTED_DATAREP __pyx_string_tab[670]
#define __pyx_n_u_ERR_UNSUPPORTED_OPERATION __pyx_string_tab[671]
#define __pyx_n_u_ERR_VALUE_TOO_LARGE __pyx_string_tab[672]
#define __pyx_n_u_ERR_WIN __pyx_string_tab[673]
#define __pyx_n_u_Ellipsis __pyx_string_tab[674]
#define __pyx_n_u_Errhandler __pyx_string_tab[675]
#define __pyx_n_u_Errhandler_Free __pyx_string_tab[676]
#define __pyx_n_u_Errhandler___reduce __pyx_string_tab[677]
#define __pyx_n_u_Errhandler_f2py __pyx_string_tab[678]
#define __pyx_n_u_Errhandler_free __pyx_string_tab[679]
#define __pyx_n_u_Errhandler_fromhandle __pyx_string_tab[680]
#define __pyx_n_u_Errhandler_fromint __pyx_string_tab[681]
#define __pyx_n_u_Errhandler_py2f __pyx_string_tab[682]
#define __pyx_n_u_Errhandler_toint __pyx_string_tab[683]
#define __pyx_n_u_Exception __pyx_string_tab[684]
#define __pyx_n_u_Exception_Get_error_class __pyx_string_tab[685]
#define __pyx_n_u_Exception_Get_error_code __pyx_string_tab[686]
#define __pyx_n_u_Exception_Get_error_string __pyx_string_tab[687]
#define __pyx_n_u_Exception___bool __pyx_string_tab[688]
#define __pyx_n_u_Exception___eq __pyx_string_tab[689]
#define __pyx_n_u_Exception___ge __pyx_string_tab[690]
#define __pyx_n_u_Exception___gt __pyx_string_tab[691]
#define __pyx_n_u_Exception___hash __pyx_string_tab[692]
#define __pyx_n_u_Exception___init __pyx_string_tab[693]
#define __pyx_n_u_Exception___int __pyx_string_tab[694]
#define __pyx_n_u_Exception___le __pyx_string_tab[695]
#define __pyx_n_u_Exception___lt __pyx_string_tab[696]
#define __pyx_n_u_Exception___ne __pyx_string_tab[697]
#define __pyx_n_u_Exception___repr __pyx_string_tab[698]
#define __pyx_n_u_Exception___str __pyx_string_tab[699]
#define __pyx_n_u_Exception_error_class __pyx_string_tab[700]
#define __pyx_n_u_Exception_error_code __pyx_string_tab[701]
#define __pyx_n_u_Exception_error_string __pyx_string_tab[702]
#define __pyx_n_u_Excl __pyx_string_tab[703]
#define __pyx_n_u_Exscan __pyx_string_tab[704]
#define __pyx_n_u_Exscan_init __pyx_string_tab[705]
#define __pyx_n_u_F90_COMPLEX __pyx_string_tab[706]
#define __pyx_n_u_F90_INTEGER __pyx_string_tab[707]
#define __pyx_n_u_F90_REAL __pyx_string_tab[708]
#define __pyx_n_u_FILE_NULL __pyx_string_tab[709]
#define __pyx_n_u_FLOAT __pyx_string_tab[710]
#define __pyx_n_u_FLOAT16_T __pyx_string_tab[711]
#define __pyx_n_u_FLOAT32_T __pyx_string_tab[712]
#define __pyx_n_u_FLOAT64_T __pyx_string_tab[713]
#define __pyx_n_u_FLOAT_INT __pyx_string_tab[714]
#define __pyx_n_u_F_BOOL __pyx_string_tab[715]
#define __pyx_n_u_F_COMPLEX __pyx_string_tab[716]
#define __pyx_n_u_F_DOUBLE __pyx_string_tab[717]
#define __pyx_n_u_F_DOUBLE_COMPLEX __pyx_string_tab[718]
#define __pyx_n_u_F_ERROR __pyx_string_tab[719]
#define __pyx_n_u_F_FLOAT __pyx_string_tab[720]
#define __pyx_n_u_F_FLOAT_COMPLEX __pyx_string_tab[721]
#define __pyx_n_u_F_INT __pyx_string_tab[722]
#define __pyx_n_u_F_SOURCE __pyx_string_tab[723]
#define __pyx_n_u_F_STATUS_SIZE __pyx_string_tab[724]
#define __pyx_n_u_F_TAG __pyx_string_tab[725]
#define __pyx_n_u_Fence __pyx_string_tab[726]
#define __pyx_n_u_Fetch_and_op __pyx_string_tab[727]
#define __pyx_n_u_File __pyx_string_tab[728]
#define __pyx_n_u_File_Call_errhandler __pyx_string_tab[729]
#define __pyx_n_u_File_Close __pyx_string_tab[730]
#define __pyx_n_u_File_Create_errhandler __pyx_string_tab[731]
#define __pyx_n_u_File_Delete __pyx_string_tab[732]
#define __pyx_n_u_File_Get_amode __pyx_string_tab[733]
#define __pyx_n_u_File_Get_atomicity __pyx_string_tab[734]
#define __pyx_n_u_File_Get_byte_offset __pyx_string_tab[735]
#define __pyx_n_u_File_Get_errhandler __pyx_string_tab[736]
#define __pyx_n_u_File_Get_group __pyx_string_tab[737]
#define __pyx_n_u_File_Get_info __pyx_string_tab[738]
#define __pyx_n_u_File_Get_position __pyx_string_tab[739]
#define __pyx_n_u_File_Get_position_shared __pyx_string_tab[740]
#define __pyx_n_u_File_Get_size __pyx_string_tab[741]
#define __pyx_n_u_File_Get_type_extent __pyx_string_tab[742]
#define __pyx_n_u_File_Get_view __pyx_string_tab[743]
#define __pyx_n_u_File_Iread __pyx_string_tab[744]
#define __pyx_n_u_File_Iread_all __pyx_string_tab[745]
#define __pyx_n_u_File_Iread_at __pyx_string_tab[746]
#define __pyx_n_u_File_Iread_at_all __pyx_string_tab[747]
#define __pyx_n_u_File_Iread_shared __pyx_string_tab[748]
#define __pyx_n_u_File_Iwrite __pyx_string_tab[749]
#define __pyx_n_u_File_Iwrite_all __pyx_string_tab[750]
#define __pyx_n_u_File_Iwrite_at __pyx_string_tab[751]
#define __pyx_n_u_File_Iwrite_at_all __pyx_string_tab[752]
#define __pyx_n_u_File_Iwrite_shared __pyx_string_tab[753]
#define __pyx_n_u_File_Open __pyx_string_tab[754]
#define __pyx_n_u_File_Preallocate __pyx_string_tab[755]
#define __pyx_n_u_File_Read __pyx_string_tab[756]
#define __pyx_n_u_File_Read_all __pyx_string_tab[757]
#define __pyx_n_u_File_Read_all_begin __pyx_string_tab[758]
#define __pyx_n_u_File_Read_all_end __pyx_string_tab[759]
#define __pyx_n_u_File_Read_at __pyx_string_tab[760]
#define __pyx_n_u_File_Read_at_all __pyx_string_tab[761]
#define __pyx_n_u_File_Read_at_all_begin __pyx_string_tab[762]
#define __pyx_n_u_File_Read_at_all_end __pyx_string_tab[763]
#define __pyx_n_u_File_Read_ordered __pyx_string_tab[764]
#define __pyx_n_u_File_Read_ordered_begin __pyx_string_tab[765]
#define __pyx_n_u_File_Read_ordered_end __pyx_string_tab[766]
#define __pyx_n_u_File_Read_shared __pyx_string_tab[767]
#define __pyx_n_u_File_Seek __pyx_string_tab[768]
#define __pyx_n_u_File_Seek_shared __pyx_string_tab[769]
#define __pyx_n_u_File_Set_atomicity __pyx_string_tab[770]
#define __pyx_n_u_File_Set_errhandler __pyx_string_tab[771]
#define __pyx_n_u_File_Set_info __pyx_string_tab[772]
#define __pyx_n_u_File_Set_size __pyx_string_tab[773]
#define __pyx_n_u_File_Set_view __pyx_string_tab[774]
#define __pyx_n_u_File_Sync __pyx_string_tab[775]
#define __pyx_n_u_File_Write __pyx_string_tab[776]
#define __pyx_n_u_File_Write_all __pyx_string_tab[777]
#define __pyx_n_u_File_Write_all_begin __pyx_string_tab[778]
#define __pyx_n_u_File_Write_all_end __pyx_string_tab[779]
#define __pyx_n_u_File_Write_at __pyx_string_tab[780]
#define __pyx_n_u_File_Write_at_all __pyx_string_tab[781]
#define __pyx_n_u_File_Write_at_all_begin __pyx_string_tab[782]
#define __pyx_n_u_File_Write_at_all_end __pyx_string_tab[783]
#define __pyx_n_u_File_Write_ordered __pyx_string_tab[784]
#define __pyx_n_u_File_Write_ordered_begin __pyx_string_tab[785]
#define __pyx_n_u_File_Write_ordered_end __pyx_string_tab[786]
#define __pyx_n_u_File_Write_shared __pyx_string_tab[787]
#define __pyx_n_u_File___reduce __pyx_string_tab[788]
#define __pyx_n_u_File_f2py __pyx_string_tab[789]
#define __pyx_n_u_File_free __pyx_string_tab[790]
#define __pyx_n_u_File_fromhandle __pyx_string_tab[791]
#define __pyx_n_u_File_fromint __pyx_string_tab[792]
#define __pyx_n_u_File_py2f __pyx_string_tab[793]
#define __pyx_n_u_File_toint __pyx_string_tab[794]
#define __pyx_n_u_Finalize __pyx_string_tab[795]
#define __pyx_n_u_Flush __pyx_string_tab[796]
#define __pyx_n_u_Flush_all __pyx_string_tab[797]
#define __pyx_n_u_Flush_buffer __pyx_string_tab[798]
#define __pyx_n_u_Flush_local __pyx_string_tab[799]
#define __pyx_n_u_Flush_local_all __pyx_string_tab[800]
#define __pyx_n_u_Free __pyx_string_tab[801]
#define __pyx_n_u_Free_keyval __pyx_string_tab[802]
#define __pyx_n_u_Free_mem __pyx_string_tab[803]
#define __pyx_n_u_GRAPH __pyx_string_tab[804]
#define __pyx_n_u_GROUP_EMPTY __pyx_string_tab[805]
#define __pyx_n_u_GROUP_NULL __pyx_string_tab[806]
#define __pyx_n_u_Gather __pyx_string_tab[807]
#define __pyx_n_u_Gather_init __pyx_string_tab[808]
#define __pyx_n_u_Gatherv __pyx_string_tab[809]
#define __pyx_n_u_Gatherv_init __pyx_string_tab[810]
#define __pyx_n_u_Get __pyx_string_tab[811]
#define __pyx_n_u_Get_abi_fortran_info __pyx_string_tab[812]
#define __pyx_n_u_Get_abi_info __pyx_string_tab[813]
#define __pyx_n_u_Get_abi_version __pyx_string_tab[814]
#define __pyx_n_u_Get_accumulate __pyx_string_tab[815]
#define __pyx_n_u_Get_address __pyx_string_tab[816]
#define __pyx_n_u_Get_amode __pyx_string_tab[817]
#define __pyx_n_u_Get_atomicity __pyx_string_tab[818]
#define __pyx_n_u_Get_attr __pyx_string_tab[819]
#define __pyx_n_u_Get_byte_offset __pyx_string_tab[820]
#define __pyx_n_u_Get_cart_rank __pyx_string_tab[821]
#define __pyx_n_u_Get_contents __pyx_string_tab[822]
#define __pyx_n_u_Get_coords __pyx_string_tab[823]
#define __pyx_n_u_Get_count __pyx_string_tab[824]
#define __pyx_n_u_Get_dim __pyx_string_tab[825]
#define __pyx_n_u_Get_dims __pyx_string_tab[826]
#define __pyx_n_u_Get_dist_neighbors __pyx_string_tab[827]
#define __pyx_n_u_Get_dist_neighbors_count __pyx_string_tab[828]
#define __pyx_n_u_Get_elements __pyx_string_tab[829]
#define __pyx_n_u_Get_envelope __pyx_string_tab[830]
#define __pyx_n_u_Get_errhandler __pyx_string_tab[831]
#define __pyx_n_u_Get_error __pyx_string_tab[832]
#define __pyx_n_u_Get_error_class __pyx_string_tab[833]
#define __pyx_n_u_Get_error_code __pyx_string_tab[834]
#define __pyx_n_u_Get_error_string __pyx_string_tab[835]
#define __pyx_n_u_Get_extent __pyx_string_tab[836]
#define __pyx_n_u_Get_failed __pyx_string_tab[837]
#define __pyx_n_u_Get_group __pyx_string_tab[838]
#define __pyx_n_u_Get_hw_resource_info __pyx_string_tab[839]
#define __pyx_n_u_Get_info __pyx_string_tab[840]
#define __pyx_n_u_Get_library_version __pyx_string_tab[841]
#define __pyx_n_u_Get_name __pyx_string_tab[842]
#define __pyx_n_u_Get_neighbors __pyx_string_tab[843]
#define __pyx_n_u_Get_neighbors_count __pyx_string_tab[844]
#define __pyx_n_u_Get_nkeys __pyx_string_tab[845]
#define __pyx_n_u_Get_nth_pset __pyx_string_tab[846]
#define __pyx_n_u_Get_nthkey __pyx_string_tab[847]
#define __pyx_n_u_Get_num_psets __pyx_string_tab[848]
#define __pyx_n_u_Get_parent __pyx_string_tab[849]
#define __pyx_n_u_Get_position __pyx_string_tab[850]
#define __pyx_n_u_Get_position_shared __pyx_string_tab[851]
#define __pyx_n_u_Get_processor_name __pyx_string_tab[852]
#define __pyx_n_u_Get_pset_info __pyx_string_tab[853]
#define __pyx_n_u_Get_rank __pyx_string_tab[854]
#define __pyx_n_u_Get_remote_group __pyx_string_tab[855]
#define __pyx_n_u_Get_remote_size __pyx_string_tab[856]
#define __pyx_n_u_Get_size __pyx_string_tab[857]
#define __pyx_n_u_Get_source __pyx_string_tab[858]
#define __pyx_n_u_Get_status __pyx_string_tab[859]
#define __pyx_n_u_Get_status_all __pyx_string_tab[860]
#define __pyx_n_u_Get_status_any __pyx_string_tab[861]
#define __pyx_n_u_Get_status_some __pyx_string_tab[862]
#define __pyx_n_u_Get_tag __pyx_string_tab[863]
#define __pyx_n_u_Get_topo __pyx_string_tab[864]
#define __pyx_n_u_Get_topology __pyx_string_tab[865]
#define __pyx_n_u_Get_true_extent __pyx_string_tab[866]
#define __pyx_n_u_Get_type_extent __pyx_string_tab[867]
#define __pyx_n_u_Get_value_index __pyx_string_tab[868]
#define __pyx_n_u_Get_version __pyx_string_tab[869]
#define __pyx_n_u_Get_view __pyx_string_tab[870]
#define __pyx_n_u_Graph_map __pyx_string_tab[871]
#define __pyx_n_u_Graphcomm __pyx_string_tab[872]
#define __pyx_n_u_Graphcomm_Get_dims __pyx_string_tab[873]
#define __pyx_n_u_Graphcomm_Get_neighbors __pyx_string_tab[874]
#define __pyx_n_u_Graphcomm_Get_neighbors_count __pyx_string_tab[875]
#define __pyx_n_u_Graphcomm_Get_topo __pyx_string_tab[876]
#define __pyx_n_u_Grequest __pyx_string_tab[877]
#define __pyx_n_u_Grequest_Complete __pyx_string_tab[878]
#define __pyx_n_u_Grequest_Start __pyx_string_tab[879]
#define __pyx_n_u_Grequest_complete __pyx_string_tab[880]
#define __pyx_n_u_Group __pyx_string_tab[881]
#define __pyx_n_u_Group_Compare __pyx_string_tab[882]
#define __pyx_n_u_Group_Create_from_session_pset __pyx_string_tab[883]
#define __pyx_n_u_Group_Difference __pyx_string_tab[884]
#define __pyx_n_u_Group_Dup __pyx_string_tab[885]
#define __pyx_n_u_Group_Excl __pyx_string_tab[886]
#define __pyx_n_u_Group_Free __pyx_string_tab[887]
#define __pyx_n_u_Group_Get_rank __pyx_string_tab[888]
#define __pyx_n_u_Group_Get_size __pyx_string_tab[889]
#define __pyx_n_u_Group_Incl __pyx_string_tab[890]
#define __pyx_n_u_Group_Intersection __pyx_string_tab[891]
#define __pyx_n_u_Group_Range_excl __pyx_string_tab[892]
#define __pyx_n_u_Group_Range_incl __pyx_string_tab[893]
#define __pyx_n_u_Group_Translate_ranks __pyx_string_tab[894]
#define __pyx_n_u_Group_Union __pyx_string_tab[895]
#define __pyx_n_u_Group___reduce __pyx_string_tab[896]
#define __pyx_n_u_Group_f2py __pyx_string_tab[897]
#define __pyx_n_u_Group_free __pyx_string_tab[898]
#define __pyx_n_u_Group_fromhandle __pyx_string_tab[899]
#define __pyx_n_u_Group_fromint __pyx_string_tab[900]
#define __pyx_n_u_Group_py2f __pyx_string_tab[901]
#define __pyx_n_u_Group_toint __pyx_string_tab[902]
#define __pyx_n_u_HIGHEST_PROTOCOL __pyx_string_tab[903]
#define __pyx_n_u_HINDEXED __pyx_string_tab[904]
#define __pyx_n_u_HINDEXED_BLOCK __pyx_string_tab[905]
#define __pyx_n_u_HVECTOR __pyx_string_tab[906]
#define __pyx_n_u_IDENT __pyx_string_tab[907]
#define __pyx_n_u_INDEXED __pyx_string_tab[908]
#define __pyx_n_u_INDEXED_BLOCK __pyx_string_tab[909]
#define __pyx_n_u_INFO_ENV __pyx_string_tab[910]
#define __pyx_n_u_INFO_NULL __pyx_string_tab[911]
#define __pyx_n_u_INT __pyx_string_tab[912]
#define __pyx_n_u_INT16_T __pyx_string_tab[913]
#define __pyx_n_u_INT32_T __pyx_string_tab[914]
#define __pyx_n_u_INT64_T __pyx_string_tab[915]
#define __pyx_n_u_INT8_T __pyx_string_tab[916]
#define __pyx_n_u_INTEGER __pyx_string_tab[917]
#define __pyx_n_u_INTEGER1 __pyx_string_tab[918]
#define __pyx_n_u_INTEGER16 __pyx_string_tab[919]
#define __pyx_n_u_INTEGER2 __pyx_string_tab[920]
#define __pyx_n_u_INTEGER4 __pyx_string_tab[921]
#define __pyx_n_u_INTEGER8 __pyx_string_tab[922]
#define __pyx_n_u_INT_INT __pyx_string_tab[923]
#define __pyx_n_u_IN_PLACE __pyx_string_tab[924]
#define __pyx_n_u_IO __pyx_string_tab[925]
#define __pyx_n_u_Iagree __pyx_string_tab[926]
#define __pyx_n_u_Iallgather __pyx_string_tab[927]
#define __pyx_n_u_Iallgatherv __pyx_string_tab[928]
#define __pyx_n_u_Iallreduce __pyx_string_tab[929]
#define __pyx_n_u_Ialltoall __pyx_string_tab[930]
#define __pyx_n_u_Ialltoallv __pyx_string_tab[931]
#define __pyx_n_u_Ialltoallw __pyx_string_tab[932]
#define __pyx_n_u_Ibarrier __pyx_string_tab[933]
#define __pyx_n_u_Ibcast __pyx_string_tab[934]
#define __pyx_n_u_Ibsend __pyx_string_tab[935]
#define __pyx_n_u_Idup __pyx_string_tab[936]
#define __pyx_n_u_Idup_with_info __pyx_string_tab[937]
#define __pyx_n_u_Iexscan __pyx_string_tab[938]
#define __pyx_n_u_Iflush_buffer __pyx_string_tab[939]
#define __pyx_n_u_Igather __pyx_string_tab[940]
#define __pyx_n_u_Igatherv __pyx_string_tab[941]
#define __pyx_n_u_Improbe __pyx_string_tab[942]
#define __pyx_n_u_InPlaceType __pyx_string_tab[943]
#define __pyx_n_u_InPlaceType___reduce __pyx_string_tab[944]
#define __pyx_n_u_Incl __pyx_string_tab[945]
#define __pyx_n_u_Ineighbor_allgather __pyx_string_tab[946]
#define __pyx_n_u_Ineighbor_allgatherv __pyx_string_tab[947]
#define __pyx_n_u_Ineighbor_alltoall __pyx_string_tab[948]
#define __pyx_n_u_Ineighbor_alltoallv __pyx_string_tab[949]
#define __pyx_n_u_Ineighbor_alltoallw __pyx_string_tab[950]
#define __pyx_n_u_Info __pyx_string_tab[951]
#define __pyx_n_u_Info_Create __pyx_string_tab[952]
#define __pyx_n_u_Info_Create_env __pyx_string_tab[953]
#define __pyx_n_u_Info_Delete __pyx_string_tab[954]
#define __pyx_n_u_Info_Dup __pyx_string_tab[955]
#define __pyx_n_u_Info_Free __pyx_string_tab[956]
#define __pyx_n_u_Info_Get __pyx_string_tab[957]
#define __pyx_n_u_Info_Get_nkeys __pyx_string_tab[958]
#define __pyx_n_u_Info_Get_nthkey __pyx_string_tab[959]
#define __pyx_n_u_Info_Set __pyx_string_tab[960]
#define __pyx_n_u_Info___reduce __pyx_string_tab[961]
#define __pyx_n_u_Info_clear __pyx_string_tab[962]
#define __pyx_n_u_Info_copy __pyx_string_tab[963]
#define __pyx_n_u_Info_f2py __pyx_string_tab[964]
#define __pyx_n_u_Info_free __pyx_string_tab[965]
#define __pyx_n_u_Info_fromhandle __pyx_string_tab[966]
#define __pyx_n_u_Info_fromint __pyx_string_tab[967]
#define __pyx_n_u_Info_get __pyx_string_tab[968]
#define __pyx_n_u_Info_items __pyx_string_tab[969]
#define __pyx_n_u_Info_keys __pyx_string_tab[970]
#define __pyx_n_u_Info_pop __pyx_string_tab[971]
#define __pyx_n_u_Info_popitem __pyx_string_tab[972]
#define __pyx_n_u_Info_py2f __pyx_string_tab[973]
#define __pyx_n_u_Info_toint __pyx_string_tab[974]
#define __pyx_n_u_Info_update __pyx_string_tab[975]
#define __pyx_n_u_Info_values __pyx_string_tab[976]
#define __pyx_n_u_Init __pyx_string_tab[977]
#define __pyx_n_u_Init_thread __pyx_string_tab[978]
#define __pyx_n_u_Intercomm __pyx_string_tab[979]
#define __pyx_n_u_Intercomm_Create_from_groups __pyx_string_tab[980]
#define __pyx_n_u_Intercomm_Get_remote_group __pyx_string_tab[981]
#define __pyx_n_u_Intercomm_Get_remote_size __pyx_string_tab[982]
#define __pyx_n_u_Intercomm_Merge __pyx_string_tab[983]
#define __pyx_n_u_Intersect __pyx_string_tab[984]
#define __pyx_n_u_Intersection __pyx_string_tab[985]
#define __pyx_n_u_Intracomm __pyx_string_tab[986]
#define __pyx_n_u_Intracomm_Accept __pyx_string_tab[987]
#define __pyx_n_u_Intracomm_Cart_map __pyx_string_tab[988]
#define __pyx_n_u_Intracomm_Connect __pyx_string_tab[989]
#define __pyx_n_u_Intracomm_Create_cart __pyx_string_tab[990]
#define __pyx_n_u_Intracomm_Create_dist_graph __pyx_string_tab[991]
#define __pyx_n_u_Intracomm_Create_dist_graph_adja __pyx_string_tab[992]
#define __pyx_n_u_Intracomm_Create_from_group __pyx_string_tab[993]
#define __pyx_n_u_Intracomm_Create_graph __pyx_string_tab[994]
#define __pyx_n_u_Intracomm_Create_group __pyx_string_tab[995]
#define __pyx_n_u_Intracomm_Create_intercomm __pyx_string_tab[996]
#define __pyx_n_u_Intracomm_Exscan __pyx_string_tab[997]
#define __pyx_n_u_Intracomm_Exscan_init __pyx_string_tab[998]
#define __pyx_n_u_Intracomm_Graph_map __pyx_string_tab[999]
#define __pyx_n_u_Intracomm_Iexscan __pyx_string_tab[1000]
#define __pyx_n_u_Intracomm_Iscan __pyx_string_tab[1001]
#define __pyx_n_u_Intracomm_Scan __pyx_string_tab[1002]
#define __pyx_n_u_Intracomm_Scan_init __pyx_string_tab[1003]
#define __pyx_n_u_Intracomm_Spawn __pyx_string_tab[1004]
#define __pyx_n_u_Intracomm_Spawn_multiple __pyx_string_tab[1005]
#define __pyx_n_u_Intracomm_exscan __pyx_string_tab[1006]
#define __pyx_n_u_Intracomm_scan __pyx_string_tab[1007]
#define __pyx_n_u_Iprobe __pyx_string_tab[1008]
#define __pyx_n_u_Iread __pyx_string_tab[1009]
#define __pyx_n_u_Iread_all __pyx_string_tab[1010]
#define __pyx_n_u_Iread_at __pyx_string_tab[1011]
#define __pyx_n_u_Iread_at_all __pyx_string_tab[1012]
#define __pyx_n_u_Iread_shared __pyx_string_tab[1013]
#define __pyx_n_u_Irecv __pyx_string_tab[1014]
#define __pyx_n_u_Ireduce __pyx_string_tab[1015]
#define __pyx_n_u_Ireduce_scatter __pyx_string_tab[1016]
#define __pyx_n_u_Ireduce_scatter_block __pyx_string_tab[1017]
#define __pyx_n_u_Irsend __pyx_string_tab[1018]
#define __pyx_n_u_Is_cancelled __pyx_string_tab[1019]
#define __pyx_n_u_Is_commutative __pyx_string_tab[1020]
#define __pyx_n_u_Is_finalized __pyx_string_tab[1021]
#define __pyx_n_u_Is_initialized __pyx_string_tab[1022]
#define __pyx_n_u_Is_inter __pyx_string_tab[1023]
#define __pyx_n_u_Is_intra __pyx_string_tab[1024]
#define __pyx_n_u_Is_revoked __pyx_string_tab[1025]
#define __pyx_n_u_Is_thread_main __pyx_string_tab[1026]
#define __pyx_n_u_Iscan __pyx_string_tab[1027]
#define __pyx_n_u_Iscatter __pyx_string_tab[1028]
#define __pyx_n_u_Iscatterv __pyx_string_tab[1029]
#define __pyx_n_u_Isend __pyx_string_tab[1030]
#define __pyx_n_u_Isendrecv __pyx_string_tab[1031]
#define __pyx_n_u_Isendrecv_replace __pyx_string_tab[1032]
#define __pyx_n_u_Ishrink __pyx_string_tab[1033]
#define __pyx_n_u_Issend __pyx_string_tab[1034]
#define __pyx_n_u_Iwrite __pyx_string_tab[1035]
#define __pyx_n_u_Iwrite_all __pyx_string_tab[1036]
#define __pyx_n_u_Iwrite_at __pyx_string_tab[1037]
#define __pyx_n_u_Iwrite_at_all __pyx_string_tab[1038]
#define __pyx_n_u_Iwrite_shared __pyx_string_tab[1039]
#define __pyx_n_u_Join __pyx_string_tab[1040]
#define __pyx_n_u_KEYVAL_INVALID __pyx_string_tab[1041]
#define __pyx_n_u_LAND __pyx_string_tab[1042]
#define __pyx_n_u_LASTUSEDCODE __pyx_string_tab[1043]
#define __pyx_n_u_LOCK_EXCLUSIVE __pyx_string_tab[1044]
#define __pyx_n_u_LOCK_SHARED __pyx_string_tab[1045]
#define __pyx_n_u_LOGICAL __pyx_string_tab[1046]
#define __pyx_n_u_LOGICAL1 __pyx_string_tab[1047]
#define __pyx_n_u_LOGICAL16 __pyx_string_tab[1048]
#define __pyx_n_u_LOGICAL2 __pyx_string_tab[1049]
#define __pyx_n_u_LOGICAL4 __pyx_string_tab[1050]
#define __pyx_n_u_LOGICAL8 __pyx_string_tab[1051]
#define __pyx_n_u_LONG __pyx_string_tab[1052]
#define __pyx_n_u_LONG_DOUBLE __pyx_string_tab[1053]
#define __pyx_n_u_LONG_DOUBLE_INT __pyx_string_tab[1054]
#define __pyx_n_u_LONG_INT __pyx_string_tab[1055]
#define __pyx_n_u_LONG_LONG __pyx_string_tab[1056]
#define __pyx_n_u_LOR __pyx_string_tab[1057]
#define __pyx_n_u_LXOR __pyx_string_tab[1058]
#define __pyx_n_u_Lock __pyx_string_tab[1059]
#define __pyx_n_u_Lock_all __pyx_string_tab[1060]
#define __pyx_n_u_Lookup_name __pyx_string_tab[1061]
#define __pyx_n_u_MAX __pyx_string_tab[1062]
#define __pyx_n_u_MAXLOC __pyx_string_tab[1063]
#define __pyx_n_u_MAX_DATAREP_STRING __pyx_string_tab[1064]
#define __pyx_n_u_MAX_ERROR_STRING __pyx_string_tab[1065]
#define __pyx_n_u_MAX_INFO_KEY __pyx_string_tab[1066]
#define __pyx_n_u_MAX_INFO_VAL __pyx_string_tab[1067]
#define __pyx_n_u_MAX_LIBRARY_VERSION_STRING __pyx_string_tab[1068]
#define __pyx_n_u_MAX_OBJECT_NAME __pyx_string_tab[1069]
#define __pyx_n_u_MAX_PORT_NAME __pyx_string_tab[1070]
#define __pyx_n_u_MAX_PROCESSOR_NAME __pyx_string_tab[1071]
#define __pyx_n_u_MAX_PSET_NAME_LEN __pyx_string_tab[1072]
#define __pyx_n_u_MAX_STRINGTAG_LEN __pyx_string_tab[1073]
#define __pyx_n_u_MESSAGE_NO_PROC __pyx_string_tab[1074]
#define __pyx_n_u_MESSAGE_NULL __pyx_string_tab[1075]
#define __pyx_n_u_MIN __pyx_string_tab[1076]
#define __pyx_n_u_MINLOC __pyx_string_tab[1077]
#define __pyx_n_u_MODE_APPEND __pyx_string_tab[1078]
#define __pyx_n_u_MODE_CREATE __pyx_string_tab[1079]
#define __pyx_n_u_MODE_DELETE_ON_CLOSE __pyx_string_tab[1080]
#define __pyx_n_u_MODE_EXCL __pyx_string_tab[1081]
#define __pyx_n_u_MODE_NOCHECK __pyx_string_tab[1082]
#define __pyx_n_u_MODE_NOPRECEDE __pyx_string_tab[1083]
#define __pyx_n_u_MODE_NOPUT __pyx_string_tab[1084]
#define __pyx_n_u_MODE_NOSTORE __pyx_string_tab[1085]
#define __pyx_n_u_MODE_NOSUCCEED __pyx_string_tab[1086]
#define __pyx_n_u_MODE_RDONLY __pyx_string_tab[1087]
#define __pyx_n_u_MODE_RDWR __pyx_string_tab[1088]
#define __pyx_n_u_MODE_SEQUENTIAL __pyx_string_tab[1089]
#define __pyx_n_u_MODE_UNIQUE_OPEN __pyx_string_tab[1090]
#define __pyx_n_u_MODE_WRONLY __pyx_string_tab[1091]
#define __pyx_n_u_MPI_Comm __pyx_string_tab[1092]
#define __pyx_n_u_MPI_Datatype __pyx_string_tab[1093]
#define __pyx_n_u_MPI_Errhandler __pyx_string_tab[1094]
#define __pyx_n_u_MPI_File __pyx_string_tab[1095]
#define __pyx_n_u_MPI_Group __pyx_string_tab[1096]
#define __pyx_n_u_MPI_Info __pyx_string_tab[1097]
#define __pyx_n_u_MPI_Message __pyx_string_tab[1098]
#define __pyx_n_u_MPI_Op __pyx_string_tab[1099]
#define __pyx_n_u_MPI_Request __pyx_string_tab[1100]
#define __pyx_n_u_MPI_Session __pyx_string_tab[1101]
#define __pyx_n_u_MPI_Win __pyx_string_tab[1102]
#define __pyx_n_u_Match_size __pyx_string_tab[1103]
#define __pyx_n_u_Merge __pyx_string_tab[1104]
#define __pyx_n_u_Message __pyx_string_tab[1105]
#define __pyx_n_u_Message_Iprobe __pyx_string_tab[1106]
#define __pyx_n_u_Message_Irecv __pyx_string_tab[1107]
#define __pyx_n_u_Message_Probe __pyx_string_tab[1108]
#define __pyx_n_u_Message_Recv __pyx_string_tab[1109]
#define __pyx_n_u_Message___reduce __pyx_string_tab[1110]
#define __pyx_n_u_Message_f2py __pyx_string_tab[1111]
#define __pyx_n_u_Message_free __pyx_string_tab[1112]
#define __pyx_n_u_Message_fromhandle __pyx_string_tab[1113]
#define __pyx_n_u_Message_fromint __pyx_string_tab[1114]
#define __pyx_n_u_Message_iprobe __pyx_string_tab[1115]
#define __pyx_n_u_Message_irecv __pyx_string_tab[1116]
#define __pyx_n_u_Message_probe __pyx_string_tab[1117]
#define __pyx_n_u_Message_py2f __pyx_string_tab[1118]
#define __pyx_n_u_Message_recv __pyx_string_tab[1119]
#define __pyx_n_u_Message_toint __pyx_string_tab[1120]
#define __pyx_n_u_Mprobe __pyx_string_tab[1121]
#define __pyx_n_u_NAMED __pyx_string_tab[1122]
#define __pyx_n_u_NO_OP __pyx_string_tab[1123]
#define __pyx_n_u_Neighbor_allgather __pyx_string_tab[1124]
#define __pyx_n_u_Neighbor_allgather_init __pyx_string_tab[1125]
#define __pyx_n_u_Neighbor_allgatherv __pyx_string_tab[1126]
#define __pyx_n_u_Neighbor_allgatherv_init __pyx_string_tab[1127]
#define __pyx_n_u_Neighbor_alltoall __pyx_string_tab[1128]
#define __pyx_n_u_Neighbor_alltoall_init __pyx_string_tab[1129]
#define __pyx_n_u_Neighbor_alltoallv __pyx_string_tab[1130]
#define __pyx_n_u_Neighbor_alltoallv_init __pyx_string_tab[1131]
#define __pyx_n_u_Neighbor_alltoallw __pyx_string_tab[1132]
#define __pyx_n_u_Neighbor_alltoallw_init __pyx_string_tab[1133]
#define __pyx_n_u_NoReturn __pyx_string_tab[1134]
#define __pyx_n_u_None __pyx_string_tab[1135]
#define __pyx_n_u_NotImplemented __pyx_string_tab[1136]
#define __pyx_n_u_OFFSET __pyx_string_tab[1137]
#define __pyx_n_u_OP_NULL __pyx_string_tab[1138]
#define __pyx_n_u_ORDER_C __pyx_string_tab[1139]
#define __pyx_n_u_ORDER_F __pyx_string_tab[1140]
#define __pyx_n_u_ORDER_FORTRAN __pyx_string_tab[1141]
#define __pyx_n_u_Op __pyx_string_tab[1142]
#define __pyx_n_u_Op_Create __pyx_string_tab[1143]
#define __pyx_n_u_Op_Free __pyx_string_tab[1144]
#define __pyx_n_u_Op_Is_commutative __pyx_string_tab[1145]
#define __pyx_n_u_Op_Reduce_local __pyx_string_tab[1146]
#define __pyx_n_u_Op___reduce __pyx_string_tab[1147]
#define __pyx_n_u_Op_f2py __pyx_string_tab[1148]
#define __pyx_n_u_Op_free __pyx_string_tab[1149]
#define __pyx_n_u_Op_fromhandle __pyx_string_tab[1150]
#define __pyx_n_u_Op_fromint __pyx_string_tab[1151]
#define __pyx_n_u_Op_py2f __pyx_string_tab[1152]
#define __pyx_n_u_Op_toint __pyx_string_tab[1153]
#define __pyx_n_u_Open __pyx_string_tab[1154]
#define __pyx_n_u_Open_port __pyx_string_tab[1155]
#define __pyx_n_u_PACKED __pyx_string_tab[1156]
#define __pyx_n_u_PROC_NULL __pyx_string_tab[1157]
#define __pyx_n_u_PROD __pyx_string_tab[1158]
#define __pyx_n_u_Pack __pyx_string_tab[1159]
#define __pyx_n_u_Pack_external __pyx_string_tab[1160]
#define __pyx_n_u_Pack_external_size __pyx_string_tab[1161]
#define __pyx_n_u_Pack_size __pyx_string_tab[1162]
#define __pyx_n_u_Parrived __pyx_string_tab[1163]
#define __pyx_n_u_Pcontrol __pyx_string_tab[1164]
#define __pyx_n_u_Pickle __pyx_string_tab[1165]
#define __pyx_n_u_Pickle_dumps __pyx_string_tab[1166]
#define __pyx_n_u_Pickle_dumps_oob __pyx_string_tab[1167]
#define __pyx_n_u_Pickle_loads __pyx_string_tab[1168]
#define __pyx_n_u_Pickle_loads_oob __pyx_string_tab[1169]
#define __pyx_n_u_Post __pyx_string_tab[1170]
#define __pyx_n_u_Pready __pyx_string_tab[1171]
#define __pyx_n_u_Pready_list __pyx_string_tab[1172]
#define __pyx_n_u_Pready_range __pyx_string_tab[1173]
#define __pyx_n_u_Preallocate __pyx_string_tab[1174]
#define __pyx_n_u_Precv_init __pyx_string_tab[1175]
#define __pyx_n_u_Prequest __pyx_string_tab[1176]
#define __pyx_n_u_Prequest_Parrived __pyx_string_tab[1177]
#define __pyx_n_u_Prequest_Pready __pyx_string_tab[1178]
#define __pyx_n_u_Prequest_Pready_list __pyx_string_tab[1179]
#define __pyx_n_u_Prequest_Pready_range __pyx_string_tab[1180]
#define __pyx_n_u_Prequest_Start __pyx_string_tab[1181]
#define __pyx_n_u_Prequest_Startall __pyx_string_tab[1182]
#define __pyx_n_u_Probe __pyx_string_tab[1183]
#define __pyx_n_u_Psend_init __pyx_string_tab[1184]
#define __pyx_n_u_Publish_name __pyx_string_tab[1185]
#define __pyx_n_u_Put __pyx_string_tab[1186]
#define __pyx_n_u_Pyx_PyDict_NextRef __pyx_string_tab[1187]
#define __pyx_n_u_Query_thread __pyx_string_tab[1188]
#define __pyx_n_u_REAL __pyx_string_tab[1189]
#define __pyx_n_u_REAL16 __pyx_string_tab[1190]
#define __pyx_n_u_REAL2 __pyx_string_tab[1191]
#define __pyx_n_u_REAL4 __pyx_string_tab[1192]
#define __pyx_n_u_REAL8 __pyx_string_tab[1193]
#define __pyx_n_u_REPLACE __pyx_string_tab[1194]
#define __pyx_n_u_REQUEST_NULL __pyx_string_tab[1195]
#define __pyx_n_u_RESIZED __pyx_string_tab[1196]
#define __pyx_n_u_RLock __pyx_string_tab[1197]
#define __pyx_n_u_ROOT __pyx_string_tab[1198]
#define __pyx_n_u_Raccumulate __pyx_string_tab[1199]
#define __pyx_n_u_Range_excl __pyx_string_tab[1200]
#define __pyx_n_u_Range_incl __pyx_string_tab[1201]
#define __pyx_n_u_Read __pyx_string_tab[1202]
#define __pyx_n_u_Read_all __pyx_string_tab[1203]
#define __pyx_n_u_Read_all_begin __pyx_string_tab[1204]
#define __pyx_n_u_Read_all_end __pyx_string_tab[1205]
#define __pyx_n_u_Read_at __pyx_string_tab[1206]
#define __pyx_n_u_Read_at_all __pyx_string_tab[1207]
#define __pyx_n_u_Read_at_all_begin __pyx_string_tab[1208]
#define __pyx_n_u_Read_at_all_end __pyx_string_tab[1209]
#define __pyx_n_u_Read_ordered __pyx_string_tab[1210]
#define __pyx_n_u_Read_ordered_begin __pyx_string_tab[1211]
#define __pyx_n_u_Read_ordered_end __pyx_string_tab[1212]
#define __pyx_n_u_Read_shared __pyx_string_tab[1213]
#define __pyx_n_u_Recv __pyx_string_tab[1214]
#define __pyx_n_u_Recv_init __pyx_string_tab[1215]
#define __pyx_n_u_Reduce __pyx_string_tab[1216]
#define __pyx_n_u_Reduce_init __pyx_string_tab[1217]
#define __pyx_n_u_Reduce_local __pyx_string_tab[1218]
#define __pyx_n_u_Reduce_scatter __pyx_string_tab[1219]
#define __pyx_n_u_Reduce_scatter_block __pyx_string_tab[1220]
#define __pyx_n_u_Reduce_scatter_block_init __pyx_string_tab[1221]
#define __pyx_n_u_Reduce_scatter_init __pyx_string_tab[1222]
#define __pyx_n_u_Register_datarep __pyx_string_tab[1223]
#define __pyx_n_u_Remove_error_class __pyx_string_tab[1224]
#define __pyx_n_u_Remove_error_code __pyx_string_tab[1225]
#define __pyx_n_u_Remove_error_string __pyx_string_tab[1226]
#define __pyx_n_u_Request __pyx_string_tab[1227]
#define __pyx_n_u_Request_Cancel __pyx_string_tab[1228]
#define __pyx_n_u_Request_Free __pyx_string_tab[1229]
#define __pyx_n_u_Request_Get_status __pyx_string_tab[1230]
#define __pyx_n_u_Request_Get_status_all __pyx_string_tab[1231]
#define __pyx_n_u_Request_Get_status_any __pyx_string_tab[1232]
#define __pyx_n_u_Request_Get_status_some __pyx_string_tab[1233]
#define __pyx_n_u_Request_Test __pyx_string_tab[1234]
#define __pyx_n_u_Request_Testall __pyx_string_tab[1235]
#define __pyx_n_u_Request_Testany __pyx_string_tab[1236]
#define __pyx_n_u_Request_Testsome __pyx_string_tab[1237]
#define __pyx_n_u_Request_Wait __pyx_string_tab[1238]
#define __pyx_n_u_Request_Waitall __pyx_string_tab[1239]
#define __pyx_n_u_Request_Waitany __pyx_string_tab[1240]
#define __pyx_n_u_Request_Waitsome __pyx_string_tab[1241]
#define __pyx_n_u_Request___reduce __pyx_string_tab[1242]
#define __pyx_n_u_Request_cancel __pyx_string_tab[1243]
#define __pyx_n_u_Request_f2py __pyx_string_tab[1244]
#define __pyx_n_u_Request_free __pyx_string_tab[1245]
#define __pyx_n_u_Request_fromhandle __pyx_string_tab[1246]
#define __pyx_n_u_Request_fromint __pyx_string_tab[1247]
#define __pyx_n_u_Request_get_status __pyx_string_tab[1248]
#define __pyx_n_u_Request_get_status_all __pyx_string_tab[1249]
#define __pyx_n_u_Request_get_status_any __pyx_string_tab[1250]
#define __pyx_n_u_Request_get_status_some __pyx_string_tab[1251]
#define __pyx_n_u_Request_py2f __pyx_string_tab[1252]
#define __pyx_n_u_Request_test __pyx_string_tab[1253]
#define __pyx_n_u_Request_testall __pyx_string_tab[1254]
#define __pyx_n_u_Request_testany __pyx_string_tab[1255]
#define __pyx_n_u_Request_testsome __pyx_string_tab[1256]
#define __pyx_n_u_Request_toint __pyx_string_tab[1257]
#define __pyx_n_u_Request_wait __pyx_string_tab[1258]
#define __pyx_n_u_Request_waitall __pyx_string_tab[1259]
#define __pyx_n_u_Request_waitany __pyx_string_tab[1260]
#define __pyx_n_u_Request_waitsome __pyx_string_tab[1261]
#define __pyx_n_u_Resized __pyx_string_tab[1262]
#define __pyx_n_u_Revoke __pyx_string_tab[1263]
#define __pyx_n_u_Rget __pyx_string_tab[1264]
#define __pyx_n_u_Rget_accumulate __pyx_string_tab[1265]
#define __pyx_n_u_Rput __pyx_string_tab[1266]
#define __pyx_n_u_Rsend __pyx_string_tab[1267]
#define __pyx_n_u_Rsend_init __pyx_string_tab[1268]
#define __pyx_n_u_SEEK_CUR __pyx_string_tab[1269]
#define __pyx_n_u_SEEK_END __pyx_string_tab[1270]
#define __pyx_n_u_SEEK_SET __pyx_string_tab[1271]
#define __pyx_n_u_SESSION_NULL __pyx_string_tab[1272]
#define __pyx_n_u_SHORT __pyx_string_tab[1273]
#define __pyx_n_u_SHORT_INT __pyx_string_tab[1274]
#define __pyx_n_u_SIGNED_CHAR __pyx_string_tab[1275]
#define __pyx_n_u_SIGNED_INT __pyx_string_tab[1276]
#define __pyx_n_u_SIGNED_LONG __pyx_string_tab[1277]
#define __pyx_n_u_SIGNED_LONG_LONG __pyx_string_tab[1278]
#define __pyx_n_u_SIGNED_SHORT __pyx_string_tab[1279]
#define __pyx_n_u_SIMILAR __pyx_string_tab[1280]
#define __pyx_n_u_SINT16_T __pyx_string_tab[1281]
#define __pyx_n_u_SINT32_T __pyx_string_tab[1282]
#define __pyx_n_u_SINT64_T __pyx_string_tab[1283]
#define __pyx_n_u_SINT8_T __pyx_string_tab[1284]
#define __pyx_n_u_STRUCT __pyx_string_tab[1285]
#define __pyx_n_u_SUBARRAY __pyx_string_tab[1286]
#define __pyx_n_u_SUBVERSION __pyx_string_tab[1287]
#define __pyx_n_u_SUCCESS __pyx_string_tab[1288]
#define __pyx_n_u_SUM __pyx_string_tab[1289]
#define __pyx_n_u_Scan __pyx_string_tab[1290]
#define __pyx_n_u_Scan_init __pyx_string_tab[1291]
#define __pyx_n_u_Scatter __pyx_string_tab[1292]
#define __pyx_n_u_Scatter_init __pyx_string_tab[1293]
#define __pyx_n_u_Scatterv __pyx_string_tab[1294]
#define __pyx_n_u_Scatterv_init __pyx_string_tab[1295]
#define __pyx_n_u_Seek __pyx_string_tab[1296]
#define __pyx_n_u_Seek_shared __pyx_string_tab[1297]
#define __pyx_n_u_Self __pyx_string_tab[1298]
#define __pyx_n_u_Send __pyx_string_tab[1299]
#define __pyx_n_u_Send_init __pyx_string_tab[1300]
#define __pyx_n_u_Sendrecv __pyx_string_tab[1301]
#define __pyx_n_u_Sendrecv_replace __pyx_string_tab[1302]
#define __pyx_n_u_Session __pyx_string_tab[1303]
#define __pyx_n_u_Session_Attach_buffer __pyx_string_tab[1304]
#define __pyx_n_u_Session_Call_errhandler __pyx_string_tab[1305]
#define __pyx_n_u_Session_Create_errhandler __pyx_string_tab[1306]
#define __pyx_n_u_Session_Create_group __pyx_string_tab[1307]
#define __pyx_n_u_Session_Detach_buffer __pyx_string_tab[1308]
#define __pyx_n_u_Session_Finalize __pyx_string_tab[1309]
#define __pyx_n_u_Session_Flush_buffer __pyx_string_tab[1310]
#define __pyx_n_u_Session_Get_errhandler __pyx_string_tab[1311]
#define __pyx_n_u_Session_Get_info __pyx_string_tab[1312]
#define __pyx_n_u_Session_Get_nth_pset __pyx_string_tab[1313]
#define __pyx_n_u_Session_Get_num_psets __pyx_string_tab[1314]
#define __pyx_n_u_Session_Get_pset_info __pyx_string_tab[1315]
#define __pyx_n_u_Session_Iflush_buffer __pyx_string_tab[1316]
#define __pyx_n_u_Session_Init __pyx_string_tab[1317]
#define __pyx_n_u_Session_Set_errhandler __pyx_string_tab[1318]
#define __pyx_n_u_Session___reduce __pyx_string_tab[1319]
#define __pyx_n_u_Session_f2py __pyx_string_tab[1320]
#define __pyx_n_u_Session_free __pyx_string_tab[1321]
#define __pyx_n_u_Session_fromhandle __pyx_string_tab[1322]
#define __pyx_n_u_Session_fromint __pyx_string_tab[1323]
#define __pyx_n_u_Session_py2f __pyx_string_tab[1324]
#define __pyx_n_u_Session_toint __pyx_string_tab[1325]
#define __pyx_n_u_Set __pyx_string_tab[1326]
#define __pyx_n_u_Set_atomicity __pyx_string_tab[1327]
#define __pyx_n_u_Set_attr __pyx_string_tab[1328]
#define __pyx_n_u_Set_cancelled __pyx_string_tab[1329]
#define __pyx_n_u_Set_elements __pyx_string_tab[1330]
#define __pyx_n_u_Set_errhandler __pyx_string_tab[1331]
#define __pyx_n_u_Set_error __pyx_string_tab[1332]
#define __pyx_n_u_Set_info __pyx_string_tab[1333]
#define __pyx_n_u_Set_name __pyx_string_tab[1334]
#define __pyx_n_u_Set_size __pyx_string_tab[1335]
#define __pyx_n_u_Set_source __pyx_string_tab[1336]
#define __pyx_n_u_Set_tag __pyx_string_tab[1337]
#define __pyx_n_u_Set_view __pyx_string_tab[1338]
#define __pyx_n_u_Shared_query __pyx_string_tab[1339]
#define __pyx_n_u_Shift __pyx_string_tab[1340]
#define __pyx_n_u_Shrink __pyx_string_tab[1341]
#define __pyx_n_u_Spawn __pyx_string_tab[1342]
#define __pyx_n_u_Spawn_multiple __pyx_string_tab[1343]
#define __pyx_n_u_Split __pyx_string_tab[1344]
#define __pyx_n_u_Split_type __pyx_string_tab[1345]
#define __pyx_n_u_Ssend __pyx_string_tab[1346]
#define __pyx_n_u_Ssend_init __pyx_string_tab[1347]
#define __pyx_n_u_Start __pyx_string_tab[1348]
#define __pyx_n_u_Startall __pyx_string_tab[1349]
#define __pyx_n_u_Status __pyx_string_tab[1350]
#define __pyx_n_u_Status_Get_count __pyx_string_tab[1351]
#define __pyx_n_u_Status_Get_elements __pyx_string_tab[1352]
#define __pyx_n_u_Status_Get_error __pyx_string_tab[1353]
#define __pyx_n_u_Status_Get_source __pyx_string_tab[1354]
#define __pyx_n_u_Status_Get_tag __pyx_string_tab[1355]
#define __pyx_n_u_Status_Is_cancelled __pyx_string_tab[1356]
#define __pyx_n_u_Status_Set_cancelled __pyx_string_tab[1357]
#define __pyx_n_u_Status_Set_elements __pyx_string_tab[1358]
#define __pyx_n_u_Status_Set_error __pyx_string_tab[1359]
#define __pyx_n_u_Status_Set_source __pyx_string_tab[1360]
#define __pyx_n_u_Status_Set_tag __pyx_string_tab[1361]
#define __pyx_n_u_Status___getstate __pyx_string_tab[1362]
#define __pyx_n_u_Status___reduce __pyx_string_tab[1363]
#define __pyx_n_u_Status___setstate __pyx_string_tab[1364]
#define __pyx_n_u_Status_f2py __pyx_string_tab[1365]
#define __pyx_n_u_Status_py2f __pyx_string_tab[1366]
#define __pyx_n_u_Status_tomemory __pyx_string_tab[1367]
#define __pyx_n_u_Sub __pyx_string_tab[1368]
#define __pyx_n_u_Sync __pyx_string_tab[1369]
#define __pyx_n_u_TAG_UB __pyx_string_tab[1370]
#define __pyx_n_u_THREAD_FUNNELED __pyx_string_tab[1371]
#define __pyx_n_u_THREAD_MULTIPLE __pyx_string_tab[1372]
#define __pyx_n_u_THREAD_SERIALIZED __pyx_string_tab[1373]
#define __pyx_n_u_THREAD_SINGLE __pyx_string_tab[1374]
#define __pyx_n_u_TWOINT __pyx_string_tab[1375]
#define __pyx_n_u_TYPECLASS_COMPLEX __pyx_string_tab[1376]
#define __pyx_n_u_TYPECLASS_INTEGER __pyx_string_tab[1377]
#define __pyx_n_u_TYPECLASS_LOGICAL __pyx_string_tab[1378]
#define __pyx_n_u_TYPECLASS_REAL __pyx_string_tab[1379]
#define __pyx_n_u_Test __pyx_string_tab[1380]
#define __pyx_n_u_Testall __pyx_string_tab[1381]
#define __pyx_n_u_Testany __pyx_string_tab[1382]
#define __pyx_n_u_Testsome __pyx_string_tab[1383]
#define __pyx_n_u_Topocomm __pyx_string_tab[1384]
#define __pyx_n_u_Topocomm_Ineighbor_allgather __pyx_string_tab[1385]
#define __pyx_n_u_Topocomm_Ineighbor_allgatherv __pyx_string_tab[1386]
#define __pyx_n_u_Topocomm_Ineighbor_alltoall __pyx_string_tab[1387]
#define __pyx_n_u_Topocomm_Ineighbor_alltoallv __pyx_string_tab[1388]
#define __pyx_n_u_Topocomm_Ineighbor_alltoallw __pyx_string_tab[1389]
#define __pyx_n_u_Topocomm_Neighbor_allgather __pyx_string_tab[1390]
#define __pyx_n_u_Topocomm_Neighbor_allgather_init __pyx_string_tab[1391]
#define __pyx_n_u_Topocomm_Neighbor_allgatherv __pyx_string_tab[1392]
#define __pyx_n_u_Topocomm_Neighbor_allgatherv_ini __pyx_string_tab[1393]
#define __pyx_n_u_Topocomm_Neighbor_alltoall __pyx_string_tab[1394]
#define __pyx_n_u_Topocomm_Neighbor_alltoall_init __pyx_string_tab[1395]
#define __pyx_n_u_Topocomm_Neighbor_alltoallv __pyx_string_tab[1396]
#define __pyx_n_u_Topocomm_Neighbor_alltoallv_init __pyx_string_tab[1397]
#define __pyx_n_u_Topocomm_Neighbor_alltoallw __pyx_string_tab[1398]
#define __pyx_n_u_Topocomm_Neighbor_alltoallw_init __pyx_string_tab[1399]
#define __pyx_n_u_Topocomm_neighbor_allgather __pyx_string_tab[1400]
#define __pyx_n_u_Topocomm_neighbor_alltoall __pyx_string_tab[1401]
#define __pyx_n_u_Translate_ranks __pyx_string_tab[1402]
#define __pyx_n_u_UINT16_T __pyx_string_tab[1403]
#define __pyx_n_u_UINT32_T __pyx_string_tab[1404]
#define __pyx_n_u_UINT64_T __pyx_string_tab[1405]
#define __pyx_n_u_UINT8_T __pyx_string_tab[1406]
#define __pyx_n_u_UNDEFINED __pyx_string_tab[1407]
#define __pyx_n_u_UNEQUAL __pyx_string_tab[1408]
#define __pyx_n_u_UNIVERSE_SIZE __pyx_string_tab[1409]
#define __pyx_n_u_UNSIGNED __pyx_string_tab[1410]
#define __pyx_n_u_UNSIGNED_CHAR __pyx_string_tab[1411]
#define __pyx_n_u_UNSIGNED_INT __pyx_string_tab[1412]
#define __pyx_n_u_UNSIGNED_LONG __pyx_string_tab[1413]
#define __pyx_n_u_UNSIGNED_LONG_LONG __pyx_string_tab[1414]
#define __pyx_n_u_UNSIGNED_SHORT __pyx_string_tab[1415]
#define __pyx_n_u_UNWEIGHTED __pyx_string_tab[1416]
#define __pyx_n_u_Union __pyx_string_tab[1417]
#define __pyx_n_u_Unlock __pyx_string_tab[1418]
#define __pyx_n_u_Unlock_all __pyx_string_tab[1419]
#define __pyx_n_u_Unpack __pyx_string_tab[1420]
#define __pyx_n_u_Unpack_external __pyx_string_tab[1421]
#define __pyx_n_u_Unpublish_name __pyx_string_tab[1422]
#define __pyx_n_u_V __pyx_string_tab[1423]
#define __pyx_n_u_VALUE_INDEX __pyx_string_tab[1424]
#define __pyx_n_u_VECTOR __pyx_string_tab[1425]
#define __pyx_n_u_VERSION __pyx_string_tab[1426]
#define __pyx_n_u_WCHAR __pyx_string_tab[1427]
#define __pyx_n_u_WEIGHTS_EMPTY __pyx_string_tab[1428]
#define __pyx_n_u_WIN_BASE __pyx_string_tab[1429]
#define __pyx_n_u_WIN_CREATE_FLAVOR __pyx_string_tab[1430]
#define __pyx_n_u_WIN_DISP_UNIT __pyx_string_tab[1431]
#define __pyx_n_u_WIN_FLAVOR __pyx_string_tab[1432]
#define __pyx_n_u_WIN_FLAVOR_ALLOCATE __pyx_string_tab[1433]
#define __pyx_n_u_WIN_FLAVOR_CREATE __pyx_string_tab[1434]
#define __pyx_n_u_WIN_FLAVOR_DYNAMIC __pyx_string_tab[1435]
#define __pyx_n_u_WIN_FLAVOR_SHARED __pyx_string_tab[1436]
#define __pyx_n_u_WIN_MODEL __pyx_string_tab[1437]
#define __pyx_n_u_WIN_NULL __pyx_string_tab[1438]
#define __pyx_n_u_WIN_SEPARATE __pyx_string_tab[1439]
#define __pyx_n_u_WIN_SIZE __pyx_string_tab[1440]
#define __pyx_n_u_WIN_UNIFIED __pyx_string_tab[1441]
#define __pyx_n_u_WTIME_IS_GLOBAL __pyx_string_tab[1442]
#define __pyx_n_u_Wait __pyx_string_tab[1443]
#define __pyx_n_u_Waitall __pyx_string_tab[1444]
#define __pyx_n_u_Waitany __pyx_string_tab[1445]
#define __pyx_n_u_Waitsome __pyx_string_tab[1446]
#define __pyx_n_u_Win __pyx_string_tab[1447]
#define __pyx_n_u_Win_Accumulate __pyx_string_tab[1448]
#define __pyx_n_u_Win_Allocate __pyx_string_tab[1449]
#define __pyx_n_u_Win_Allocate_shared __pyx_string_tab[1450]
#define __pyx_n_u_Win_Attach __pyx_string_tab[1451]
#define __pyx_n_u_Win_Call_errhandler __pyx_string_tab[1452]
#define __pyx_n_u_Win_Compare_and_swap __pyx_string_tab[1453]
#define __pyx_n_u_Win_Complete __pyx_string_tab[1454]
#define __pyx_n_u_Win_Create __pyx_string_tab[1455]
#define __pyx_n_u_Win_Create_dynamic __pyx_string_tab[1456]
#define __pyx_n_u_Win_Create_errhandler __pyx_string_tab[1457]
#define __pyx_n_u_Win_Create_keyval __pyx_string_tab[1458]
#define __pyx_n_u_Win_Delete_attr __pyx_string_tab[1459]
#define __pyx_n_u_Win_Detach __pyx_string_tab[1460]
#define __pyx_n_u_Win_Fence __pyx_string_tab[1461]
#define __pyx_n_u_Win_Fetch_and_op __pyx_string_tab[1462]
#define __pyx_n_u_Win_Flush __pyx_string_tab[1463]
#define __pyx_n_u_Win_Flush_all __pyx_string_tab[1464]
#define __pyx_n_u_Win_Flush_local __pyx_string_tab[1465]
#define __pyx_n_u_Win_Flush_local_all __pyx_string_tab[1466]
#define __pyx_n_u_Win_Free __pyx_string_tab[1467]
#define __pyx_n_u_Win_Free_keyval __pyx_string_tab[1468]
#define __pyx_n_u_Win_Get __pyx_string_tab[1469]
#define __pyx_n_u_Win_Get_accumulate __pyx_string_tab[1470]
#define __pyx_n_u_Win_Get_attr __pyx_string_tab[1471]
#define __pyx_n_u_Win_Get_errhandler __pyx_string_tab[1472]
#define __pyx_n_u_Win_Get_group __pyx_string_tab[1473]
#define __pyx_n_u_Win_Get_info __pyx_string_tab[1474]
#define __pyx_n_u_Win_Get_name __pyx_string_tab[1475]
#define __pyx_n_u_Win_Lock __pyx_string_tab[1476]
#define __pyx_n_u_Win_Lock_all __pyx_string_tab[1477]
#define __pyx_n_u_Win_Post __pyx_string_tab[1478]
#define __pyx_n_u_Win_Put __pyx_string_tab[1479]
#define __pyx_n_u_Win_Raccumulate __pyx_string_tab[1480]
#define __pyx_n_u_Win_Rget __pyx_string_tab[1481]
#define __pyx_n_u_Win_Rget_accumulate __pyx_string_tab[1482]
#define __pyx_n_u_Win_Rput __pyx_string_tab[1483]
#define __pyx_n_u_Win_Set_attr __pyx_string_tab[1484]
#define __pyx_n_u_Win_Set_errhandler __pyx_string_tab[1485]
#define __pyx_n_u_Win_Set_info __pyx_string_tab[1486]
#define __pyx_n_u_Win_Set_name __pyx_string_tab[1487]
#define __pyx_n_u_Win_Shared_query __pyx_string_tab[1488]
#define __pyx_n_u_Win_Start __pyx_string_tab[1489]
#define __pyx_n_u_Win_Sync __pyx_string_tab[1490]
#define __pyx_n_u_Win_Test __pyx_string_tab[1491]
#define __pyx_n_u_Win_Unlock __pyx_string_tab[1492]
#define __pyx_n_u_Win_Unlock_all __pyx_string_tab[1493]
#define __pyx_n_u_Win_Wait __pyx_string_tab[1494]
#define __pyx_n_u_Win___reduce __pyx_string_tab[1495]
#define __pyx_n_u_Win_f2py __pyx_string_tab[1496]
#define __pyx_n_u_Win_free __pyx_string_tab[1497]
#define __pyx_n_u_Win_fromhandle __pyx_string_tab[1498]
#define __pyx_n_u_Win_fromint __pyx_string_tab[1499]
#define __pyx_n_u_Win_py2f __pyx_string_tab[1500]
#define __pyx_n_u_Win_toint __pyx_string_tab[1501]
#define __pyx_n_u_Win_tomemory __pyx_string_tab[1502]
#define __pyx_n_u_Write __pyx_string_tab[1503]
#define __pyx_n_u_Write_all __pyx_string_tab[1504]
#define __pyx_n_u_Write_all_begin __pyx_string_tab[1505]
#define __pyx_n_u_Write_all_end __pyx_string_tab[1506]
#define __pyx_n_u_Write_at __pyx_string_tab[1507]
#define __pyx_n_u_Write_at_all __pyx_string_tab[1508]
#define __pyx_n_u_Write_at_all_begin __pyx_string_tab[1509]
#define __pyx_n_u_Write_at_all_end __pyx_string_tab[1510]
#define __pyx_n_u_Write_ordered __pyx_string_tab[1511]
#define __pyx_n_u_Write_ordered_begin __pyx_string_tab[1512]
#define __pyx_n_u_Write_ordered_end __pyx_string_tab[1513]
#define __pyx_n_u_Write_shared __pyx_string_tab[1514]
#define __pyx_n_u_Wtick __pyx_string_tab[1515]
#define __pyx_n_u_Wtime __pyx_string_tab[1516]
#define __pyx_n_u__136 __pyx_string_tab[1517]
#define __pyx_n_u_a __pyx_string_tab[1518]
#define __pyx_n_u_abort __pyx_string_tab[1519]
#define __pyx_n_u_addr __pyx_string_tab[1520]
#define __pyx_n_u_addr1 __pyx_string_tab[1521]
#define __pyx_n_u_addr2 __pyx_string_tab[1522]
#define __pyx_n_u_address __pyx_string_tab[1523]
#define __pyx_n_u_addresses __pyx_string_tab[1524]
#define __pyx_n_u_addressof __pyx_string_tab[1525]
#define __pyx_n_u_align __pyx_string_tab[1526]
#define __pyx_n_u_allgather __pyx_string_tab[1527]
#define __pyx_n_u_allocate __pyx_string_tab[1528]
#define __pyx_n_u_allocate_lock __pyx_string_tab[1529]
#define __pyx_n_u_allreduce __pyx_string_tab[1530]
#define __pyx_n_u_alltoall __pyx_string_tab[1531]
#define __pyx_n_u_amode __pyx_string_tab[1532]
#define __pyx_n_u_append __pyx_string_tab[1533]
#define __pyx_n_u_arg __pyx_string_tab[1534]
#define __pyx_n_u_argc __pyx_string_tab[1535]
#define __pyx_n_u_args __pyx_string_tab[1536]
#define __pyx_n_u_argv __pyx_string_tab[1537]
#define __pyx_n_u_argvs __pyx_string_tab[1538]
#define __pyx_n_u_array_of_partitions __pyx_string_tab[1539]
#define __pyx_n_u_assertion __pyx_string_tab[1540]
#define __pyx_n_u_asyncio_coroutines __pyx_string_tab[1541]
#define __pyx_n_u_attrval __pyx_string_tab[1542]
#define __pyx_n_u_barrier __pyx_string_tab[1543]
#define __pyx_n_u_base __pyx_string_tab[1544]
#define __pyx_n_u_baseptr __pyx_string_tab[1545]
#define __pyx_n_u_bcast __pyx_string_tab[1546]
#define __pyx_n_u_blocklength __pyx_string_tab[1547]
#define __pyx_n_u_blocklengths __pyx_string_tab[1548]
#define __pyx_n_u_bool __pyx_string_tab[1549]
#define __pyx_n_u_bool_2 __pyx_string_tab[1550]
#define __pyx_n_u_bsend __pyx_string_tab[1551]
#define __pyx_n_u_buf __pyx_string_tab[1552]
#define __pyx_n_u_buffer __pyx_string_tab[1553]
#define __pyx_n_u_buffer_allocate __pyx_string_tab[1554]
#define __pyx_n_u_buffer_callback __pyx_string_tab[1555]
#define __pyx_n_u_buffer_cast __pyx_string_tab[1556]
#define __pyx_n_u_buffer_fromaddress __pyx_string_tab[1557]
#define __pyx_n_u_buffer_frombuffer __pyx_string_tab[1558]
#define __pyx_n_u_buffer_release __pyx_string_tab[1559]
#define __pyx_n_u_buffer_tobytes __pyx_string_tab[1560]
#define __pyx_n_u_buffer_toreadonly __pyx_string_tab[1561]
#define __pyx_n_u_buffers __pyx_string_tab[1562]
#define __pyx_n_u_buflen __pyx_string_tab[1563]
#define __pyx_n_u_bytes __pyx_string_tab[1564]
#define __pyx_n_u_c __pyx_string_tab[1565]
#define __pyx_n_u_c_num_to_ack __pyx_string_tab[1566]
#define __pyx_n_u_c_status __pyx_string_tab[1567]
#define __pyx_n_u_call __pyx_string_tab[1568]
#define __pyx_n_u_cancel __pyx_string_tab[1569]
#define __pyx_n_u_cancel_fn __pyx_string_tab[1570]
#define __pyx_n_u_cancelled __pyx_string_tab[1571]
#define __pyx_n_u_cast __pyx_string_tab[1572]
#define __pyx_n_u_cdatarep __pyx_string_tab[1573]
#define __pyx_n_u_cerrhdl __pyx_string_tab[1574]
#define __pyx_n_u_cetype __pyx_string_tab[1575]
#define __pyx_n_u_cfilename __pyx_string_tab[1576]
#define __pyx_n_u_cftype __pyx_string_tab[1577]
#define __pyx_n_u_cinfo __pyx_string_tab[1578]
#define __pyx_n_u_ckey __pyx_string_tab[1579]
#define __pyx_n_u_class_getitem __pyx_string_tab[1580]
#define __pyx_n_u_clear __pyx_string_tab[1581]
#define __pyx_n_u_cline_in_traceback __pyx_string_tab[1582]
#define __pyx_n_u_cls __pyx_string_tab[1583]
#define __pyx_n_u_cmd __pyx_string_tab[1584]
#define __pyx_n_u_cmds __pyx_string_tab[1585]
#define __pyx_n_u_cmessage __pyx_string_tab[1586]
#define __pyx_n_u_cname __pyx_string_tab[1587]
#define __pyx_n_u_code __pyx_string_tab[1588]
#define __pyx_n_u_color __pyx_string_tab[1589]
#define __pyx_n_u_combiner __pyx_string_tab[1590]
#define __pyx_n_u_comm __pyx_string_tab[1591]
#define __pyx_n_u_comm_lock __pyx_string_tab[1592]
#define __pyx_n_u_comm_lock_table __pyx_string_tab[1593]
#define __pyx_n_u_command __pyx_string_tab[1594]
#define __pyx_n_u_commctx_inter_2 __pyx_string_tab[1595]
#define __pyx_n_u_commctx_intra_2 __pyx_string_tab[1596]
#define __pyx_n_u_commute __pyx_string_tab[1597]
#define __pyx_n_u_compare __pyx_string_tab[1598]
#define __pyx_n_u_complete __pyx_string_tab[1599]
#define __pyx_n_u_coords __pyx_string_tab[1600]
#define __pyx_n_u_copy __pyx_string_tab[1601]
#define __pyx_n_u_copy_2 __pyx_string_tab[1602]
#define __pyx_n_u_copy_fn __pyx_string_tab[1603]
#define __pyx_n_u_copyreg __pyx_string_tab[1604]
#define __pyx_n_u_count __pyx_string_tab[1605]
#define __pyx_n_u_counts __pyx_string_tab[1606]
#define __pyx_n_u_cportname __pyx_string_tab[1607]
#define __pyx_n_u_csrvcname __pyx_string_tab[1608]
#define __pyx_n_u_cstring __pyx_string_tab[1609]
#define __pyx_n_u_cstringtag __pyx_string_tab[1610]
#define __pyx_n_u_cuda_array_interface __pyx_string_tab[1611]
#define __pyx_n_u_cvalue __pyx_string_tab[1612]
#define __pyx_n_u_d __pyx_string_tab[1613]
#define __pyx_n_u_dargs __pyx_string_tab[1614]
#define __pyx_n_u_data __pyx_string_tab[1615]
#define __pyx_n_u_datarep __pyx_string_tab[1616]
#define __pyx_n_u_datatype __pyx_string_tab[1617]
#define __pyx_n_u_datatype_create __pyx_string_tab[1618]
#define __pyx_n_u_datatype_decode __pyx_string_tab[1619]
#define __pyx_n_u_datatypes __pyx_string_tab[1620]
#define __pyx_n_u_decode __pyx_string_tab[1621]
#define __pyx_n_u_default __pyx_string_tab[1622]
#define __pyx_n_u_degrees __pyx_string_tab[1623]
#define __pyx_n_u_del __pyx_string_tab[1624]
#define __pyx_n_u_delete_fn __pyx_string_tab[1625]
#define __pyx_n_u_descr __pyx_string_tab[1626]
#define __pyx_n_u_dest __pyx_string_tab[1627]
#define __pyx_n_u_destinations __pyx_string_tab[1628]
#define __pyx_n_u_destweights __pyx_string_tab[1629]
#define __pyx_n_u_dict __pyx_string_tab[1630]
#define __pyx_n_u_dim __pyx_string_tab[1631]
#define __pyx_n_u_dims __pyx_string_tab[1632]
#define __pyx_n_u_direction __pyx_string_tab[1633]
#define __pyx_n_u_disp __pyx_string_tab[1634]
#define __pyx_n_u_disp_unit __pyx_string_tab[1635]
#define __pyx_n_u_displacements __pyx_string_tab[1636]
#define __pyx_n_u_distribs __pyx_string_tab[1637]
#define __pyx_n_u_dlpack __pyx_string_tab[1638]
#define __pyx_n_u_dlpack_device __pyx_string_tab[1639]
#define __pyx_n_u_doc __pyx_string_tab[1640]
#define __pyx_n_u_dst __pyx_string_tab[1641]
#define __pyx_n_u_dtype __pyx_string_tab[1642]
#define __pyx_n_u_dumps __pyx_string_tab[1643]
#define __pyx_n_u_dumps_oob __pyx_string_tab[1644]
#define __pyx_n_u_dupcomm __pyx_string_tab[1645]
#define __pyx_n_u_dw __pyx_string_tab[1646]
#define __pyx_n_u_edges __pyx_string_tab[1647]
#define __pyx_n_u_elements __pyx_string_tab[1648]
#define __pyx_n_u_enter __pyx_string_tab[1649]
#define __pyx_n_u_eq __pyx_string_tab[1650]
#define __pyx_n_u_errcodes __pyx_string_tab[1651]
#define __pyx_n_u_errhandler __pyx_string_tab[1652]
#define __pyx_n_u_errhandler_fn __pyx_string_tab[1653]
#define __pyx_n_u_error __pyx_string_tab[1654]
#define __pyx_n_u_error_class __pyx_string_tab[1655]
#define __pyx_n_u_error_code_2 __pyx_string_tab[1656]
#define __pyx_n_u_error_string __pyx_string_tab[1657]
#define __pyx_n_u_errorclass __pyx_string_tab[1658]
#define __pyx_n_u_errorcode __pyx_string_tab[1659]
#define __pyx_n_u_etype __pyx_string_tab[1660]
#define __pyx_n_u_ex __pyx_string_tab[1661]
#define __pyx_n_u_exception __pyx_string_tab[1662]
#define __pyx_n_u_exit __pyx_string_tab[1663]
#define __pyx_n_u_exscan __pyx_string_tab[1664]
#define __pyx_n_u_extent __pyx_string_tab[1665]
#define __pyx_n_u_extent_fn __pyx_string_tab[1666]
#define __pyx_n_u_f2py __pyx_string_tab[1667]
#define __pyx_n_u_f_status __pyx_string_tab[1668]
#define __pyx_n_u_fatal __pyx_string_tab[1669]
#define __pyx_n_u_fd __pyx_string_tab[1670]
#define __pyx_n_u_file __pyx_string_tab[1671]
#define __pyx_n_u_filename __pyx_string_tab[1672]
#define __pyx_n_u_filetype __pyx_string_tab[1673]
#define __pyx_n_u_flag __pyx_string_tab[1674]
#define __pyx_n_u_flag_len __pyx_string_tab[1675]
#define __pyx_n_u_flag_ptr __pyx_string_tab[1676]
#define __pyx_n_u_flags __pyx_string_tab[1677]
#define __pyx_n_u_float __pyx_string_tab[1678]
#define __pyx_n_u_fn __pyx_string_tab[1679]
#define __pyx_n_u_fn_c __pyx_string_tab[1680]
#define __pyx_n_u_fn_i __pyx_string_tab[1681]
#define __pyx_n_u_format __pyx_string_tab[1682]
#define __pyx_n_u_free __pyx_string_tab[1683]
#define __pyx_n_u_free_fn __pyx_string_tab[1684]
#define __pyx_n_u_fromaddress __pyx_string_tab[1685]
#define __pyx_n_u_frombuffer __pyx_string_tab[1686]
#define __pyx_n_u_fromcode __pyx_string_tab[1687]
#define __pyx_n_u_fromhandle __pyx_string_tab[1688]
#define __pyx_n_u_fromint __pyx_string_tab[1689]
#define __pyx_n_u_fspath __pyx_string_tab[1690]
#define __pyx_n_u_ftype __pyx_string_tab[1691]
#define __pyx_n_u_func __pyx_string_tab[1692]
#define __pyx_n_u_function __pyx_string_tab[1693]
#define __pyx_n_u_funneled __pyx_string_tab[1694]
#define __pyx_n_u_gather __pyx_string_tab[1695]
#define __pyx_n_u_ge __pyx_string_tab[1696]
#define __pyx_n_u_get __pyx_string_tab[1697]
#define __pyx_n_u_get_buffer_callback_locals_buffe __pyx_string_tab[1698]
#define __pyx_n_u_get_status __pyx_string_tab[1699]
#define __pyx_n_u_get_status_all __pyx_string_tab[1700]
#define __pyx_n_u_get_status_any __pyx_string_tab[1701]
#define __pyx_n_u_get_status_some __pyx_string_tab[1702]
#define __pyx_n_u_get_vendor __pyx_string_tab[1703]
#define __pyx_n_u_getstate __pyx_string_tab[1704]
#define __pyx_n_u_grequest __pyx_string_tab[1705]
#define __pyx_n_u_group __pyx_string_tab[1706]
#define __pyx_n_u_group1 __pyx_string_tab[1707]
#define __pyx_n_u_group2 __pyx_string_tab[1708]
#define __pyx_n_u_gsizes __pyx_string_tab[1709]
#define __pyx_n_u_gt __pyx_string_tab[1710]
#define __pyx_n_u_handle __pyx_string_tab[1711]
#define __pyx_n_u_handleof __pyx_string_tab[1712]
#define __pyx_n_u_hash __pyx_string_tab[1713]
#define __pyx_n_u_high __pyx_string_tab[1714]
#define __pyx_n_u_i __pyx_string_tab[1715]
#define __pyx_n_u_iblen __pyx_string_tab[1716]
#define __pyx_n_u_ibptr __pyx_string_tab[1717]
#define __pyx_n_u_ibsend __pyx_string_tab[1718]
#define __pyx_n_u_icoords __pyx_string_tab[1719]
#define __pyx_n_u_icount __pyx_string_tab[1720]
#define __pyx_n_u_idargs __pyx_string_tab[1721]
#define __pyx_n_u_idegree __pyx_string_tab[1722]
#define __pyx_n_u_idest __pyx_string_tab[1723]
#define __pyx_n_u_idestweight __pyx_string_tab[1724]
#define __pyx_n_u_idims __pyx_string_tab[1725]
#define __pyx_n_u_idisp __pyx_string_tab[1726]
#define __pyx_n_u_idistribs __pyx_string_tab[1727]
#define __pyx_n_u_iedges __pyx_string_tab[1728]
#define __pyx_n_u_ierr __pyx_string_tab[1729]
#define __pyx_n_u_ierrcodes __pyx_string_tab[1730]
#define __pyx_n_u_igsizes __pyx_string_tab[1731]
#define __pyx_n_u_iindex __pyx_string_tab[1732]
#define __pyx_n_u_imaxprocs __pyx_string_tab[1733]
#define __pyx_n_u_improbe __pyx_string_tab[1734]
#define __pyx_n_u_inbuf __pyx_string_tab[1735]
#define __pyx_n_u_indegree __pyx_string_tab[1736]
#define __pyx_n_u_index __pyx_string_tab[1737]
#define __pyx_n_u_indices __pyx_string_tab[1738]
#define __pyx_n_u_ineighbors __pyx_string_tab[1739]
#define __pyx_n_u_info __pyx_string_tab[1740]
#define __pyx_n_u_infos __pyx_string_tab[1741]
#define __pyx_n_u_init __pyx_string_tab[1742]
#define __pyx_n_u_inoutbuf __pyx_string_tab[1743]
#define __pyx_n_u_inoutedges __pyx_string_tab[1744]
#define __pyx_n_u_insert __pyx_string_tab[1745]
#define __pyx_n_u_int __pyx_string_tab[1746]
#define __pyx_n_u_int_2 __pyx_string_tab[1747]
#define __pyx_n_u_integers __pyx_string_tab[1748]
#define __pyx_n_u_iperiods __pyx_string_tab[1749]
#define __pyx_n_u_iprobe __pyx_string_tab[1750]
#define __pyx_n_u_ipsizes __pyx_string_tab[1751]
#define __pyx_n_u_iranks __pyx_string_tab[1752]
#define __pyx_n_u_iranks1 __pyx_string_tab[1753]
#define __pyx_n_u_iranks2 __pyx_string_tab[1754]
#define __pyx_n_u_irecv __pyx_string_tab[1755]
#define __pyx_n_u_iremdims __pyx_string_tab[1756]
#define __pyx_n_u_is_coroutine __pyx_string_tab[1757]
#define __pyx_n_u_isend __pyx_string_tab[1758]
#define __pyx_n_u_isizes __pyx_string_tab[1759]
#define __pyx_n_u_isource __pyx_string_tab[1760]
#define __pyx_n_u_isourceweight __pyx_string_tab[1761]
#define __pyx_n_u_issend __pyx_string_tab[1762]
#define __pyx_n_u_istarts __pyx_string_tab[1763]
#define __pyx_n_u_isubsizes __pyx_string_tab[1764]
#define __pyx_n_u_items __pyx_string_tab[1765]
#define __pyx_n_u_iweight __pyx_string_tab[1766]
#define __pyx_n_u_j __pyx_string_tab[1767]
#define __pyx_n_u_join __pyx_string_tab[1768]
#define __pyx_n_u_k __pyx_string_tab[1769]
#define __pyx_n_u_key __pyx_string_tab[1770]
#define __pyx_n_u_keys __pyx_string_tab[1771]
#define __pyx_n_u_keyval __pyx_string_tab[1772]
#define __pyx_n_u_keyval_registry __pyx_string_tab[1773]
#define __pyx_n_u_keyval_save __pyx_string_tab[1774]
#define __pyx_n_u_kwargs __pyx_string_tab[1775]
#define __pyx_n_u_kwds __pyx_string_tab[1776]
#define __pyx_n_u_lb_2 __pyx_string_tab[1777]
#define __pyx_n_u_le __pyx_string_tab[1778]
#define __pyx_n_u_length __pyx_string_tab[1779]
#define __pyx_n_u_level __pyx_string_tab[1780]
#define __pyx_n_u_loads __pyx_string_tab[1781]
#define __pyx_n_u_loads_oob __pyx_string_tab[1782]
#define __pyx_n_u_local_group __pyx_string_tab[1783]
#define __pyx_n_u_local_leader __pyx_string_tab[1784]
#define __pyx_n_u_localcomm __pyx_string_tab[1785]
#define __pyx_n_u_location __pyx_string_tab[1786]
#define __pyx_n_u_lock_type __pyx_string_tab[1787]
#define __pyx_n_u_low_group __pyx_string_tab[1788]
#define __pyx_n_u_lower __pyx_string_tab[1789]
#define __pyx_n_u_lt __pyx_string_tab[1790]
#define __pyx_n_u_m __pyx_string_tab[1791]
#define __pyx_n_u_main __pyx_string_tab[1792]
#define __pyx_n_u_major __pyx_string_tab[1793]
#define __pyx_n_u_mark __pyx_string_tab[1794]
#define __pyx_n_u_mask __pyx_string_tab[1795]
#define __pyx_n_u_max_version __pyx_string_tab[1796]
#define __pyx_n_u_maxindegree __pyx_string_tab[1797]
#define __pyx_n_u_maxoutdegree __pyx_string_tab[1798]
#define __pyx_n_u_maxprocs __pyx_string_tab[1799]
#define __pyx_n_u_mem __pyx_string_tab[1800]
#define __pyx_n_u_memory __pyx_string_tab[1801]
#define __pyx_n_u_memoryview __pyx_string_tab[1802]
#define __pyx_n_u_message __pyx_string_tab[1803]
#define __pyx_n_u_metaclass __pyx_string_tab[1804]
#define __pyx_n_u_micro __pyx_string_tab[1805]
#define __pyx_n_u_minor __pyx_string_tab[1806]
#define __pyx_n_u_module __pyx_string_tab[1807]
#define __pyx_n_u_mpi4py_MPI __pyx_string_tab[1808]
#define __pyx_n_u_mprobe __pyx_string_tab[1809]
#define __pyx_n_u_mro_entries __pyx_string_tab[1810]
#define __pyx_n_u_msg __pyx_string_tab[1811]
#define __pyx_n_u_multiple __pyx_string_tab[1812]
#define __pyx_n_u_n __pyx_string_tab[1813]
#define __pyx_n_u_na __pyx_string_tab[1814]
#define __pyx_n_u_name __pyx_string_tab[1815]
#define __pyx_n_u_name_2 __pyx_string_tab[1816]
#define __pyx_n_u_native __pyx_string_tab[1817]
#define __pyx_n_u_nbytes __pyx_string_tab[1818]
#define __pyx_n_u_nc __pyx_string_tab[1819]
#define __pyx_n_u_nd __pyx_string_tab[1820]
#define __pyx_n_u_ndim __pyx_string_tab[1821]
#define __pyx_n_u_ndims __pyx_string_tab[1822]
#define __pyx_n_u_ne __pyx_string_tab[1823]
#define __pyx_n_u_ne_2 __pyx_string_tab[1824]
#define __pyx_n_u_nedges __pyx_string_tab[1825]
#define __pyx_n_u_neighbor_allgather __pyx_string_tab[1826]
#define __pyx_n_u_neighbor_alltoall __pyx_string_tab[1827]
#define __pyx_n_u_neighbors __pyx_string_tab[1828]
#define __pyx_n_u_newobj __pyx_string_tab[1829]
#define __pyx_n_u_ni __pyx_string_tab[1830]
#define __pyx_n_u_nindex __pyx_string_tab[1831]
#define __pyx_n_u_nkeys __pyx_string_tab[1832]
#define __pyx_n_u_nlen __pyx_string_tab[1833]
#define __pyx_n_u_nneighbors __pyx_string_tab[1834]
#define __pyx_n_u_nnodes __pyx_string_tab[1835]
#define __pyx_n_u_no __pyx_string_tab[1836]
#define __pyx_n_u_nopython __pyx_string_tab[1837]
#define __pyx_n_u_np __pyx_string_tab[1838]
#define __pyx_n_u_num_acked __pyx_string_tab[1839]
#define __pyx_n_u_num_psets __pyx_string_tab[1840]
#define __pyx_n_u_num_to_ack __pyx_string_tab[1841]
#define __pyx_n_u_nv __pyx_string_tab[1842]
#define __pyx_n_u_ob __pyx_string_tab[1843]
#define __pyx_n_u_obj __pyx_string_tab[1844]
#define __pyx_n_u_object __pyx_string_tab[1845]
#define __pyx_n_u_oblen __pyx_string_tab[1846]
#define __pyx_n_u_obptr __pyx_string_tab[1847]
#define __pyx_n_u_ocount __pyx_string_tab[1848]
#define __pyx_n_u_offset __pyx_string_tab[1849]
#define __pyx_n_u_op __pyx_string_tab[1850]
#define __pyx_n_u_order __pyx_string_tab[1851]
#define __pyx_n_u_origin __pyx_string_tab[1852]
#define __pyx_n_u_other __pyx_string_tab[1853]
#define __pyx_n_u_outbuf __pyx_string_tab[1854]
#define __pyx_n_u_outdegree __pyx_string_tab[1855]
#define __pyx_n_u_p __pyx_string_tab[1856]
#define __pyx_n_u_params __pyx_string_tab[1857]
#define __pyx_n_u_partition __pyx_string_tab[1858]
#define __pyx_n_u_partition_high __pyx_string_tab[1859]
#define __pyx_n_u_partition_low __pyx_string_tab[1860]
#define __pyx_n_u_partitions __pyx_string_tab[1861]
#define __pyx_n_u_peer_comm __pyx_string_tab[1862]
#define __pyx_n_u_periods __pyx_string_tab[1863]
#define __pyx_n_u_pickle __pyx_string_tab[1864]
#define __pyx_n_u_pop __pyx_string_tab[1865]
#define __pyx_n_u_popitem __pyx_string_tab[1866]
#define __pyx_n_u_port_name __pyx_string_tab[1867]
#define __pyx_n_u_position __pyx_string_tab[1868]
#define __pyx_n_u_prepare __pyx_string_tab[1869]
#define __pyx_n_u_probe __pyx_string_tab[1870]
#define __pyx_n_u_property __pyx_string_tab[1871]
#define __pyx_n_u_protocol __pyx_string_tab[1872]
#define __pyx_n_u_provided __pyx_string_tab[1873]
#define __pyx_n_u_pset_name __pyx_string_tab[1874]
#define __pyx_n_u_psizes __pyx_string_tab[1875]
#define __pyx_n_u_ptr __pyx_string_tab[1876]
#define __pyx_n_u_ptype __pyx_string_tab[1877]
#define __pyx_n_u_py2f __pyx_string_tab[1878]
#define __pyx_n_u_pyx_capi __pyx_string_tab[1879]
#define __pyx_n_u_pyx_vtable __pyx_string_tab[1880]
#define __pyx_n_u_q __pyx_string_tab[1881]
#define __pyx_n_u_qualname __pyx_string_tab[1882]
#define __pyx_n_u_query_fn __pyx_string_tab[1883]
#define __pyx_n_u_r __pyx_string_tab[1884]
#define __pyx_n_u_ranges __pyx_string_tab[1885]
#define __pyx_n_u_rank __pyx_string_tab[1886]
#define __pyx_n_u_ranks __pyx_string_tab[1887]
#define __pyx_n_u_ranks2 __pyx_string_tab[1888]
#define __pyx_n_u_rc __pyx_string_tab[1889]
#define __pyx_n_u_rd __pyx_string_tab[1890]
#define __pyx_n_u_read_fn __pyx_string_tab[1891]
#define __pyx_n_u_readonly __pyx_string_tab[1892]
#define __pyx_n_u_recv __pyx_string_tab[1893]
#define __pyx_n_u_recvbuf __pyx_string_tab[1894]
#define __pyx_n_u_recvcounts __pyx_string_tab[1895]
#define __pyx_n_u_recvtag __pyx_string_tab[1896]
#define __pyx_n_u_reduce __pyx_string_tab[1897]
#define __pyx_n_u_reduce_2 __pyx_string_tab[1898]
#define __pyx_n_u_release __pyx_string_tab[1899]
#define __pyx_n_u_remain_dims __pyx_string_tab[1900]
#define __pyx_n_u_remote_group __pyx_string_tab[1901]
#define __pyx_n_u_remote_leader __pyx_string_tab[1902]
#define __pyx_n_u_reorder __pyx_string_tab[1903]
#define __pyx_n_u_repr __pyx_string_tab[1904]
#define __pyx_n_u_request __pyx_string_tab[1905]
#define __pyx_n_u_requests __pyx_string_tab[1906]
#define __pyx_n_u_required __pyx_string_tab[1907]
#define __pyx_n_u_result __pyx_string_tab[1908]
#define __pyx_n_u_resultlen __pyx_string_tab[1909]
#define __pyx_n_u_return __pyx_string_tab[1910]
#define __pyx_n_u_rmsg __pyx_string_tab[1911]
#define __pyx_n_u_root __pyx_string_tab[1912]
#define __pyx_n_u_rs __pyx_string_tab[1913]
#define __pyx_n_u_s __pyx_string_tab[1914]
#define __pyx_n_u_save __pyx_string_tab[1915]
#define __pyx_n_u_scan __pyx_string_tab[1916]
#define __pyx_n_u_scatter __pyx_string_tab[1917]
#define __pyx_n_u_self __pyx_string_tab[1918]
#define __pyx_n_u_send __pyx_string_tab[1919]
#define __pyx_n_u_sendbuf __pyx_string_tab[1920]
#define __pyx_n_u_sendobj __pyx_string_tab[1921]
#define __pyx_n_u_sendrecv __pyx_string_tab[1922]
#define __pyx_n_u_sendtag __pyx_string_tab[1923]
#define __pyx_n_u_serialized __pyx_string_tab[1924]
#define __pyx_n_u_service_name __pyx_string_tab[1925]
#define __pyx_n_u_session __pyx_string_tab[1926]
#define __pyx_n_u_set_abort_status __pyx_string_tab[1927]
#define __pyx_n_u_set_name __pyx_string_tab[1928]
#define __pyx_n_u_setdefault __pyx_string_tab[1929]
#define __pyx_n_u_setstate __pyx_string_tab[1930]
#define __pyx_n_u_shape __pyx_string_tab[1931]
#define __pyx_n_u_single __pyx_string_tab[1932]
#define __pyx_n_u_size_2 __pyx_string_tab[1933]
#define __pyx_n_u_sizeof __pyx_string_tab[1934]
#define __pyx_n_u_sizes __pyx_string_tab[1935]
#define __pyx_n_u_smsg __pyx_string_tab[1936]
#define __pyx_n_u_source __pyx_string_tab[1937]
#define __pyx_n_u_sources __pyx_string_tab[1938]
#define __pyx_n_u_sourceweights __pyx_string_tab[1939]
#define __pyx_n_u_split_type __pyx_string_tab[1940]
#define __pyx_n_u_src __pyx_string_tab[1941]
#define __pyx_n_u_ssend __pyx_string_tab[1942]
#define __pyx_n_u_starts __pyx_string_tab[1943]
#define __pyx_n_u_state __pyx_string_tab[1944]
#define __pyx_n_u_staticmethod __pyx_string_tab[1945]
#define __pyx_n_u_status __pyx_string_tab[1946]
#define __pyx_n_u_statuses __pyx_string_tab[1947]
#define __pyx_n_u_statusp __pyx_string_tab[1948]
#define __pyx_n_u_str __pyx_string_tab[1949]
#define __pyx_n_u_str_2 __pyx_string_tab[1950]
#define __pyx_n_u_stream __pyx_string_tab[1951]
#define __pyx_n_u_stride __pyx_string_tab[1952]
#define __pyx_n_u_strides __pyx_string_tab[1953]
#define __pyx_n_u_string __pyx_string_tab[1954]
#define __pyx_n_u_stringtag __pyx_string_tab[1955]
#define __pyx_n_u_subsizes __pyx_string_tab[1956]
#define __pyx_n_u_subversion __pyx_string_tab[1957]
#define __pyx_n_u_sw __pyx_string_tab[1958]
#define __pyx_n_u_tag __pyx_string_tab[1959]
#define __pyx_n_u_target __pyx_string_tab[1960]
#define __pyx_n_u_target_disp __pyx_string_tab[1961]
#define __pyx_n_u_target_rank __pyx_string_tab[1962]
#define __pyx_n_u_tc __pyx_string_tab[1963]
#define __pyx_n_u_test __pyx_string_tab[1964]
#define __pyx_n_u_testall __pyx_string_tab[1965]
#define __pyx_n_u_testany __pyx_string_tab[1966]
#define __pyx_n_u_testsome __pyx_string_tab[1967]
#define __pyx_n_u_thread __pyx_string_tab[1968]
#define __pyx_n_u_threading __pyx_string_tab[1969]
#define __pyx_n_u_threshold __pyx_string_tab[1970]
#define __pyx_n_u_tobytes __pyx_string_tab[1971]
#define __pyx_n_u_tocode __pyx_string_tab[1972]
#define __pyx_n_u_toint __pyx_string_tab[1973]
#define __pyx_n_u_tomemory __pyx_string_tab[1974]
#define __pyx_n_u_topo __pyx_string_tab[1975]
#define __pyx_n_u_toreadonly __pyx_string_tab[1976]
#define __pyx_n_u_typealign __pyx_string_tab[1977]
#define __pyx_n_u_typeclass __pyx_string_tab[1978]
#define __pyx_n_u_typecode __pyx_string_tab[1979]
#define __pyx_n_u_typedict __pyx_string_tab[1980]
#define __pyx_n_u_typedict_c __pyx_string_tab[1981]
#define __pyx_n_u_typedict_f __pyx_string_tab[1982]
#define __pyx_n_u_typestr __pyx_string_tab[1983]
#define __pyx_n_u_unused __pyx_string_tab[1984]
#define __pyx_n_u_unused1 __pyx_string_tab[1985]
#define __pyx_n_u_unused2 __pyx_string_tab[1986]
#define __pyx_n_u_unused3 __pyx_string_tab[1987]
#define __pyx_n_u_unused4 __pyx_string_tab[1988]
#define __pyx_n_u_unused5 __pyx_string_tab[1989]
#define __pyx_n_u_update __pyx_string_tab[1990]
#define __pyx_n_u_upper __pyx_string_tab[1991]
#define __pyx_n_u_val __pyx_string_tab[1992]
#define __pyx_n_u_value __pyx_string_tab[1993]
#define __pyx_n_u_values __pyx_string_tab[1994]
#define __pyx_n_u_version __pyx_string_tab[1995]
#define __pyx_n_u_wait __pyx_string_tab[1996]
#define __pyx_n_u_waitall __pyx_string_tab[1997]
#define __pyx_n_u_waitany __pyx_string_tab[1998]
#define __pyx_n_u_waitsome __pyx_string_tab[1999]
#define __pyx_n_u_weighted __pyx_string_tab[2000]
#define __pyx_n_u_weights __pyx_string_tab[2001]
#define __pyx_n_u_whence __pyx_string_tab[2002]
#define __pyx_n_u_win __pyx_string_tab[2003]
#define __pyx_n_u_wr __pyx_string_tab[2004]
#define __pyx_n_u_write_fn __pyx_string_tab[2005]
#define __pyx_n_u_x __pyx_string_tab[2006]
#define __pyx_n_u_xs __pyx_string_tab[2007]
#define __pyx_n_u_y __pyx_string_tab[2008]
#define __pyx_n_u_yes __pyx_string_tab[2009]
#define __pyx_kp_b_ __pyx_string_tab[2010]
#define __pyx_kp_b_MPI_Comm_PyObject_MPI_Datatype_P __pyx_string_tab[2011]
#define __pyx_kp_b_iso88591_0_b_at9KvQhaq __pyx_string_tab[2012]
#define __pyx_kp_b_iso88591_1D __pyx_string_tab[2013]
#define __pyx_kp_b_iso88591_1D_q_A_4wha_3a_HA __pyx_string_tab[2014]
#define __pyx_kp_b_iso88591_1HAV1_F_N_4y_t83fA_t81Ja __pyx_string_tab[2015]
#define __pyx_kp_b_iso88591_1_1A_q_IQgYaq_IQ __pyx_string_tab[2016]
#define __pyx_kp_b_iso88591_1_2 __pyx_string_tab[2017]
#define __pyx_kp_b_iso88591_1_4q_A_3gV6_s_at5 __pyx_string_tab[2018]
#define __pyx_kp_b_iso88591_1_4vWA_D_AQ_6_F_q __pyx_string_tab[2019]
#define __pyx_kp_b_iso88591_1_5_F_Qd_1E_q __pyx_string_tab[2020]
#define __pyx_kp_b_iso88591_1_7_Qa_F_N_4y_a_q __pyx_string_tab[2021]
#define __pyx_kp_b_iso88591_1_7_Qa_F_at9AU_q __pyx_string_tab[2022]
#define __pyx_kp_b_iso88591_1_81N_1_7_Qe1_b_q_7_Q_1_6 __pyx_string_tab[2023]
#define __pyx_kp_b_iso88591_1_AQ_b_aq __pyx_string_tab[2024]
#define __pyx_kp_b_iso88591_1_F_AT_a __pyx_string_tab[2025]
#define __pyx_kp_b_iso88591_1_F_Q_Q __pyx_string_tab[2026]
#define __pyx_kp_b_iso88591_1_F_Qd __pyx_string_tab[2027]
#define __pyx_kp_b_iso88591_1_F_Qd_4q __pyx_string_tab[2028]
#define __pyx_kp_b_iso88591_1_F_at9AQ_q __pyx_string_tab[2029]
#define __pyx_kp_b_iso88591_1_Q_gQ_1_M_iq_F_q_q_q __pyx_string_tab[2030]
#define __pyx_kp_b_iso88591_1_a_F_6a_1_q __pyx_string_tab[2031]
#define __pyx_kp_b_iso88591_1_b_4y_q __pyx_string_tab[2032]
#define __pyx_kp_b_iso88591_1_b_AQd_1A_q __pyx_string_tab[2033]
#define __pyx_kp_b_iso88591_1_nAQ_q_2Q_c_6_O1HG1_1E_T_e1A_1 __pyx_string_tab[2034]
#define __pyx_kp_b_iso88591_1_q_AT_E_t5 __pyx_string_tab[2035]
#define __pyx_kp_b_iso88591_2_1_4q_4q_Qa_6_1_5_D_4xs_D_q __pyx_string_tab[2036]
#define __pyx_kp_b_iso88591_2_1_Qa_F_HA_T_4xs_q __pyx_string_tab[2037]
#define __pyx_kp_b_iso88591_2_1_Qa_F_HA_T_6_4xs_Q __pyx_string_tab[2038]
#define __pyx_kp_b_iso88591_2_q_b_q_IQa_ha_F_1_Zs_1_F_L_Yj __pyx_string_tab[2039]
#define __pyx_kp_b_iso88591_2_q_q_hat1C_Qa_b_Yc_vQa __pyx_string_tab[2040]
#define __pyx_kp_b_iso88591_31_a_m1E_F_4A_q __pyx_string_tab[2041]
#define __pyx_kp_b_iso88591_31_a_m1E_F_7q_q __pyx_string_tab[2042]
#define __pyx_kp_b_iso88591_36_a_F_M_ixq __pyx_string_tab[2043]
#define __pyx_kp_b_iso88591_3at1A_b_XQha_q __pyx_string_tab[2044]
#define __pyx_kp_b_iso88591_4O1_b_4y __pyx_string_tab[2045]
#define __pyx_kp_b_iso88591_4O1_b_at9Ja __pyx_string_tab[2046]
#define __pyx_kp_b_iso88591_4O1_b_q_IZq __pyx_string_tab[2047]
#define __pyx_kp_b_iso88591_4vV1_Zq_6_CvQ_d_QfBa_D_G1A_Q __pyx_string_tab[2048]
#define __pyx_kp_b_iso88591_4vWA_1_Zq_E_aq_k_d_1_q __pyx_string_tab[2049]
#define __pyx_kp_b_iso88591_4xs_t83d_l_1_D_O4q_F_1_O4q __pyx_string_tab[2050]
#define __pyx_kp_b_iso88591_5Q_Kq_Qa_HAU_1_JauAQ_83a_Qj_Qa __pyx_string_tab[2051]
#define __pyx_kp_b_iso88591_5_Kq_az_awa_a_F_a_WAWAYaxt1 __pyx_string_tab[2052]
#define __pyx_kp_b_iso88591_6_q_F_M_T __pyx_string_tab[2053]
#define __pyx_kp_b_iso88591_6_q_b_iq __pyx_string_tab[2054]
#define __pyx_kp_b_iso88591_6a_a_b_r_Yaq_b_Qd_9AQ_q __pyx_string_tab[2055]
#define __pyx_kp_b_iso88591_6fF_F_L_T __pyx_string_tab[2056]
#define __pyx_kp_b_iso88591_7_Qa_F_1_q_q __pyx_string_tab[2057]
#define __pyx_kp_b_iso88591_7vV1_F_M_T __pyx_string_tab[2058]
#define __pyx_kp_b_iso88591_81 __pyx_string_tab[2059]
#define __pyx_kp_b_iso88591_81_A_hauAQ_b_AT __pyx_string_tab[2060]
#define __pyx_kp_b_iso88591_81_O1Kq_1 __pyx_string_tab[2061]
#define __pyx_kp_b_iso88591_81_Q_b_Yhay_5_3gQ_83fG1_7_Q_Q_C __pyx_string_tab[2062]
#define __pyx_kp_b_iso88591_81_Q_b_ixq_4vWA_83fG1_3k_3gQ_3a __pyx_string_tab[2063]
#define __pyx_kp_b_iso88591_81_Q_b_ixq_4vWA_83fG1_Qd_81 __pyx_string_tab[2064]
#define __pyx_kp_b_iso88591_81_a_1A_1 __pyx_string_tab[2065]
#define __pyx_kp_b_iso88591_81_a_b_q_IQa_havQa_b_q_IV6_QgQc __pyx_string_tab[2066]
#define __pyx_kp_b_iso88591_81_b_AQd_1 __pyx_string_tab[2067]
#define __pyx_kp_b_iso88591_81_z_q_S_A_1E_z_Q_1E_y_A_1E_y_A __pyx_string_tab[2068]
#define __pyx_kp_b_iso88591_8_Qa_F_2_Q __pyx_string_tab[2069]
#define __pyx_kp_b_iso88591_8_fA_k_AQ_F_1_iuAT_at1_q __pyx_string_tab[2070]
#define __pyx_kp_b_iso88591_9A_haq_s_4q_5_1_b_A_IQd_b_6a_IW __pyx_string_tab[2071]
#define __pyx_kp_b_iso88591_AQ_b_4y_1_q __pyx_string_tab[2072]
#define __pyx_kp_b_iso88591_AQ_b_at9AZq_q __pyx_string_tab[2073]
#define __pyx_kp_b_iso88591_AQ_b_q_IQj_q __pyx_string_tab[2074]
#define __pyx_kp_b_iso88591_AU_b_1D_A_A_vQa __pyx_string_tab[2075]
#define __pyx_kp_b_iso88591_A_0_3aq_b_Cq_q __pyx_string_tab[2076]
#define __pyx_kp_b_iso88591_A_0q_a_0_Qa_WA_i_F_a_7_7_gQ_q __pyx_string_tab[2077]
#define __pyx_kp_b_iso88591_A_1 __pyx_string_tab[2078]
#define __pyx_kp_b_iso88591_A_1A_F __pyx_string_tab[2079]
#define __pyx_kp_b_iso88591_A_1A_F_6a __pyx_string_tab[2080]
#define __pyx_kp_b_iso88591_A_1A_F_9 __pyx_string_tab[2081]
#define __pyx_kp_b_iso88591_A_1A_y_1A_F_0_7_z_q __pyx_string_tab[2082]
#define __pyx_kp_b_iso88591_A_1A_y_1A_F_1_7_z_q __pyx_string_tab[2083]
#define __pyx_kp_b_iso88591_A_1A_y_1A_F_4A_7_z_q __pyx_string_tab[2084]
#define __pyx_kp_b_iso88591_A_1A_y_1A_F_4A_7_z_q_2 __pyx_string_tab[2085]
#define __pyx_kp_b_iso88591_A_1A_y_1A_F_Q_7_z_q __pyx_string_tab[2086]
#define __pyx_kp_b_iso88591_A_1D_1_3e5_1_7_1_1_1 __pyx_string_tab[2087]
#define __pyx_kp_b_iso88591_A_1F_fA __pyx_string_tab[2088]
#define __pyx_kp_b_iso88591_A_1_1_7__G1_7__G1_q_Q_y_1A_F_31 __pyx_string_tab[2089]
#define __pyx_kp_b_iso88591_A_1_1_Q_q_a_87_9AQ_5_1_9G6_F_Q_x __pyx_string_tab[2090]
#define __pyx_kp_b_iso88591_A_1_1_q_7__G1_7__G1_q_Q_Qa_F_2_d __pyx_string_tab[2091]
#define __pyx_kp_b_iso88591_A_1_1_q_T_Qa_Qixq_xq_A __pyx_string_tab[2092]
#define __pyx_kp_b_iso88591_A_1_1_q_q_q_Qa_F_N_d_hha_d_hha __pyx_string_tab[2093]
#define __pyx_kp_b_iso88591_A_1_1_q_q_y_1A_F_O1_d_hha_d_hha __pyx_string_tab[2094]
#define __pyx_kp_b_iso88591_A_1_3at1A_b_0_q __pyx_string_tab[2095]
#define __pyx_kp_b_iso88591_A_1_3at1A_b_7_q __pyx_string_tab[2096]
#define __pyx_kp_b_iso88591_A_1_A_Kq_AYa_Q_F_0_WAWAZq_it1 __pyx_string_tab[2097]
#define __pyx_kp_b_iso88591_A_1_A_Kq_AYa_Q_Qa_F_5Q_WAWAZq_it __pyx_string_tab[2098]
#define __pyx_kp_b_iso88591_A_1_A_Kq_AYa_Q_y_1A_F_1_WAWAZq_i __pyx_string_tab[2099]
#define __pyx_kp_b_iso88591_A_1_F_5Q __pyx_string_tab[2100]
#define __pyx_kp_b_iso88591_A_1_F_8 __pyx_string_tab[2101]
#define __pyx_kp_b_iso88591_A_1_F_9 __pyx_string_tab[2102]
#define __pyx_kp_b_iso88591_A_1_HA_7_Qa_b_1_9G1E_q __pyx_string_tab[2103]
#define __pyx_kp_b_iso88591_A_1_QfAV1_fA __pyx_string_tab[2104]
#define __pyx_kp_b_iso88591_A_1_q __pyx_string_tab[2105]
#define __pyx_kp_b_iso88591_A_1_q_5_AQ_7_1_Qa_3gT_vS_q __pyx_string_tab[2106]
#define __pyx_kp_b_iso88591_A_1_q_b_a_IQm1N_1_2_1_ha_AQ_U_1 __pyx_string_tab[2107]
#define __pyx_kp_b_iso88591_A_1_xq_awaq_q_A_q_3aq_b_7_XQ_q __pyx_string_tab[2108]
#define __pyx_kp_b_iso88591_A_1_y_1A_F_0_7_z_q __pyx_string_tab[2109]
#define __pyx_kp_b_iso88591_A_1_y_1A_F_31_7_z_q __pyx_string_tab[2110]
#define __pyx_kp_b_iso88591_A_1_y_1A_F_31_7_z_q_2 __pyx_string_tab[2111]
#define __pyx_kp_b_iso88591_A_1_y_1A_F_A_7_z_q __pyx_string_tab[2112]
#define __pyx_kp_b_iso88591_A_1_y_1A_F_q_7_z_q __pyx_string_tab[2113]
#define __pyx_kp_b_iso88591_A_31_HA_nAQ_k_AQ_F_6a_d_9AT_q __pyx_string_tab[2114]
#define __pyx_kp_b_iso88591_A_31_HA_nAQ_k_AQ_F_A_y_IYat1_q __pyx_string_tab[2115]
#define __pyx_kp_b_iso88591_A_31_XQa_1_b_ARxr_ha __pyx_string_tab[2116]
#define __pyx_kp_b_iso88591_A_31_nAQ_y_1A_b_7_awa_q __pyx_string_tab[2117]
#define __pyx_kp_b_iso88591_A_381_3aq_b_1Cs_81_q __pyx_string_tab[2118]
#define __pyx_kp_b_iso88591_A_3aq_b_y_q __pyx_string_tab[2119]
#define __pyx_kp_b_iso88591_A_3at1A_b_q __pyx_string_tab[2120]
#define __pyx_kp_b_iso88591_A_3at1A_b_q_2 __pyx_string_tab[2121]
#define __pyx_kp_b_iso88591_A_4A_XQl_81A_b_q_T __pyx_string_tab[2122]
#define __pyx_kp_b_iso88591_A_4q_F_4A_WAZq_1_WAZq_1 __pyx_string_tab[2123]
#define __pyx_kp_b_iso88591_A_4q_Qa_F_9_WAZq_1_WAZq_1_Yawa_z __pyx_string_tab[2124]
#define __pyx_kp_b_iso88591_A_4q_y_1A_F_5Q_WAZq_1_WAZq_1_z_q __pyx_string_tab[2125]
#define __pyx_kp_b_iso88591_A_4uE_A_e1_Qa_8_5_G1_5_A_q __pyx_string_tab[2126]
#define __pyx_kp_b_iso88591_A_5Ya_1_s_1_1F_1_e4t1G81_b_1F_Q __pyx_string_tab[2127]
#define __pyx_kp_b_iso88591_A_6ha_3aq_b_1KvQha_q __pyx_string_tab[2128]
#define __pyx_kp_b_iso88591_A_6j_7_Qa_b_q_ivYauA_q __pyx_string_tab[2129]
#define __pyx_kp_b_iso88591_A_7_Qa_F_q_IQe1_q __pyx_string_tab[2130]
#define __pyx_kp_b_iso88591_A_7q_xq_awaq_83fJa_Qiwj_A_9G1A_b __pyx_string_tab[2131]
#define __pyx_kp_b_iso88591_A_9IQ_AQfAWAWAQ_F_87 __pyx_string_tab[2132]
#define __pyx_kp_b_iso88591_A_AQ_0_1O1A_at1Ja_aq_q_q __pyx_string_tab[2133]
#define __pyx_kp_b_iso88591_A_AQ_31_1O1A_1_az_aq_q_q __pyx_string_tab[2134]
#define __pyx_kp_b_iso88591_A_AQ_7_Qd_1_b_at9Cxq_Q_q __pyx_string_tab[2135]
#define __pyx_kp_b_iso88591_A_AQ_q_1O1A_Qd_Q_aq_q_q __pyx_string_tab[2136]
#define __pyx_kp_b_iso88591_A_A_1_2_y_Q_b_QgV1HHA_A_81_q __pyx_string_tab[2137]
#define __pyx_kp_b_iso88591_A_A_6_81F __pyx_string_tab[2138]
#define __pyx_kp_b_iso88591_A_A_81IQgQa_81JgQa_81JgQa_3at1A __pyx_string_tab[2139]
#define __pyx_kp_b_iso88591_A_A_A_k_81HM_F_A_xs_3a_xs_3a_it1 __pyx_string_tab[2140]
#define __pyx_kp_b_iso88591_A_A_A_k_81HM_y_1A_F_Q_xs_3a_xs_3 __pyx_string_tab[2141]
#define __pyx_kp_b_iso88591_A_A_A_k_q_Q_F_0_xs_3a_xs_3a_xs_3 __pyx_string_tab[2142]
#define __pyx_kp_b_iso88591_A_A_A_k_q_Q_y_1A_F_1_xs_3a_xs_3a __pyx_string_tab[2143]
#define __pyx_kp_b_iso88591_A_A_HHHA_b_q_at1D_Qa_a_1_A_q_xq __pyx_string_tab[2144]
#define __pyx_kp_b_iso88591_A_A_Kq_9IT_F_6a_WAWAYaq_it1 __pyx_string_tab[2145]
#define __pyx_kp_b_iso88591_A_A_Kq_9IT_F_Ja_WAWAYaq_it1 __pyx_string_tab[2146]
#define __pyx_kp_b_iso88591_A_A_Kq_9IT_Qa_F_1_WAWAYaq_it9D_q __pyx_string_tab[2147]
#define __pyx_kp_b_iso88591_A_A_Kq_9IT_Qa_F_O1_WAWAYaq_it9D __pyx_string_tab[2148]
#define __pyx_kp_b_iso88591_A_A_Kq_9IT_y_1A_F_7q_WAWAYaq_it9 __pyx_string_tab[2149]
#define __pyx_kp_b_iso88591_A_A_Kq_9IT_y_1A_F_Kq_WAWAYaq_it9 __pyx_string_tab[2150]
#define __pyx_kp_b_iso88591_A_A_Kq_AYit1_F_L_WAWAYaq_it1 __pyx_string_tab[2151]
#define __pyx_kp_b_iso88591_A_A_Kq_AYit1_Qa_F_Q_WAWAYaq_it9D __pyx_string_tab[2152]
#define __pyx_kp_b_iso88591_A_A_Kq_AYit1_y_1A_F_M_WAWAYaq_it __pyx_string_tab[2153]
#define __pyx_kp_b_iso88591_A_A_Kq_AYivT_F_L_WAWAYaq_ivT __pyx_string_tab[2154]
#define __pyx_kp_b_iso88591_A_A_Kq_AYivT_Qa_F_Q_WAWAYaq_ivT __pyx_string_tab[2155]
#define __pyx_kp_b_iso88591_A_A_Kq_AYivT_y_1A_F_M_WAWAYaq_iv __pyx_string_tab[2156]
#define __pyx_kp_b_iso88591_A_A_Kq_q_a_F_O1_WAWAYaq_it1 __pyx_string_tab[2157]
#define __pyx_kp_b_iso88591_A_A_Kq_q_a_Qa_F_0_WAWAYaq_it9D_q __pyx_string_tab[2158]
#define __pyx_kp_b_iso88591_A_A_Kq_q_a_y_1A_F_A_WAWAYaq_it9A __pyx_string_tab[2159]
#define __pyx_kp_b_iso88591_A_A_k_81HM_F_IQ_xs_3a_xs_3a __pyx_string_tab[2160]
#define __pyx_kp_b_iso88591_A_A_k_81HM_y_1A_F_Ja_xs_3a_xs_3a __pyx_string_tab[2161]
#define __pyx_kp_b_iso88591_A_A_k_a_F_A_83hc_Q_4q __pyx_string_tab[2162]
#define __pyx_kp_b_iso88591_A_A_uCq_F_2_Yas_as_Q_q __pyx_string_tab[2163]
#define __pyx_kp_b_iso88591_A_A_xq_A_q __pyx_string_tab[2164]
#define __pyx_kp_b_iso88591_A_F_0 __pyx_string_tab[2165]
#define __pyx_kp_b_iso88591_A_F_at1 __pyx_string_tab[2166]
#define __pyx_kp_b_iso88591_A_F_q_IQa_Q __pyx_string_tab[2167]
#define __pyx_kp_b_iso88591_A_F_q_Q __pyx_string_tab[2168]
#define __pyx_kp_b_iso88591_A_Fa_4vV1_7_7_uE_D_e1A_Ya_D_a_E __pyx_string_tab[2169]
#define __pyx_kp_b_iso88591_A_Kq_1E_t1_F_Kq_WAYaq_a __pyx_string_tab[2170]
#define __pyx_kp_b_iso88591_A_Kq_1E_t1_Qa_F_A_WAYaq_it9AWA_z __pyx_string_tab[2171]
#define __pyx_kp_b_iso88591_A_Kq_1E_t1_y_1A_F_L_WAYaq_iq_q_z __pyx_string_tab[2172]
#define __pyx_kp_b_iso88591_A_Kq_AS_A_F_L_WAYaq_WAYaq_a __pyx_string_tab[2173]
#define __pyx_kp_b_iso88591_A_Kq_AS_A_F_M_WA_1_WAZq_1_a __pyx_string_tab[2174]
#define __pyx_kp_b_iso88591_A_Kq_AS_A_Qa_F_Q_WAYaq_WAYaq_it9 __pyx_string_tab[2175]
#define __pyx_kp_b_iso88591_A_Kq_AS_A_Qa_F_a_WA_1_WAZq_1_it9 __pyx_string_tab[2176]
#define __pyx_kp_b_iso88591_A_Kq_AS_A_y_1A_F_M_WAYaq_WAYaq_i __pyx_string_tab[2177]
#define __pyx_kp_b_iso88591_A_Kq_AS_A_y_1A_F_N_WA_1_WAZq_1_i __pyx_string_tab[2178]
#define __pyx_kp_b_iso88591_A_Kq_IYd_F_4A_WAYaq_WAYaq __pyx_string_tab[2179]
#define __pyx_kp_b_iso88591_A_Kq_IYd_F_5Q_WAYaq_WAZq_1 __pyx_string_tab[2180]
#define __pyx_kp_b_iso88591_A_Kq_IYd_Qa_F_9_WAYaq_WAYaq_Yawa __pyx_string_tab[2181]
#define __pyx_kp_b_iso88591_A_Kq_IYd_Qa_F_WAYaq_WAZq_1_Yawa __pyx_string_tab[2182]
#define __pyx_kp_b_iso88591_A_Kq_IYd_y_1A_F_5Q_WAYaq_WAYaq_z __pyx_string_tab[2183]
#define __pyx_kp_b_iso88591_A_Kq_IYd_y_1A_F_6a_WAYaq_WAZq_1 __pyx_string_tab[2184]
#define __pyx_kp_b_iso88591_A_Kq_Qc_6_Q_F_M_WAYaq_WAYaq_a __pyx_string_tab[2185]
#define __pyx_kp_b_iso88591_A_Kq_Qc_6_Q_F_N_WAZq_1_WA_1_a __pyx_string_tab[2186]
#define __pyx_kp_b_iso88591_A_Kq_Qc_6_Q_Qa_F_a_WAYaq_WAYaq_i __pyx_string_tab[2187]
#define __pyx_kp_b_iso88591_A_Kq_Qc_6_Q_Qa_F_q_WAZq_1_WA_1_i __pyx_string_tab[2188]
#define __pyx_kp_b_iso88591_A_Kq_Qc_6_Q_y_1A_F_N_WAYaq_WAYaq __pyx_string_tab[2189]
#define __pyx_kp_b_iso88591_A_Kq_Qc_6_Q_y_1A_F_O1_WAZq_1_WA __pyx_string_tab[2190]
#define __pyx_kp_b_iso88591_A_Kq_as_9D_F_N_WAYaq_WAYaq __pyx_string_tab[2191]
#define __pyx_kp_b_iso88591_A_Kq_as_9D_F_O1_WAZq_1_WAZq_1 __pyx_string_tab[2192]
#define __pyx_kp_b_iso88591_A_Kq_as_9D_Qa_F_0_WAZq_1_WAZq_1 __pyx_string_tab[2193]
#define __pyx_kp_b_iso88591_A_Kq_as_9D_Qa_F_q_WAYaq_WAYaq_Ya __pyx_string_tab[2194]
#define __pyx_kp_b_iso88591_A_Kq_as_9D_y_1A_F_A_WAZq_1_WAZq __pyx_string_tab[2195]
#define __pyx_kp_b_iso88591_A_Kq_as_9D_y_1A_F_O1_WAYaq_WAYaq __pyx_string_tab[2196]
#define __pyx_kp_b_iso88591_A_Kq_q_9IT_F_31_WAYaq_WAYaq __pyx_string_tab[2197]
#define __pyx_kp_b_iso88591_A_Kq_q_9IT_F_4A_WAZq_1_WAZq_1 __pyx_string_tab[2198]
#define __pyx_kp_b_iso88591_A_Kq_q_9IT_F_A_WA_1_WAZq_1 __pyx_string_tab[2199]
#define __pyx_kp_b_iso88591_A_Kq_q_9IT_F_O1_WAYaq_WAYaq __pyx_string_tab[2200]
#define __pyx_kp_b_iso88591_A_Kq_q_9IT_Qa_F_0_WAYaq_WAYaq_Ya __pyx_string_tab[2201]
#define __pyx_kp_b_iso88591_A_Kq_q_9IT_Qa_F_1_WA_1_WAZq_1_Ya __pyx_string_tab[2202]
#define __pyx_kp_b_iso88591_A_Kq_q_9IT_Qa_F_8_WAYaq_WAYaq_Ya __pyx_string_tab[2203]
#define __pyx_kp_b_iso88591_A_Kq_q_9IT_Qa_F_9_WAZq_1_WAZq_1 __pyx_string_tab[2204]
#define __pyx_kp_b_iso88591_A_Kq_q_9IT_y_1A_F_4A_WAYaq_WAYaq __pyx_string_tab[2205]
#define __pyx_kp_b_iso88591_A_Kq_q_9IT_y_1A_F_5Q_WAZq_1_WAZq __pyx_string_tab[2206]
#define __pyx_kp_b_iso88591_A_Kq_q_9IT_y_1A_F_A_WAYaq_WAYaq __pyx_string_tab[2207]
#define __pyx_kp_b_iso88591_A_Kq_q_9IT_y_1A_F_Q_WA_1_WAZq_1 __pyx_string_tab[2208]
#define __pyx_kp_b_iso88591_A_L __pyx_string_tab[2209]
#define __pyx_kp_b_iso88591_A_L_b_Qd_1D_A __pyx_string_tab[2210]
#define __pyx_kp_b_iso88591_A_L_b_Qd_1D_k_z_7_1_z_7_1_c_b_84 __pyx_string_tab[2211]
#define __pyx_kp_b_iso88591_A_L_b_Qd_1D_k_z_7_1_z_7_1_c_b_A __pyx_string_tab[2212]
#define __pyx_kp_b_iso88591_A_O1AQ __pyx_string_tab[2213]
#define __pyx_kp_b_iso88591_A_Q_2_31_y_Q_b_awfAXXQ_A_HA_q __pyx_string_tab[2214]
#define __pyx_kp_b_iso88591_A_Q_7_Qa_b_A_ivYauA_q __pyx_string_tab[2215]
#define __pyx_kp_b_iso88591_A_Q_7q_xq_awaq_83fJa_Qiwj_A_9G1A __pyx_string_tab[2216]
#define __pyx_kp_b_iso88591_A_Q_AT_6_A_5_Qa_5_Qha __pyx_string_tab[2217]
#define __pyx_kp_b_iso88591_A_Q_A_Q_1_a_b_Qd_1A_5_1_k_1A_l_6 __pyx_string_tab[2218]
#define __pyx_kp_b_iso88591_A_Q_A_b_a_IQj_AQ_1 __pyx_string_tab[2219]
#define __pyx_kp_b_iso88591_A_Q_Q_F_L_v_A __pyx_string_tab[2220]
#define __pyx_kp_b_iso88591_A_Q_Qe1_A_8_Qe1_A_8_z_Qa __pyx_string_tab[2221]
#define __pyx_kp_b_iso88591_A_Q_T_1IT __pyx_string_tab[2222]
#define __pyx_kp_b_iso88591_A_Q_T_1IT_q __pyx_string_tab[2223]
#define __pyx_kp_b_iso88591_A_Q_T_ay_A __pyx_string_tab[2224]
#define __pyx_kp_b_iso88591_A_Q_T_z_4q __pyx_string_tab[2225]
#define __pyx_kp_b_iso88591_A_Q_ha_Q_1_9AT_T_E_auF_xq_d_1_4q __pyx_string_tab[2226]
#define __pyx_kp_b_iso88591_A_Q_q_E_awhauCq_b_az_aq __pyx_string_tab[2227]
#define __pyx_kp_b_iso88591_A_Q_q_T_y_1A_z_AU_vQgQ_q __pyx_string_tab[2228]
#define __pyx_kp_b_iso88591_A_Q_q_b_1AQ_A_1_q __pyx_string_tab[2229]
#define __pyx_kp_b_iso88591_A_Q_q_b_AQa_A_0_q __pyx_string_tab[2230]
#define __pyx_kp_b_iso88591_A_Q_q_b_AQa_A_A_q __pyx_string_tab[2231]
#define __pyx_kp_b_iso88591_A_Q_q_q_6_Bb_F_6_Ba_a_a_k_AQ_F_A __pyx_string_tab[2232]
#define __pyx_kp_b_iso88591_A_Q_q_q_T_Qa_z_xuF __pyx_string_tab[2233]
#define __pyx_kp_b_iso88591_A_Q_t3aq_1F_AV1A_b_q_iq_A_b_QfIQ __pyx_string_tab[2234]
#define __pyx_kp_b_iso88591_A_Q_z __pyx_string_tab[2235]
#define __pyx_kp_b_iso88591_A_Q_z_0 __pyx_string_tab[2236]
#define __pyx_kp_b_iso88591_A_Q_z_1 __pyx_string_tab[2237]
#define __pyx_kp_b_iso88591_A_Q_z_1A __pyx_string_tab[2238]
#define __pyx_kp_b_iso88591_A_Q_z_2 __pyx_string_tab[2239]
#define __pyx_kp_b_iso88591_A_Q_z_Qa __pyx_string_tab[2240]
#define __pyx_kp_b_iso88591_A_Qa __pyx_string_tab[2241]
#define __pyx_kp_b_iso88591_A_Qa_F_A_IT_q __pyx_string_tab[2242]
#define __pyx_kp_b_iso88591_A_Qe1_A_Qe1_A_z_q __pyx_string_tab[2243]
#define __pyx_kp_b_iso88591_A_Qj __pyx_string_tab[2244]
#define __pyx_kp_b_iso88591_A_T_1IV1 __pyx_string_tab[2245]
#define __pyx_kp_b_iso88591_A_T_4_A __pyx_string_tab[2246]
#define __pyx_kp_b_iso88591_A_T_5_a __pyx_string_tab[2247]
#define __pyx_kp_b_iso88591_A_T_AYfA __pyx_string_tab[2248]
#define __pyx_kp_b_iso88591_A_T_Qiq __pyx_string_tab[2249]
#define __pyx_kp_b_iso88591_A_T_ay __pyx_string_tab[2250]
#define __pyx_kp_b_iso88591_A_XQa_Q_b_1_Kq_b_haq_Q __pyx_string_tab[2251]
#define __pyx_kp_b_iso88591_A_XQa_Q_b_1_Kr_haq_q __pyx_string_tab[2252]
#define __pyx_kp_b_iso88591_A_XQa_Q_b_Kq_b_haq_Q __pyx_string_tab[2253]
#define __pyx_kp_b_iso88591_A_Zq_7_Qa_b_a_ivYauA_q __pyx_string_tab[2254]
#define __pyx_kp_b_iso88591_A_Zq_l_q_l_s_1_F_O1_iq_A_at1_q __pyx_string_tab[2255]
#define __pyx_kp_b_iso88591_A_a_1_q_5_AQ_Bd_s_AQ_Qa_3gXQ_j_q __pyx_string_tab[2256]
#define __pyx_kp_b_iso88591_A_a_4z_Qa_8_5_G1_5_A_q __pyx_string_tab[2257]
#define __pyx_kp_b_iso88591_A_a_9AQ_L_b_Qd_1D_k_z_7_1_z_7_1 __pyx_string_tab[2258]
#define __pyx_kp_b_iso88591_A_a_9AQ_L_b_Qd_1D_k_z_7_1_z_7_1_2 __pyx_string_tab[2259]
#define __pyx_kp_b_iso88591_A_a_A_2_31_y_Q_b_awfAXXQ_A_0_q __pyx_string_tab[2260]
#define __pyx_kp_b_iso88591_A_a_A_4A_q_6_hawas_1_N_4y_has_1 __pyx_string_tab[2261]
#define __pyx_kp_b_iso88591_A_a_A_Q_1_1_87_hay_1A_q_Qa_q_81N __pyx_string_tab[2262]
#define __pyx_kp_b_iso88591_A_a_A_Q_9AQ_Q_7_Zq_q_uCq_F_A_Yas __pyx_string_tab[2263]
#define __pyx_kp_b_iso88591_A_a_A_uCq_F_5Q_T_A_as_q __pyx_string_tab[2264]
#define __pyx_kp_b_iso88591_A_a_A_uCq_F_a_T_A_as_q __pyx_string_tab[2265]
#define __pyx_kp_b_iso88591_A_a_F_q_Q_at1_q __pyx_string_tab[2266]
#define __pyx_kp_b_iso88591_A_a_XQa_Q_a_b_1_Kq_Rz_1_b_A_haq __pyx_string_tab[2267]
#define __pyx_kp_b_iso88591_A_a_XQa_Q_a_b_A_Kq_Rz_1_b_A_haq __pyx_string_tab[2268]
#define __pyx_kp_b_iso88591_A_a_a_9AQ_b_gT_1_q __pyx_string_tab[2269]
#define __pyx_kp_b_iso88591_A_a_b_q_4q_q __pyx_string_tab[2270]
#define __pyx_kp_b_iso88591_A_aq __pyx_string_tab[2271]
#define __pyx_kp_b_iso88591_A_aq_2 __pyx_string_tab[2272]
#define __pyx_kp_b_iso88591_A_b_0_A __pyx_string_tab[2273]
#define __pyx_kp_b_iso88591_A_b_4y_q __pyx_string_tab[2274]
#define __pyx_kp_b_iso88591_A_b_AQd_81G4z __pyx_string_tab[2275]
#define __pyx_kp_b_iso88591_A_b_AT_Qa_Q __pyx_string_tab[2276]
#define __pyx_kp_b_iso88591_A_b_Qat9AQ_q __pyx_string_tab[2277]
#define __pyx_kp_b_iso88591_A_b_d __pyx_string_tab[2278]
#define __pyx_kp_b_iso88591_A_k_AQ_F_M_at1_at1_q __pyx_string_tab[2279]
#define __pyx_kp_b_iso88591_A_k_q_F_0_83hc_A_a __pyx_string_tab[2280]
#define __pyx_kp_b_iso88591_A_q_0_fA_Qa_F_N_l_hd_t9D_z_q __pyx_string_tab[2281]
#define __pyx_kp_b_iso88591_A_q_0_ha_Qa_F_N_l_hd_E_Yd_1G1_z __pyx_string_tab[2282]
#define __pyx_kp_b_iso88591_A_q_1A_Qa_F_0 __pyx_string_tab[2283]
#define __pyx_kp_b_iso88591_A_q_1A_Qa_F_2 __pyx_string_tab[2284]
#define __pyx_kp_b_iso88591_A_q_1A_Qa_F_31 __pyx_string_tab[2285]
#define __pyx_kp_b_iso88591_A_q_1A_Qa_F_31_2 __pyx_string_tab[2286]
#define __pyx_kp_b_iso88591_A_q_1A_Qa_F_4A __pyx_string_tab[2287]
#define __pyx_kp_b_iso88591_A_q_1A_Qa_F_5Q __pyx_string_tab[2288]
#define __pyx_kp_b_iso88591_A_q_1A_Qa_F_6a __pyx_string_tab[2289]
#define __pyx_kp_b_iso88591_A_q_1A_Qa_F_A __pyx_string_tab[2290]
#define __pyx_kp_b_iso88591_A_q_1A_Qa_F_q __pyx_string_tab[2291]
#define __pyx_kp_b_iso88591_A_q_1G1F_V1 __pyx_string_tab[2292]
#define __pyx_kp_b_iso88591_A_q_1G1_q __pyx_string_tab[2293]
#define __pyx_kp_b_iso88591_A_q_1_Qa_F_1 __pyx_string_tab[2294]
#define __pyx_kp_b_iso88591_A_q_1_Qa_F_2 __pyx_string_tab[2295]
#define __pyx_kp_b_iso88591_A_q_1_Qa_F_2_2 __pyx_string_tab[2296]
#define __pyx_kp_b_iso88591_A_q_1_Qa_F_31 __pyx_string_tab[2297]
#define __pyx_kp_b_iso88591_A_q_1_Qa_F_4A __pyx_string_tab[2298]
#define __pyx_kp_b_iso88591_A_q_1_Qa_F_5Q __pyx_string_tab[2299]
#define __pyx_kp_b_iso88591_A_q_1_Qa_F_O1 __pyx_string_tab[2300]
#define __pyx_kp_b_iso88591_A_q_1_Qa_F_a __pyx_string_tab[2301]
#define __pyx_kp_b_iso88591_A_q_1_Qa_F_q __pyx_string_tab[2302]
#define __pyx_kp_b_iso88591_A_q_3aq_b_1Cq_q __pyx_string_tab[2303]
#define __pyx_kp_b_iso88591_A_q_3at1A_b_q_q __pyx_string_tab[2304]
#define __pyx_kp_b_iso88591_A_q_4q_83a_Q_q_Q_Qa_F_Kq_d_a_Ya __pyx_string_tab[2305]
#define __pyx_kp_b_iso88591_A_q_81IQgQa_81JgQa_81JgQa_81JgQa __pyx_string_tab[2306]
#define __pyx_kp_b_iso88591_A_q_Qa_F_2_Q __pyx_string_tab[2307]
#define __pyx_kp_b_iso88591_A_q_Qa_XQa_1_b_1_Kq_q_a_ha_Q __pyx_string_tab[2308]
#define __pyx_kp_b_iso88591_A_q_Qa_XQa_1_b_1_Kq_q_ha_q __pyx_string_tab[2309]
#define __pyx_kp_b_iso88591_A_q_Qa_XQa_1_b_Kq_q_a_ha_Q __pyx_string_tab[2310]
#define __pyx_kp_b_iso88591_A_q_Qe1_A_AQ_Qe1_A_AQ_z __pyx_string_tab[2311]
#define __pyx_kp_b_iso88591_A_q_QfA_q __pyx_string_tab[2312]
#define __pyx_kp_b_iso88591_A_q_T_5_e1 __pyx_string_tab[2313]
#define __pyx_kp_b_iso88591_A_q_T_y_1A_z_AU_V1G1_q __pyx_string_tab[2314]
#define __pyx_kp_b_iso88591_A_q_T_y_1A_z_Qe6_fAWA_q __pyx_string_tab[2315]
#define __pyx_kp_b_iso88591_A_q_T_z_vU __pyx_string_tab[2316]
#define __pyx_kp_b_iso88591_A_q_Zq_l_q_l_s_1_F_q_U_iq_A_at1 __pyx_string_tab[2317]
#define __pyx_kp_b_iso88591_A_q_a_1_1_Q_q_a_a_b_Qd_1A_5_1_l __pyx_string_tab[2318]
#define __pyx_kp_b_iso88591_A_q_a_F_O1_WAZq_1_WAZq_1 __pyx_string_tab[2319]
#define __pyx_kp_b_iso88591_A_q_a_Qa_F_0_WAZq_1_WAZq_1_Yawa __pyx_string_tab[2320]
#define __pyx_kp_b_iso88591_A_q_a_y_1A_F_A_WAZq_1_WAZq_1_z_q __pyx_string_tab[2321]
#define __pyx_kp_b_iso88591_A_q_az_F_O1Kt1 __pyx_string_tab[2322]
#define __pyx_kp_b_iso88591_A_q_az_s_1_F_M_G4y_Q_at1_q __pyx_string_tab[2323]
#define __pyx_kp_b_iso88591_A_q_b_Qd_1A_5_1_AQ_k_AQ_F_A_t9A __pyx_string_tab[2324]
#define __pyx_kp_b_iso88591_A_q_b_Qd_1A_5_1_AQ_k_AQ_F_O1_t9A __pyx_string_tab[2325]
#define __pyx_kp_b_iso88591_A_q_k_AQ_F_0_Ya_a_at1_q __pyx_string_tab[2326]
#define __pyx_kp_b_iso88591_A_q_q_6_Bb_F_6_Ba_a_a_b_Qd_8881A __pyx_string_tab[2327]
#define __pyx_kp_b_iso88591_A_q_q_A_Qa_F_Ja_E_Yaz_y_1A_z_q __pyx_string_tab[2328]
#define __pyx_kp_b_iso88591_A_q_q_A_Qa_F_Ja_E_Yaz_y_1A_z_q_2 __pyx_string_tab[2329]
#define __pyx_kp_b_iso88591_A_q_q_A_Qa_F_Kq_U_iq_az_5_3gQ_y __pyx_string_tab[2330]
#define __pyx_kp_b_iso88591_A_q_q_A_Qa_F_Kq_U_iq_az_5_3gQ_y_2 __pyx_string_tab[2331]
#define __pyx_kp_b_iso88591_A_q_q_Q_F_Ja_d_a_t1 __pyx_string_tab[2332]
#define __pyx_kp_b_iso88591_A_q_q_Q_F_Kq_d_a_t1 __pyx_string_tab[2333]
#define __pyx_kp_b_iso88591_A_q_q_Q_Qa_F_A_d_a_t9AWA_z_q __pyx_string_tab[2334]
#define __pyx_kp_b_iso88591_A_q_q_Q_Qa_F_O1_d_a_E_Yawa_z_q __pyx_string_tab[2335]
#define __pyx_kp_b_iso88591_A_q_q_Q_Qa_F_O1_d_a_t9AWA_z_q __pyx_string_tab[2336]
#define __pyx_kp_b_iso88591_A_q_q_Q_y_1A_F_Kq_d_a_E_Yawa_z_q __pyx_string_tab[2337]
#define __pyx_kp_b_iso88591_A_q_q_Q_y_1A_F_Kq_d_a_t9AWA_z_q __pyx_string_tab[2338]
#define __pyx_kp_b_iso88591_A_q_q_Q_y_1A_F_L_d_a_t9AWA_z_q __pyx_string_tab[2339]
#define __pyx_kp_b_iso88591_A_q_q_Qa_F_IQ_E_Ya_q __pyx_string_tab[2340]
#define __pyx_kp_b_iso88591_A_q_q_Qa_F_Ja_E_YavQ_Q __pyx_string_tab[2341]
#define __pyx_kp_b_iso88591_A_q_q_T_Qa_1HE_q __pyx_string_tab[2342]
#define __pyx_kp_b_iso88591_A_q_q_T_Qa_85_a __pyx_string_tab[2343]
#define __pyx_kp_b_iso88591_A_q_q_T_Qa_y_1A_z_Qhe1_wiq_q __pyx_string_tab[2344]
#define __pyx_kp_b_iso88591_A_q_q_T_Qa_y_1A_z_axuF_1_y_5_3gQ __pyx_string_tab[2345]
#define __pyx_kp_b_iso88591_A_q_q_q_Q_Qa_F_Ja_d_a_E_Ya __pyx_string_tab[2346]
#define __pyx_kp_b_iso88591_A_q_q_y_1A_Qa_z_Qhe4q_wiq_q __pyx_string_tab[2347]
#define __pyx_kp_b_iso88591_A_q_q_y_1A_Qa_z_axuD_y_5_3gQ_q __pyx_string_tab[2348]
#define __pyx_kp_b_iso88591_A_q_woQj __pyx_string_tab[2349]
#define __pyx_kp_b_iso88591_A_q_z __pyx_string_tab[2350]
#define __pyx_kp_b_iso88591_A_q_z_AQ __pyx_string_tab[2351]
#define __pyx_kp_b_iso88591_A_q_z_AQ_2 __pyx_string_tab[2352]
#define __pyx_kp_b_iso88591_A_q_z_Qa __pyx_string_tab[2353]
#define __pyx_kp_b_iso88591_A_q_z_aq __pyx_string_tab[2354]
#define __pyx_kp_b_iso88591_A_q_z_q __pyx_string_tab[2355]
#define __pyx_kp_b_iso88591_A_s_1_b_q_Q_6_F_wawa_G5_Q_AU_q_E __pyx_string_tab[2356]
#define __pyx_kp_b_iso88591_A_t __pyx_string_tab[2357]
#define __pyx_kp_b_iso88591_A_t7 __pyx_string_tab[2358]
#define __pyx_kp_b_iso88591_A_t_1 __pyx_string_tab[2359]
#define __pyx_kp_b_iso88591_A_t_A __pyx_string_tab[2360]
#define __pyx_kp_b_iso88591_A_vQfA __pyx_string_tab[2361]
#define __pyx_kp_b_iso88591_A_vQfA_2 __pyx_string_tab[2362]
#define __pyx_kp_b_iso88591_A_w_az __pyx_string_tab[2363]
#define __pyx_kp_b_iso88591_A_woQj __pyx_string_tab[2364]
#define __pyx_kp_b_iso88591_A_xq_awaq_q_3at1A_b_7_XQ_q __pyx_string_tab[2365]
#define __pyx_kp_b_iso88591_A_y __pyx_string_tab[2366]
#define __pyx_kp_b_iso88591_A_z __pyx_string_tab[2367]
#define __pyx_kp_b_iso88591_A_z_2 __pyx_string_tab[2368]
#define __pyx_kp_b_iso88591_A_z_3 __pyx_string_tab[2369]
#define __pyx_kp_b_iso88591_A_z_4 __pyx_string_tab[2370]
#define __pyx_kp_b_iso88591_A_z_O1 __pyx_string_tab[2371]
#define __pyx_kp_b_iso88591_A_z__A __pyx_string_tab[2372]
#define __pyx_kp_b_iso88591_A_z_a __pyx_string_tab[2373]
#define __pyx_kp_b_iso88591_A_z_oQ __pyx_string_tab[2374]
#define __pyx_kp_b_iso88591_A_z_q __pyx_string_tab[2375]
#define __pyx_kp_b_iso88591_C1_a_U_Qa_xq_31A_E_aq_vQa_Qd_1D __pyx_string_tab[2376]
#define __pyx_kp_b_iso88591_F_1_J_q __pyx_string_tab[2377]
#define __pyx_kp_b_iso88591_F_31D __pyx_string_tab[2378]
#define __pyx_kp_b_iso88591_F_AT __pyx_string_tab[2379]
#define __pyx_kp_b_iso88591_F_A_Yaq_q __pyx_string_tab[2380]
#define __pyx_kp_b_iso88591_F_Jaq_A __pyx_string_tab[2381]
#define __pyx_kp_b_iso88591_F_Kq_A __pyx_string_tab[2382]
#define __pyx_kp_b_iso88591_F_O1D __pyx_string_tab[2383]
#define __pyx_kp_b_iso88591_Gq_Qd_1 __pyx_string_tab[2384]
#define __pyx_kp_b_iso88591_HA_A_81HA __pyx_string_tab[2385]
#define __pyx_kp_b_iso88591_HA_F_Qd_1 __pyx_string_tab[2386]
#define __pyx_kp_b_iso88591_HA_F_q_d __pyx_string_tab[2387]
#define __pyx_kp_b_iso88591_HA_Q_z_q_gRxt1_1E_gRz_Q_1E_gRy __pyx_string_tab[2388]
#define __pyx_kp_b_iso88591_HA_a_b_ivQa_q __pyx_string_tab[2389]
#define __pyx_kp_b_iso88591_L_b_aq_A __pyx_string_tab[2390]
#define __pyx_kp_b_iso88591_M_XQhaq_A __pyx_string_tab[2391]
#define __pyx_kp_b_iso88591_Q_1HAV1A_F_N_4y_a_t83fD_4xq __pyx_string_tab[2392]
#define __pyx_kp_b_iso88591_Q_3at1A_b_AT_81_q __pyx_string_tab[2393]
#define __pyx_kp_b_iso88591_Q_4q_83a_Q_q_Q_y_1A_F_L_d_a_Yaw __pyx_string_tab[2394]
#define __pyx_kp_b_iso88591_Q_7_Qd_1_b_q_I_auA_q __pyx_string_tab[2395]
#define __pyx_kp_b_iso88591_Q_A_1F_1_81F __pyx_string_tab[2396]
#define __pyx_kp_b_iso88591_Q_F_8_q __pyx_string_tab[2397]
#define __pyx_kp_b_iso88591_Q_Q_b_HAQ_xq __pyx_string_tab[2398]
#define __pyx_kp_b_iso88591_Q_a_b_q_1A_q __pyx_string_tab[2399]
#define __pyx_kp_b_iso88591_Q_a_hauAV6_L_xq __pyx_string_tab[2400]
#define __pyx_kp_b_iso88591_Q_b_iq_q __pyx_string_tab[2401]
#define __pyx_kp_b_iso88591_Q_q __pyx_string_tab[2402]
#define __pyx_kp_b_iso88591_Q_q_O1AYaq_IQ __pyx_string_tab[2403]
#define __pyx_kp_b_iso88591_Q_s_4q_b_AT_4q_q __pyx_string_tab[2404]
#define __pyx_kp_b_iso88591_T_AQ __pyx_string_tab[2405]
#define __pyx_kp_b_iso88591_T_q __pyx_string_tab[2406]
#define __pyx_kp_b_iso88591_XQ __pyx_string_tab[2407]
#define __pyx_kp_b_iso88591_XQ_1_xq_aq_b_Ya __pyx_string_tab[2408]
#define __pyx_kp_b_iso88591_XQ_1_xq_aq_b_iq __pyx_string_tab[2409]
#define __pyx_kp_b_iso88591_XQ_3at1A_b_Q_q __pyx_string_tab[2410]
#define __pyx_kp_b_iso88591_XQ_Q_F_2_V1Kq_vV4q __pyx_string_tab[2411]
#define __pyx_kp_b_iso88591_XQ_b_1D __pyx_string_tab[2412]
#define __pyx_kp_b_iso88591_XQ_b_Qat9A __pyx_string_tab[2413]
#define __pyx_kp_b_iso88591_XQ_b_Ya __pyx_string_tab[2414]
#define __pyx_kp_b_iso88591_XQ_b_q_IQ __pyx_string_tab[2415]
#define __pyx_kp_b_iso88591_XQ_q_F_4A_q __pyx_string_tab[2416]
#define __pyx_kp_b_iso88591_Zq_l_q_l_s_1_F_O1D_a_at1_q __pyx_string_tab[2417]
#define __pyx_kp_b_iso88591_Zq_l_q_l_s_1_y_1A_F_A_iq_q_at1 __pyx_string_tab[2418]
#define __pyx_kp_b_iso88591_a_1A_Qa_q_IQgYaq_1A_IU_1 __pyx_string_tab[2419]
#define __pyx_kp_b_iso88591_a_1D __pyx_string_tab[2420]
#define __pyx_kp_b_iso88591_a_1_81N_1_1_AQ_7_b_G1 __pyx_string_tab[2421]
#define __pyx_kp_b_iso88591_a_1_81N_1_1_AQ_7_b_gQ __pyx_string_tab[2422]
#define __pyx_kp_b_iso88591_a_2 __pyx_string_tab[2423]
#define __pyx_kp_b_iso88591_a_2S_gU_1_j __pyx_string_tab[2424]
#define __pyx_kp_b_iso88591_a_3 __pyx_string_tab[2425]
#define __pyx_kp_b_iso88591_a_4q __pyx_string_tab[2426]
#define __pyx_kp_b_iso88591_a_4q_b_1AT_81G4z __pyx_string_tab[2427]
#define __pyx_kp_b_iso88591_a_4q_b_1AT_81G4z_1A __pyx_string_tab[2428]
#define __pyx_kp_b_iso88591_a_4vWA_Zq_E_aq_k_q_q __pyx_string_tab[2429]
#define __pyx_kp_b_iso88591_a_4vWF_Qd_1_t4q __pyx_string_tab[2430]
#define __pyx_kp_b_iso88591_a_5_wa_IQfA __pyx_string_tab[2431]
#define __pyx_kp_b_iso88591_a_AQa_1 __pyx_string_tab[2432]
#define __pyx_kp_b_iso88591_a_AT __pyx_string_tab[2433]
#define __pyx_kp_b_iso88591_a_AT_q_b_az_q_D_U_1 __pyx_string_tab[2434]
#define __pyx_kp_b_iso88591_a_A_1_D_AQ_6_q_1_1_Q_1_haq __pyx_string_tab[2435]
#define __pyx_kp_b_iso88591_a_A_F_AQd_81G4z __pyx_string_tab[2436]
#define __pyx_kp_b_iso88591_a_A_HHHA_b_q_at1D_Qa_D_D __pyx_string_tab[2437]
#define __pyx_kp_b_iso88591_a_A_M_1 __pyx_string_tab[2438]
#define __pyx_kp_b_iso88591_a_D_F_L_a_81G4z_Ja __pyx_string_tab[2439]
#define __pyx_kp_b_iso88591_a_F_1_a __pyx_string_tab[2440]
#define __pyx_kp_b_iso88591_a_F_1_iq_q __pyx_string_tab[2441]
#define __pyx_kp_b_iso88591_a_F_4AT __pyx_string_tab[2442]
#define __pyx_kp_b_iso88591_a_F_L_Q __pyx_string_tab[2443]
#define __pyx_kp_b_iso88591_a_F_L_Q_q __pyx_string_tab[2444]
#define __pyx_kp_b_iso88591_a_F_L_Yaq_Q __pyx_string_tab[2445]
#define __pyx_kp_b_iso88591_a_F_M_a __pyx_string_tab[2446]
#define __pyx_kp_b_iso88591_a_HAV1_a __pyx_string_tab[2447]
#define __pyx_kp_b_iso88591_a_Q_b_Qat1_81G4z __pyx_string_tab[2448]
#define __pyx_kp_b_iso88591_a_Q_z_AZs_9Cs_y_1A_F_O1_1G1_z_q __pyx_string_tab[2449]
#define __pyx_kp_b_iso88591_a_Qe1_b_Qd_1_Q_1_6 __pyx_string_tab[2450]
#define __pyx_kp_b_iso88591_a_T_F_M_4q_81G4z __pyx_string_tab[2451]
#define __pyx_kp_b_iso88591_a_T_b_Qat1_81G4z __pyx_string_tab[2452]
#define __pyx_kp_b_iso88591_a_V3aq_AQd_1 __pyx_string_tab[2453]
#define __pyx_kp_b_iso88591_a_V3aq_AQd_1_2 __pyx_string_tab[2454]
#define __pyx_kp_b_iso88591_a_a __pyx_string_tab[2455]
#define __pyx_kp_b_iso88591_a_a_M_IQa_6 __pyx_string_tab[2456]
#define __pyx_kp_b_iso88591_a_at1 __pyx_string_tab[2457]
#define __pyx_kp_b_iso88591_a_axq_5_3j __pyx_string_tab[2458]
#define __pyx_kp_b_iso88591_a_b __pyx_string_tab[2459]
#define __pyx_kp_b_iso88591_a_b_1D_Q __pyx_string_tab[2460]
#define __pyx_kp_b_iso88591_a_b_4y_1_xq_1_xq_b_Qd_8881_AV1C __pyx_string_tab[2461]
#define __pyx_kp_b_iso88591_a_b_Qd_1A_q __pyx_string_tab[2462]
#define __pyx_kp_b_iso88591_a_b_iq __pyx_string_tab[2463]
#define __pyx_kp_b_iso88591_a_b_q_IQa_q __pyx_string_tab[2464]
#define __pyx_kp_b_iso88591_a_d_Q_4xq_T_1_T_aq_q __pyx_string_tab[2465]
#define __pyx_kp_b_iso88591_a_d_b_aq_A_81G4z __pyx_string_tab[2466]
#define __pyx_kp_b_iso88591_a_q_QfAQ_b_1F_Qc __pyx_string_tab[2467]
#define __pyx_kp_b_iso88591_a_s_6_1 __pyx_string_tab[2468]
#define __pyx_kp_b_iso88591_a_s_6_A __pyx_string_tab[2469]
#define __pyx_kp_b_iso88591_a_t9AQ_Qiq_A_O1IQa_1 __pyx_string_tab[2470]
#define __pyx_kp_b_iso88591_a_z_a __pyx_string_tab[2471]
#define __pyx_kp_b_iso88591_at9HA __pyx_string_tab[2472]
#define __pyx_kp_b_iso88591_b_1D_Q __pyx_string_tab[2473]
#define __pyx_kp_b_iso88591_b_4y_Q __pyx_string_tab[2474]
#define __pyx_kp_b_iso88591_b_AT_1_q __pyx_string_tab[2475]
#define __pyx_kp_b_iso88591_b_Qd_1A_q __pyx_string_tab[2476]
#define __pyx_kp_b_iso88591_b_Qd_1A_q_2 __pyx_string_tab[2477]
#define __pyx_kp_b_iso88591_b_YfAQ_xq_a __pyx_string_tab[2478]
#define __pyx_kp_b_iso88591_b_at9AQ_q __pyx_string_tab[2479]
#define __pyx_kp_b_iso88591_b_at9AQ_q_2 __pyx_string_tab[2480]
#define __pyx_kp_b_iso88591_b_ivQa_xq_a __pyx_string_tab[2481]
#define __pyx_kp_b_iso88591_b_q_IQa_xq_aq_Q_xq_aq_A_xq_aq_b __pyx_string_tab[2482]
#define __pyx_kp_b_iso88591_b_q_Q_q __pyx_string_tab[2483]
#define __pyx_kp_b_iso88591_fF_F_A_A __pyx_string_tab[2484]
#define __pyx_kp_b_iso88591_f_8_O1F_1_a_1 __pyx_string_tab[2485]
#define __pyx_kp_b_iso88591_ha_1_HA_7_Qa_b_1_a_q __pyx_string_tab[2486]
#define __pyx_kp_b_iso88591_ha_F_M_A __pyx_string_tab[2487]
#define __pyx_kp_b_iso88591_ha_F_N_4y_q __pyx_string_tab[2488]
#define __pyx_kp_b_iso88591_ha_at9A __pyx_string_tab[2489]
#define __pyx_kp_b_iso88591_ha_q_b_IV1A_ha_1A_b_1_IV_q_1Ct5 __pyx_string_tab[2490]
#define __pyx_kp_b_iso88591_hauAQ_b_q_IQ __pyx_string_tab[2491]
#define __pyx_kp_b_iso88591_hay_9Ja_1_1_1_HA_y_vU_y_vU_2_1J __pyx_string_tab[2492]
#define __pyx_kp_b_iso88591_iq_q_b_q_YgQa_q __pyx_string_tab[2493]
#define __pyx_kp_b_iso88591_m1_b_1D_q __pyx_string_tab[2494]
#define __pyx_kp_b_iso88591_nIQ_haq_s_4q_y_1A_5_1_b_Q_A_Yaw __pyx_string_tab[2495]
#define __pyx_kp_b_iso88591_q_1 __pyx_string_tab[2496]
#define __pyx_kp_b_iso88591_q_1A __pyx_string_tab[2497]
#define __pyx_kp_b_iso88591_q_1D __pyx_string_tab[2498]
#define __pyx_kp_b_iso88591_q_1D_2 __pyx_string_tab[2499]
#define __pyx_kp_b_iso88591_q_1_1_a_F_Q_1_l_1_l_1_fAQ_gWA __pyx_string_tab[2500]
#define __pyx_kp_b_iso88591_q_4q_4q_y_1A_z_QfAYawa_5_D_4xs __pyx_string_tab[2501]
#define __pyx_kp_b_iso88591_q_4vWA_Ja_b_k_q __pyx_string_tab[2502]
#define __pyx_kp_b_iso88591_q_4vWA_Zq_E_aq_k_D_AQ_q_q __pyx_string_tab[2503]
#define __pyx_kp_b_iso88591_q_9A __pyx_string_tab[2504]
#define __pyx_kp_b_iso88591_q_9Cq_b_7_1 __pyx_string_tab[2505]
#define __pyx_kp_b_iso88591_q_AT __pyx_string_tab[2506]
#define __pyx_kp_b_iso88591_q_F_2_4y_Q __pyx_string_tab[2507]
#define __pyx_kp_b_iso88591_q_F_IQat1 __pyx_string_tab[2508]
#define __pyx_kp_b_iso88591_q_F_Qd_1A_q __pyx_string_tab[2509]
#define __pyx_kp_b_iso88591_q_Q __pyx_string_tab[2510]
#define __pyx_kp_b_iso88591_q_Q_2 __pyx_string_tab[2511]
#define __pyx_kp_b_iso88591_q_Qd __pyx_string_tab[2512]
#define __pyx_kp_b_iso88591_q_Qha_9F_G1 __pyx_string_tab[2513]
#define __pyx_kp_b_iso88591_q_T_F_N_1D_81G4z __pyx_string_tab[2514]
#define __pyx_kp_b_iso88591_q_T_ay __pyx_string_tab[2515]
#define __pyx_kp_b_iso88591_q_Zxq __pyx_string_tab[2516]
#define __pyx_kp_b_iso88591_q_a __pyx_string_tab[2517]
#define __pyx_kp_b_iso88591_q_a_F_4A_vQ __pyx_string_tab[2518]
#define __pyx_kp_b_iso88591_q_a_F_7q_vQ __pyx_string_tab[2519]
#define __pyx_kp_b_iso88591_q_a_b_1AV1A_AS_a __pyx_string_tab[2520]
#define __pyx_kp_b_iso88591_q_at1 __pyx_string_tab[2521]
#define __pyx_kp_b_iso88591_q_b_1D_q __pyx_string_tab[2522]
#define __pyx_kp_b_iso88591_q_b_q_IQa_q __pyx_string_tab[2523]
#define __pyx_kp_b_iso88591_q_q_1_IQ __pyx_string_tab[2524]
#define __pyx_kp_b_iso88591_q_s_4q_F_L_Yat1_at1_q __pyx_string_tab[2525]
#define __pyx_kp_b_iso88591_q_y_1A_F_2_q __pyx_string_tab[2526]
#define __pyx_kp_b_iso88591_q_y_1A_F_5Q_q __pyx_string_tab[2527]
#define __pyx_kp_b_iso88591_r_4t_Q_Qa_t_A __pyx_string_tab[2528]
#define __pyx_kp_b_iso88591_s_1_F_Bd_1D_q __pyx_string_tab[2529]
#define __pyx_kp_b_iso88591_s_1_F_Q_a_q __pyx_string_tab[2530]
#define __pyx_kp_b_iso88591_s_1_F_Qd_1D_q __pyx_string_tab[2531]
#define __pyx_kp_b_iso88591_s_1_b_A_a_q __pyx_string_tab[2532]
#define __pyx_kp_b_iso88591_s_4q_y_1A_F_31_Q_T_7_at1_a __pyx_string_tab[2533]
#define __pyx_kp_b_iso88591_s_6_A __pyx_string_tab[2534]
#define __pyx_kp_b_iso88591_t1Cq __pyx_string_tab[2535]
#define __pyx_kp_b_iso88591_t4y __pyx_string_tab[2536]
#define __pyx_kp_b_iso88591_t5 __pyx_string_tab[2537]
#define __pyx_kp_b_iso88591_uE_A __pyx_string_tab[2538]
#define __pyx_kp_b_iso88591_vRr_F_CvRq_L __pyx_string_tab[2539]
#define __pyx_kp_b_iso88591_v_vQ_Zq_l_q_l_s_1_F_N_Qd_at1_q __pyx_string_tab[2540]
#define __pyx_kp_b_iso88591_wj_k_AQ_F_q_q_A_at1_q __pyx_string_tab[2541]
#define __pyx_kp_b_iso88591_wnA_a_b_Yaq_q __pyx_string_tab[2542]
#define __pyx_kp_b_iso88591_xq_1 __pyx_string_tab[2543]
#define __pyx_kp_b_iso88591_xq_1A __pyx_string_tab[2544]
#define __pyx_kp_b_iso88591_xq_1_HA_s_1_b_Q_q __pyx_string_tab[2545]
#define __pyx_kp_b_iso88591_xq_A_hauAQ_havQc_q_b_1D_q_4vWA __pyx_string_tab[2546]
#define __pyx_kp_b_iso88591_xq_F_0_Ya __pyx_string_tab[2547]
#define __pyx_kp_b_iso88591_xq_F_N_6_Q __pyx_string_tab[2548]
#define __pyx_kp_b_iso88591_xq_b_1D __pyx_string_tab[2549]
#define __pyx_kp_b_iso88591_y_1A_F_L_Yawa_q __pyx_string_tab[2550]
#define __pyx_kp_b_iso88591_y_F_2_4y __pyx_string_tab[2551]
#define __pyx_kp_b_iso88591_y_b_iq __pyx_string_tab[2552]
#define __pyx_kp_b_iso88591_y_m7_y_m7_y_m7_y_m7_y_m7_y_m7_y __pyx_string_tab[2553]
#define __pyx_kp_b_iso88591_y_s __pyx_string_tab[2554]
#define __pyx_kp_b_iso88591_y_s_4q_F_2_Yat1_at1_q __pyx_string_tab[2555]
#define __pyx_n_b_MPI4PY_RC __pyx_string_tab[2556]
#define __pyx_int_0 __pyx_number_tab[0]
#define __pyx_int_neg_1 __pyx_number_tab[1]
#define __pyx_int_1 __pyx_number_tab[2]
#define __pyx_int_2 __pyx_number_tab[3]
#define __pyx_int_32768 __pyx_number_tab[4]
#define __pyx_int_262144 __pyx_number_tab[5]
/* #### Code section: module_state_clear ### */
#if CYTHON_USE_MODULE_STATE
static CYTHON_SMALL_CODE int __pyx_m_clear(PyObject *m) {
  __pyx_mstatetype *clear_module_state = __Pyx_PyModule_GetState(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);
  #if CYTHON_PEP489_MULTI_PHASE_INIT
  __Pyx_State_RemoveModule(NULL);
  #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_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_BufferAutomaticType);
  Py_CLEAR(clear_module_state->__pyx_type_6mpi4py_3MPI_BufferAutomaticType);
  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__p_datarep);
  Py_CLEAR(clear_module_state->__pyx_type_6mpi4py_3MPI__p_datarep);
  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___pyx_defaults);
  Py_CLEAR(clear_module_state->__pyx_type_6mpi4py_3MPI___pyx_defaults);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI___pyx_defaults1);
  Py_CLEAR(clear_module_state->__pyx_type_6mpi4py_3MPI___pyx_defaults1);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI___pyx_defaults2);
  Py_CLEAR(clear_module_state->__pyx_type_6mpi4py_3MPI___pyx_defaults2);
  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_k__9);
  Py_CLEAR(clear_module_state->__pyx_k__18);
  Py_CLEAR(clear_module_state->__pyx_k__19);
  Py_CLEAR(clear_module_state->__pyx_k__20);
  Py_CLEAR(clear_module_state->__pyx_k__21);
  Py_CLEAR(clear_module_state->__pyx_k__44);
  Py_CLEAR(clear_module_state->__pyx_k__45);
  Py_CLEAR(clear_module_state->__pyx_k__48);
  Py_CLEAR(clear_module_state->__pyx_k__49);
  Py_CLEAR(clear_module_state->__pyx_k__50);
  Py_CLEAR(clear_module_state->__pyx_k__51);
  Py_CLEAR(clear_module_state->__pyx_k__52);
  Py_CLEAR(clear_module_state->__pyx_k__53);
  Py_CLEAR(clear_module_state->__pyx_k__54);
  Py_CLEAR(clear_module_state->__pyx_k__55);
  Py_CLEAR(clear_module_state->__pyx_k__56);
  Py_CLEAR(clear_module_state->__pyx_k__57);
  Py_CLEAR(clear_module_state->__pyx_k__58);
  Py_CLEAR(clear_module_state->__pyx_k__59);
  Py_CLEAR(clear_module_state->__pyx_k__60);
  Py_CLEAR(clear_module_state->__pyx_k__61);
  Py_CLEAR(clear_module_state->__pyx_k__62);
  Py_CLEAR(clear_module_state->__pyx_k__63);
  Py_CLEAR(clear_module_state->__pyx_k__64);
  Py_CLEAR(clear_module_state->__pyx_k__65);
  Py_CLEAR(clear_module_state->__pyx_k__66);
  Py_CLEAR(clear_module_state->__pyx_k__67);
  Py_CLEAR(clear_module_state->__pyx_k__68);
  Py_CLEAR(clear_module_state->__pyx_k__69);
  Py_CLEAR(clear_module_state->__pyx_k__70);
  Py_CLEAR(clear_module_state->__pyx_k__71);
  Py_CLEAR(clear_module_state->__pyx_k__72);
  Py_CLEAR(clear_module_state->__pyx_k__73);
  Py_CLEAR(clear_module_state->__pyx_k__74);
  Py_CLEAR(clear_module_state->__pyx_k__89);
  Py_CLEAR(clear_module_state->__pyx_k__90);
  Py_CLEAR(clear_module_state->__pyx_k__91);
  Py_CLEAR(clear_module_state->__pyx_k__92);
  Py_CLEAR(clear_module_state->__pyx_k__93);
  Py_CLEAR(clear_module_state->__pyx_k__94);
  Py_CLEAR(clear_module_state->__pyx_k__95);
  Py_CLEAR(clear_module_state->__pyx_k__96);
  Py_CLEAR(clear_module_state->__pyx_k__97);
  Py_CLEAR(clear_module_state->__pyx_k__98);
  Py_CLEAR(clear_module_state->__pyx_k__99);
  Py_CLEAR(clear_module_state->__pyx_k__100);
  Py_CLEAR(clear_module_state->__pyx_k__101);
  Py_CLEAR(clear_module_state->__pyx_k__102);
  Py_CLEAR(clear_module_state->__pyx_k__103);
  Py_CLEAR(clear_module_state->__pyx_k__104);
  Py_CLEAR(clear_module_state->__pyx_k__105);
  Py_CLEAR(clear_module_state->__pyx_k__106);
  Py_CLEAR(clear_module_state->__pyx_k__107);
  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__128);
  Py_CLEAR(clear_module_state->__pyx_k__130);
  Py_CLEAR(clear_module_state->__pyx_k__131);
  Py_CLEAR(clear_module_state->__pyx_k__132);
  for (int i=0; i<2; ++i) { Py_CLEAR(clear_module_state->__pyx_slice[i]); }
  for (int i=0; i<24; ++i) { Py_CLEAR(clear_module_state->__pyx_tuple[i]); }
  for (int i=0; i<614; ++i) { Py_CLEAR(clear_module_state->__pyx_codeobj_tab[i]); }
  for (int i=0; i<2557; ++i) { Py_CLEAR(clear_module_state->__pyx_string_tab[i]); }
  for (int i=0; i<6; ++i) { Py_CLEAR(clear_module_state->__pyx_number_tab[i]); }
/* #### Code section: module_state_clear_contents ### */
/* CommonTypesMetaclass.module_state_clear */
Py_CLEAR(clear_module_state->__pyx_CommonTypesMetaclassType);

/* CythonFunctionShared.module_state_clear */
Py_CLEAR(clear_module_state->__pyx_CyFunctionType);

/* #### Code section: module_state_clear_end ### */
return 0;
}
#endif
/* #### Code section: module_state_traverse ### */
#if CYTHON_USE_MODULE_STATE
static CYTHON_SMALL_CODE int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) {
  __pyx_mstatetype *traverse_module_state = __Pyx_PyModule_GetState(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);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_empty_tuple);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_empty_bytes);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_empty_unicode);
  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_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_BufferAutomaticType);
  Py_VISIT(traverse_module_state->__pyx_type_6mpi4py_3MPI_BufferAutomaticType);
  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__p_datarep);
  Py_VISIT(traverse_module_state->__pyx_type_6mpi4py_3MPI__p_datarep);
  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___pyx_defaults);
  Py_VISIT(traverse_module_state->__pyx_type_6mpi4py_3MPI___pyx_defaults);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI___pyx_defaults1);
  Py_VISIT(traverse_module_state->__pyx_type_6mpi4py_3MPI___pyx_defaults1);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI___pyx_defaults2);
  Py_VISIT(traverse_module_state->__pyx_type_6mpi4py_3MPI___pyx_defaults2);
  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_k__9);
  Py_VISIT(traverse_module_state->__pyx_k__18);
  Py_VISIT(traverse_module_state->__pyx_k__19);
  Py_VISIT(traverse_module_state->__pyx_k__20);
  Py_VISIT(traverse_module_state->__pyx_k__21);
  Py_VISIT(traverse_module_state->__pyx_k__44);
  Py_VISIT(traverse_module_state->__pyx_k__45);
  Py_VISIT(traverse_module_state->__pyx_k__48);
  Py_VISIT(traverse_module_state->__pyx_k__49);
  Py_VISIT(traverse_module_state->__pyx_k__50);
  Py_VISIT(traverse_module_state->__pyx_k__51);
  Py_VISIT(traverse_module_state->__pyx_k__52);
  Py_VISIT(traverse_module_state->__pyx_k__53);
  Py_VISIT(traverse_module_state->__pyx_k__54);
  Py_VISIT(traverse_module_state->__pyx_k__55);
  Py_VISIT(traverse_module_state->__pyx_k__56);
  Py_VISIT(traverse_module_state->__pyx_k__57);
  Py_VISIT(traverse_module_state->__pyx_k__58);
  Py_VISIT(traverse_module_state->__pyx_k__59);
  Py_VISIT(traverse_module_state->__pyx_k__60);
  Py_VISIT(traverse_module_state->__pyx_k__61);
  Py_VISIT(traverse_module_state->__pyx_k__62);
  Py_VISIT(traverse_module_state->__pyx_k__63);
  Py_VISIT(traverse_module_state->__pyx_k__64);
  Py_VISIT(traverse_module_state->__pyx_k__65);
  Py_VISIT(traverse_module_state->__pyx_k__66);
  Py_VISIT(traverse_module_state->__pyx_k__67);
  Py_VISIT(traverse_module_state->__pyx_k__68);
  Py_VISIT(traverse_module_state->__pyx_k__69);
  Py_VISIT(traverse_module_state->__pyx_k__70);
  Py_VISIT(traverse_module_state->__pyx_k__71);
  Py_VISIT(traverse_module_state->__pyx_k__72);
  Py_VISIT(traverse_module_state->__pyx_k__73);
  Py_VISIT(traverse_module_state->__pyx_k__74);
  Py_VISIT(traverse_module_state->__pyx_k__89);
  Py_VISIT(traverse_module_state->__pyx_k__90);
  Py_VISIT(traverse_module_state->__pyx_k__91);
  Py_VISIT(traverse_module_state->__pyx_k__92);
  Py_VISIT(traverse_module_state->__pyx_k__93);
  Py_VISIT(traverse_module_state->__pyx_k__94);
  Py_VISIT(traverse_module_state->__pyx_k__95);
  Py_VISIT(traverse_module_state->__pyx_k__96);
  Py_VISIT(traverse_module_state->__pyx_k__97);
  Py_VISIT(traverse_module_state->__pyx_k__98);
  Py_VISIT(traverse_module_state->__pyx_k__99);
  Py_VISIT(traverse_module_state->__pyx_k__100);
  Py_VISIT(traverse_module_state->__pyx_k__101);
  Py_VISIT(traverse_module_state->__pyx_k__102);
  Py_VISIT(traverse_module_state->__pyx_k__103);
  Py_VISIT(traverse_module_state->__pyx_k__104);
  Py_VISIT(traverse_module_state->__pyx_k__105);
  Py_VISIT(traverse_module_state->__pyx_k__106);
  Py_VISIT(traverse_module_state->__pyx_k__107);
  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__128);
  Py_VISIT(traverse_module_state->__pyx_k__130);
  Py_VISIT(traverse_module_state->__pyx_k__131);
  Py_VISIT(traverse_module_state->__pyx_k__132);
  for (int i=0; i<2; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_slice[i]); }
  for (int i=0; i<24; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_tuple[i]); }
  for (int i=0; i<614; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_codeobj_tab[i]); }
  for (int i=0; i<2557; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_string_tab[i]); }
  for (int i=0; i<6; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_number_tab[i]); }
/* #### Code section: module_state_traverse_contents ### */
/* CommonTypesMetaclass.module_state_traverse */
Py_VISIT(traverse_module_state->__pyx_CommonTypesMetaclassType);

/* CythonFunctionShared.module_state_traverse */
Py_VISIT(traverse_module_state->__pyx_CyFunctionType);

/* #### Code section: module_state_traverse_end ### */
return 0;
}
#endif
/* #### Code section: module_code ### */

/* "src/mpi4py/MPI.src/atimport.pxi":85
 * 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;
  size_t __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":86
 * 
 * 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_3 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_upper, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 86, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_t_3 = PyNumber_Add(__pyx_mstate_global->__pyx_n_b_MPI4PY_RC, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_bname = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/atimport.pxi":87
 * 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:
*/
  __pyx_t_5 = __Pyx_PyBytes_AsString(__pyx_v_bname); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(4, 87, __pyx_L1_error)
  __pyx_v_cname = ((char const *)__pyx_t_5);

  /* "src/mpi4py/MPI.src/atimport.pxi":88
 *     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":89
 *     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":90
 *     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(4, 90, __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(4, 90, __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":89
 *     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":91
 *     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 *)(&PyLong_Type)));
  __pyx_t_6 = __pyx_t_7;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_6) {

    /* "src/mpi4py/MPI.src/atimport.pxi":92
 *         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(4, 92, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 92, __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":91
 *     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":93
 *     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":94
 *         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(4, 94, __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":93
 *     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":96
 *         value = <bint>cstr2bool(cvalue)
 *     else:
 *         value = pystr(cvalue).lower()             # <<<<<<<<<<<<<<
 *     try:
 *         setattr(rc, pystr(name), value)
*/
  /*else*/ {
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_pystr(__pyx_v_cvalue); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __pyx_t_2;
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_lower, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 96, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_3);
    __pyx_t_3 = 0;
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/atimport.pxi":97
 *     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":98
 *         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(4, 98, __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(4, 98, __pyx_L7_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "src/mpi4py/MPI.src/atimport.pxi":97
 *     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":99
 *     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":101
 *     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":85
 * 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":103
 *     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":104
 * 
 * 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(4, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyUnicode_AsUTF8String(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 104, __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":108
 *         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(4, 108, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/atimport.pxi":105
 * 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(((PyObject *)(((PyTypeObject*)PyExc_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(4, 105, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/atimport.pxi":110
 *         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":103
 *     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":112
 *     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;
  Py_ssize_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_t_9;
  int __pyx_t_10;
  MPI_Count __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getOptions", 0);

  /* "src/mpi4py/MPI.src/atimport.pxi":113
 * 
 * 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":114
 * 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":115
 *     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":116
 *     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":117
 *     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":118
 *     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":119
 *     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":120
 *     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":123
 *     #
 *     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":124
 *     cdef object rc
 *     try:
 *         from . import rc             # <<<<<<<<<<<<<<
 *     except (ImportError, ImportWarning):
 *         rc = None
*/
      {
        PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_rc};
        __pyx_t_5 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_, __pyx_imported_names, 1, __pyx_mstate_global->__pyx_kp_u_mpi4py, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 124, __pyx_L3_error)
      }
      __pyx_t_4 = __pyx_t_5;
      __Pyx_GOTREF(__pyx_t_4);
      {
        PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_rc};
        __pyx_t_6 = 0; {
          __pyx_t_7 = __Pyx_ImportFrom(__pyx_t_4, __pyx_imported_names[__pyx_t_6]); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 124, __pyx_L3_error)
          __Pyx_GOTREF(__pyx_t_7);
          switch (__pyx_t_6) {
            case 0:
            __Pyx_INCREF(__pyx_t_7);
            __pyx_v_rc = __pyx_t_7;
            break;
            default:;
          }
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        }
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "src/mpi4py/MPI.src/atimport.pxi":123
 *     #
 *     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_7); __pyx_t_7 = 0;

    /* "src/mpi4py/MPI.src/atimport.pxi":125
 *     try:
 *         from . import rc
 *     except (ImportError, ImportWarning):             # <<<<<<<<<<<<<<
 *         rc = None
 *     #
*/
    __pyx_t_8 = __Pyx_PyErr_ExceptionMatches2(((PyObject *)(((PyTypeObject*)PyExc_ImportError))), ((PyObject *)(((PyTypeObject*)PyExc_ImportWarning))));
    if (__pyx_t_8) {
      __Pyx_ErrRestore(0,0,0);

      /* "src/mpi4py/MPI.src/atimport.pxi":126
 *         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);
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/atimport.pxi":123
 *     #
 *     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":128
 *         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_4 = __pyx_f_6mpi4py_3MPI_getOpt(__pyx_v_rc, __pyx_k_initialize, Py_True); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_initialize = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "src/mpi4py/MPI.src/atimport.pxi":129
 *     #
 *     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_4 = __pyx_f_6mpi4py_3MPI_getOpt(__pyx_v_rc, __pyx_k_threads, Py_True); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_threads = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "src/mpi4py/MPI.src/atimport.pxi":130
 *     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_4 = __pyx_f_6mpi4py_3MPI_getOpt(__pyx_v_rc, __pyx_k_thread_level, __pyx_mstate_global->__pyx_n_u_multiple); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_thread_level = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "src/mpi4py/MPI.src/atimport.pxi":131
 *     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_4 = __pyx_f_6mpi4py_3MPI_getOpt(__pyx_v_rc, __pyx_k_finalize, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_finalize = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "src/mpi4py/MPI.src/atimport.pxi":132
 *     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_4 = __pyx_f_6mpi4py_3MPI_getOpt(__pyx_v_rc, __pyx_k_fast_reduce, Py_True); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_fast_reduce = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "src/mpi4py/MPI.src/atimport.pxi":133
 *     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_4 = __pyx_f_6mpi4py_3MPI_getOpt(__pyx_v_rc, __pyx_k_recv_mprobe, Py_True); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_recv_mprobe = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "src/mpi4py/MPI.src/atimport.pxi":134
 *     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_4 = __pyx_f_6mpi4py_3MPI_getOpt(__pyx_v_rc, __pyx_k_irecv_bufsz, __pyx_mstate_global->__pyx_int_32768); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_irecv_bufsz = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "src/mpi4py/MPI.src/atimport.pxi":135
 *     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_4 = __pyx_f_6mpi4py_3MPI_getOpt(__pyx_v_rc, __pyx_k_errors, __pyx_mstate_global->__pyx_n_u_exception); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_errors = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "src/mpi4py/MPI.src/atimport.pxi":137
 *     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_4 = __pyx_v_initialize;
  __pyx_t_7 = PyObject_RichCompare(__pyx_t_4, Py_True, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 137, __pyx_L1_error)
  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(4, 137, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!__pyx_t_10) {
  } else {
    __pyx_t_9 = __pyx_t_10;
    goto __pyx_L12_bool_binop_done;
  }
  __pyx_t_10 = (__Pyx_PyUnicode_Equals(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_yes, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(4, 137, __pyx_L1_error)
  __pyx_t_9 = __pyx_t_10;
  __pyx_L12_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_10 = __pyx_t_9;
  if (__pyx_t_10) {

    /* "src/mpi4py/MPI.src/atimport.pxi":138
 *     #
 *     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":137
 *     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":139
 *     if initialize in (True, 'yes'):
 *         opts.initialize = 1
 *     elif initialize in (False, 'no'):             # <<<<<<<<<<<<<<
 *         opts.initialize = 0
 *     else:
*/
  __Pyx_INCREF(__pyx_v_initialize);
  __pyx_t_4 = __pyx_v_initialize;
  __pyx_t_7 = PyObject_RichCompare(__pyx_t_4, Py_False, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 139, __pyx_L1_error)
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(4, 139, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!__pyx_t_9) {
  } else {
    __pyx_t_10 = __pyx_t_9;
    goto __pyx_L14_bool_binop_done;
  }
  __pyx_t_9 = (__Pyx_PyUnicode_Equals(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_no, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(4, 139, __pyx_L1_error)
  __pyx_t_10 = __pyx_t_9;
  __pyx_L14_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_9 = __pyx_t_10;
  if (__pyx_t_9) {

    /* "src/mpi4py/MPI.src/atimport.pxi":140
 *         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":139
 *     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":142
 *         opts.initialize = 0
 *     else:
 *         warnOpt(b"initialize", initialize)             # <<<<<<<<<<<<<<
 *     #
 *     if threads in (True, 'yes'):
*/
  /*else*/ {
    __pyx_t_8 = __pyx_f_6mpi4py_3MPI_warnOpt(__pyx_k_initialize, __pyx_v_initialize); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(4, 142, __pyx_L1_error)
  }
  __pyx_L11:;

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

    /* "src/mpi4py/MPI.src/atimport.pxi":145
 *     #
 *     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":144
 *         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":146
 *     if threads in (True, 'yes'):
 *         opts.threads = 1
 *     elif threads in (False, 'no'):             # <<<<<<<<<<<<<<
 *         opts.threads = 0
 *     else:
*/
  __Pyx_INCREF(__pyx_v_threads);
  __pyx_t_4 = __pyx_v_threads;
  __pyx_t_7 = PyObject_RichCompare(__pyx_t_4, Py_False, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 146, __pyx_L1_error)
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(4, 146, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!__pyx_t_9) {
  } else {
    __pyx_t_10 = __pyx_t_9;
    goto __pyx_L19_bool_binop_done;
  }
  __pyx_t_9 = (__Pyx_PyUnicode_Equals(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_no, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(4, 146, __pyx_L1_error)
  __pyx_t_10 = __pyx_t_9;
  __pyx_L19_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_9 = __pyx_t_10;
  if (__pyx_t_9) {

    /* "src/mpi4py/MPI.src/atimport.pxi":147
 *         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":146
 *     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":149
 *         opts.threads = 0
 *     else:
 *         warnOpt(b"threads", threads)             # <<<<<<<<<<<<<<
 *     #
 *     if thread_level == 'single':
*/
  /*else*/ {
    __pyx_t_8 = __pyx_f_6mpi4py_3MPI_warnOpt(__pyx_k_threads, __pyx_v_threads); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(4, 149, __pyx_L1_error)
  }
  __pyx_L16:;

  /* "src/mpi4py/MPI.src/atimport.pxi":151
 *         warnOpt(b"threads", threads)
 *     #
 *     if thread_level == 'single':             # <<<<<<<<<<<<<<
 *         opts.thread_level = MPI_THREAD_SINGLE
 *     elif thread_level == 'funneled':
*/
  __pyx_t_9 = (__Pyx_PyUnicode_Equals(__pyx_v_thread_level, __pyx_mstate_global->__pyx_n_u_single, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(4, 151, __pyx_L1_error)
  if (__pyx_t_9) {

    /* "src/mpi4py/MPI.src/atimport.pxi":152
 *     #
 *     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":151
 *         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":153
 *     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_9 = (__Pyx_PyUnicode_Equals(__pyx_v_thread_level, __pyx_mstate_global->__pyx_n_u_funneled, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(4, 153, __pyx_L1_error)
  if (__pyx_t_9) {

    /* "src/mpi4py/MPI.src/atimport.pxi":154
 *         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":153
 *     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":155
 *     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_9 = (__Pyx_PyUnicode_Equals(__pyx_v_thread_level, __pyx_mstate_global->__pyx_n_u_serialized, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(4, 155, __pyx_L1_error)
  if (__pyx_t_9) {

    /* "src/mpi4py/MPI.src/atimport.pxi":156
 *         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":155
 *     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":157
 *     elif thread_level == 'serialized':
 *         opts.thread_level = MPI_THREAD_SERIALIZED
 *     elif thread_level == 'multiple':             # <<<<<<<<<<<<<<
 *         opts.thread_level = MPI_THREAD_MULTIPLE
 *     else:
*/
  __pyx_t_9 = (__Pyx_PyUnicode_Equals(__pyx_v_thread_level, __pyx_mstate_global->__pyx_n_u_multiple, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(4, 157, __pyx_L1_error)
  if (__pyx_t_9) {

    /* "src/mpi4py/MPI.src/atimport.pxi":158
 *         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":157
 *     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":160
 *         opts.thread_level = MPI_THREAD_MULTIPLE
 *     else:
 *         warnOpt(b"thread_level", thread_level)             # <<<<<<<<<<<<<<
 *     #
 *     if finalize is None:
*/
  /*else*/ {
    __pyx_t_8 = __pyx_f_6mpi4py_3MPI_warnOpt(__pyx_k_thread_level, __pyx_v_thread_level); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(4, 160, __pyx_L1_error)
  }
  __pyx_L21:;

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

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

    /* "src/mpi4py/MPI.src/atimport.pxi":162
 *         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":164
 *     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_4 = __pyx_v_finalize;
  __pyx_t_7 = PyObject_RichCompare(__pyx_t_4, Py_True, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 164, __pyx_L1_error)
  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(4, 164, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!__pyx_t_10) {
  } else {
    __pyx_t_9 = __pyx_t_10;
    goto __pyx_L23_bool_binop_done;
  }
  __pyx_t_10 = (__Pyx_PyUnicode_Equals(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_yes, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(4, 164, __pyx_L1_error)
  __pyx_t_9 = __pyx_t_10;
  __pyx_L23_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_10 = __pyx_t_9;
  if (__pyx_t_10) {

    /* "src/mpi4py/MPI.src/atimport.pxi":165
 *         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":164
 *     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":166
 *     elif finalize in (True, 'yes'):
 *         opts.finalize = 1
 *     elif finalize in (False, 'no'):             # <<<<<<<<<<<<<<
 *         opts.finalize = 0
 *     else:
*/
  __Pyx_INCREF(__pyx_v_finalize);
  __pyx_t_4 = __pyx_v_finalize;
  __pyx_t_7 = PyObject_RichCompare(__pyx_t_4, Py_False, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 166, __pyx_L1_error)
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(4, 166, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!__pyx_t_9) {
  } else {
    __pyx_t_10 = __pyx_t_9;
    goto __pyx_L25_bool_binop_done;
  }
  __pyx_t_9 = (__Pyx_PyUnicode_Equals(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_no, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(4, 166, __pyx_L1_error)
  __pyx_t_10 = __pyx_t_9;
  __pyx_L25_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_9 = __pyx_t_10;
  if (__pyx_t_9) {

    /* "src/mpi4py/MPI.src/atimport.pxi":167
 *         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":166
 *     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":169
 *         opts.finalize = 0
 *     else:
 *         warnOpt(b"finalize", finalize)             # <<<<<<<<<<<<<<
 *     #
 *     if fast_reduce in (True, 'yes'):
*/
  /*else*/ {
    __pyx_t_8 = __pyx_f_6mpi4py_3MPI_warnOpt(__pyx_k_finalize, __pyx_v_finalize); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(4, 169, __pyx_L1_error)
  }
  __pyx_L22:;

  /* "src/mpi4py/MPI.src/atimport.pxi":171
 *         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_4 = __pyx_v_fast_reduce;
  __pyx_t_7 = PyObject_RichCompare(__pyx_t_4, Py_True, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 171, __pyx_L1_error)
  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(4, 171, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!__pyx_t_10) {
  } else {
    __pyx_t_9 = __pyx_t_10;
    goto __pyx_L28_bool_binop_done;
  }
  __pyx_t_10 = (__Pyx_PyUnicode_Equals(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_yes, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(4, 171, __pyx_L1_error)
  __pyx_t_9 = __pyx_t_10;
  __pyx_L28_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_10 = __pyx_t_9;
  if (__pyx_t_10) {

    /* "src/mpi4py/MPI.src/atimport.pxi":172
 *     #
 *     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":171
 *         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":173
 *     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_4 = __pyx_v_fast_reduce;
  __pyx_t_7 = PyObject_RichCompare(__pyx_t_4, Py_False, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 173, __pyx_L1_error)
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(4, 173, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!__pyx_t_9) {
  } else {
    __pyx_t_10 = __pyx_t_9;
    goto __pyx_L30_bool_binop_done;
  }
  __pyx_t_9 = (__Pyx_PyUnicode_Equals(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_no, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(4, 173, __pyx_L1_error)
  __pyx_t_10 = __pyx_t_9;
  __pyx_L30_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_9 = __pyx_t_10;
  if (__pyx_t_9) {

    /* "src/mpi4py/MPI.src/atimport.pxi":174
 *         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":173
 *     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":176
 *         opts.fast_reduce = 0
 *     else:
 *         warnOpt(b"fast_reduce", fast_reduce)             # <<<<<<<<<<<<<<
 *     #
 *     if recv_mprobe in (True, 'yes'):
*/
  /*else*/ {
    __pyx_t_8 = __pyx_f_6mpi4py_3MPI_warnOpt(__pyx_k_fast_reduce, __pyx_v_fast_reduce); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(4, 176, __pyx_L1_error)
  }
  __pyx_L27:;

  /* "src/mpi4py/MPI.src/atimport.pxi":178
 *         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_4 = __pyx_v_recv_mprobe;
  __pyx_t_7 = PyObject_RichCompare(__pyx_t_4, Py_True, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 178, __pyx_L1_error)
  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(4, 178, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!__pyx_t_10) {
  } else {
    __pyx_t_9 = __pyx_t_10;
    goto __pyx_L33_bool_binop_done;
  }
  __pyx_t_10 = (__Pyx_PyUnicode_Equals(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_yes, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(4, 178, __pyx_L1_error)
  __pyx_t_9 = __pyx_t_10;
  __pyx_L33_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_10 = __pyx_t_9;
  if (__pyx_t_10) {

    /* "src/mpi4py/MPI.src/atimport.pxi":179
 *     #
 *     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":178
 *         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":180
 *     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_4 = __pyx_v_recv_mprobe;
  __pyx_t_7 = PyObject_RichCompare(__pyx_t_4, Py_False, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 180, __pyx_L1_error)
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(4, 180, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!__pyx_t_9) {
  } else {
    __pyx_t_10 = __pyx_t_9;
    goto __pyx_L35_bool_binop_done;
  }
  __pyx_t_9 = (__Pyx_PyUnicode_Equals(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_no, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(4, 180, __pyx_L1_error)
  __pyx_t_10 = __pyx_t_9;
  __pyx_L35_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_9 = __pyx_t_10;
  if (__pyx_t_9) {

    /* "src/mpi4py/MPI.src/atimport.pxi":181
 *         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":180
 *     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":183
 *         opts.recv_mprobe = 0
 *     else:
 *         warnOpt(b"recv_mprobe", recv_mprobe)             # <<<<<<<<<<<<<<
 *     #
 *     if type(irecv_bufsz) is int and irecv_bufsz >= 0:
*/
  /*else*/ {
    __pyx_t_8 = __pyx_f_6mpi4py_3MPI_warnOpt(__pyx_k_recv_mprobe, __pyx_v_recv_mprobe); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(4, 183, __pyx_L1_error)
  }
  __pyx_L32:;

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

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

    /* "src/mpi4py/MPI.src/atimport.pxi":185
 *         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":188
 *         opts.irecv_bufsz = irecv_bufsz
 *     else:
 *         warnOpt(b"irecv_bufsz", irecv_bufsz)             # <<<<<<<<<<<<<<
 *     #
 *     if errors == 'default':
*/
  /*else*/ {
    __pyx_t_8 = __pyx_f_6mpi4py_3MPI_warnOpt(__pyx_k_irecv_bufsz, __pyx_v_irecv_bufsz); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(4, 188, __pyx_L1_error)
  }
  __pyx_L37:;

  /* "src/mpi4py/MPI.src/atimport.pxi":190
 *         warnOpt(b"irecv_bufsz", irecv_bufsz)
 *     #
 *     if errors == 'default':             # <<<<<<<<<<<<<<
 *         opts.errors = 0
 *     elif errors == 'exception':
*/
  __pyx_t_9 = (__Pyx_PyUnicode_Equals(__pyx_v_errors, __pyx_mstate_global->__pyx_n_u_default, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(4, 190, __pyx_L1_error)
  if (__pyx_t_9) {

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

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

  /* "src/mpi4py/MPI.src/atimport.pxi":192
 *     if errors == 'default':
 *         opts.errors = 0
 *     elif errors == 'exception':             # <<<<<<<<<<<<<<
 *         opts.errors = 1
 *     elif errors == 'abort':
*/
  __pyx_t_9 = (__Pyx_PyUnicode_Equals(__pyx_v_errors, __pyx_mstate_global->__pyx_n_u_exception, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(4, 192, __pyx_L1_error)
  if (__pyx_t_9) {

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

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

  /* "src/mpi4py/MPI.src/atimport.pxi":194
 *     elif errors == 'exception':
 *         opts.errors = 1
 *     elif errors == 'abort':             # <<<<<<<<<<<<<<
 *         opts.errors = 2 if MPI_ERRORS_ABORT != MPI_ERRHANDLER_NULL else 3
 *     elif errors == 'fatal':
*/
  __pyx_t_9 = (__Pyx_PyUnicode_Equals(__pyx_v_errors, __pyx_mstate_global->__pyx_n_u_abort, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(4, 194, __pyx_L1_error)
  if (__pyx_t_9) {

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

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

  /* "src/mpi4py/MPI.src/atimport.pxi":196
 *     elif errors == 'abort':
 *         opts.errors = 2 if MPI_ERRORS_ABORT != MPI_ERRHANDLER_NULL else 3
 *     elif errors == 'fatal':             # <<<<<<<<<<<<<<
 *         opts.errors = 3
 *     else:
*/
  __pyx_t_9 = (__Pyx_PyUnicode_Equals(__pyx_v_errors, __pyx_mstate_global->__pyx_n_u_fatal, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(4, 196, __pyx_L1_error)
  if (__pyx_t_9) {

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

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

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

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

  /* "src/mpi4py/MPI.src/atimport.pxi":112
 *     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_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":205
 * # -----------------------------------------------------------------------------
 * 
 * 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;
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();

  /* "src/mpi4py/MPI.src/atimport.pxi":206
 * 
 * cdef int warn_environ(const char envvar[]) except -1 with gil:
 *     PyErr_WarnFormat(             # <<<<<<<<<<<<<<
 *         RuntimeWarning, 1,
 *         b"environment variable %s: "
*/
  __pyx_t_1 = PyErr_WarnFormat(((PyObject *)(((PyTypeObject*)PyExc_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(4, 206, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/atimport.pxi":205
 * # -----------------------------------------------------------------------------
 * 
 * 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:;
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/atimport.pxi":213
 *     )
 * 
 * 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;
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();

  /* "src/mpi4py/MPI.src/atimport.pxi":217
 *     const char vendor[],
 * ) except -1 with gil:
 *     PyErr_WarnFormat(             # <<<<<<<<<<<<<<
 *         RuntimeWarning, 1,
 *         b"suspicious MPI execution environment\n"
*/
  __pyx_t_1 = PyErr_WarnFormat(((PyObject *)(((PyTypeObject*)PyExc_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(4, 217, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/atimport.pxi":213
 *     )
 * 
 * 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:;
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/atimport.pxi":227
 *     )
 * 
 * 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;
  PyGILState_STATE __pyx_gilstate_save;

  /* "src/mpi4py/MPI.src/atimport.pxi":228
 * 
 * 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":229
 * 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":230
 *     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":231
 *     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":233
 *     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":234
 * 
 *     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 = __pyx_k_MPI4PY_CHECK_MPIEXEC;

  /* "src/mpi4py/MPI.src/atimport.pxi":235
 *     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":236
 *     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":237
 *     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(4, 237, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":238
 *     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":240
 *     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":241
 * 
 *     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":243
 *     <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(__pyx_k_MPICH, __pyx_v_vendor, 6) == 0);

  /* "src/mpi4py/MPI.src/atimport.pxi":244
 * 
 *     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(__pyx_k_Intel_MPI, __pyx_v_vendor, 10) == 0);

  /* "src/mpi4py/MPI.src/atimport.pxi":245
 *     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(__pyx_k_Open_MPI, __pyx_v_vendor, 9) == 0);

  /* "src/mpi4py/MPI.src/atimport.pxi":246
 *     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 = __pyx_k_HYDI_CONTROL_FD;

  /* "src/mpi4py/MPI.src/atimport.pxi":247
 *     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 = __pyx_k_I_MPI_HYDRA_TOPOLIB;

  /* "src/mpi4py/MPI.src/atimport.pxi":248
 *     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 = __pyx_k_PMI_SIZE;

  /* "src/mpi4py/MPI.src/atimport.pxi":249
 *     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 = __pyx_k_OMPI_COMM_WORLD_SIZE;

  /* "src/mpi4py/MPI.src/atimport.pxi":250
 *     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":251
 *     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(__pyx_k_MVAPICH, __pyx_v_vendor, 8) == 0));

  /* "src/mpi4py/MPI.src/atimport.pxi":252
 *     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(__pyx_k_MVAPICH2, __pyx_v_vendor, 9) == 0));

  /* "src/mpi4py/MPI.src/atimport.pxi":253
 *     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":254
 *     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":255
 *     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":256
 *         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":255
 *     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":254
 *     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":253
 *     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":257
 *             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":258
 *                 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":259
 *     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":260
 *         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":259
 *     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":258
 *                 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":257
 *             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":261
 *             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":262
 *                 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":263
 *     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":264
 *         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":263
 *     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":265
 *             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":266
 *                 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":265
 *             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":262
 *                 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":261
 *             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":267
 *             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":268
 *                 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(4, 268, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/atimport.pxi":267
 *             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":269
 *     if bad_env != NULL:
 *         warn_mpiexec(bad_env, vendor)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/atimport.pxi":227
 *     )
 * 
 * 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:;
  __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  __Pyx_AddTraceback("mpi4py.MPI.check_mpiexec", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/atimport.pxi":276
 *     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;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6[3];
  PyObject *__pyx_t_7 = NULL;
  size_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bootstrap", 0);

  /* "src/mpi4py/MPI.src/atimport.pxi":278
 * 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(4, 278, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/atimport.pxi":280
 *     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":281
 *     # 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":280
 *     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":286
 *         )
 *     # 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":287
 *     # 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":288
 *     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":289
 *     <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":290
 *     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":288
 *     cdef int initialized = 1
 *     <void>MPI_Initialized(&initialized)
 *     if initialized:             # <<<<<<<<<<<<<<
 *         options.finalize = 0  # ~> TODO
 *         return 0              # ~> TODO
*/
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":291
 *         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":292
 *         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":291
 *         options.finalize = 0  # ~> TODO
 *         return 0              # ~> TODO
 *     if not options.initialize:             # <<<<<<<<<<<<<<
 *         return 0
 *     # MPI initialization
*/
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":294
 *         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":295
 *     # 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":296
 *     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":297
 *     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":298
 *     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":299
 *     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":300
 *         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":301
 *         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_4 = NULL;

      /* "src/mpi4py/MPI.src/atimport.pxi":303
 *             raise RuntimeError(               # ~> uncovered
 *                 f"MPI_Init_thread() failed "  # ~> uncovered
 *                 f"[error code: {ierr}]")      # ~> uncovered             # <<<<<<<<<<<<<<
 *     else:
 *         ierr = MPI_Init(NULL, NULL)
*/
      __pyx_t_5 = __Pyx_PyUnicode_From_int(__pyx_v_ierr, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 303, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u_MPI_Init_thread_failed_error_cod;
      __pyx_t_6[1] = __pyx_t_5;
      __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u__3;

      /* "src/mpi4py/MPI.src/atimport.pxi":302
 *         if ierr != MPI_SUCCESS:
 *             raise RuntimeError(               # ~> uncovered
 *                 f"MPI_Init_thread() failed "  # ~> uncovered             # <<<<<<<<<<<<<<
 *                 f"[error code: {ierr}]")      # ~> uncovered
 *     else:
*/
      __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_6, 3, 38 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 1, 127);
      if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 302, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_8 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_7};
        __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 301, __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(4, 301, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/atimport.pxi":300
 *         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":297
 *     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":305
 *                 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":306
 *     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":307
 *         ierr = MPI_Init(NULL, NULL)
 *         if ierr != MPI_SUCCESS:
 *             raise RuntimeError(               # ~> uncovered             # <<<<<<<<<<<<<<
 *                 f"MPI_Init() failed "         # ~> uncovered
 *                 f"[error code: {ierr}]")      # ~> uncovered
*/
      __pyx_t_7 = NULL;

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

      /* "src/mpi4py/MPI.src/atimport.pxi":308
 *         if ierr != MPI_SUCCESS:
 *             raise RuntimeError(               # ~> uncovered
 *                 f"MPI_Init() failed "         # ~> uncovered             # <<<<<<<<<<<<<<
 *                 f"[error code: {ierr}]")      # ~> uncovered
 *     return 0
*/
      __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_6, 3, 31 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 1, 127);
      if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 308, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_8 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_5};
        __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 307, __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(4, 307, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/atimport.pxi":306
 *     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":310
 *                 f"MPI_Init() failed "         # ~> uncovered
 *                 f"[error code: {ierr}]")      # ~> uncovered
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/atimport.pxi":276
 *     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_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __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":313
 * 
 * 
 * @cython.linetrace(False)             # <<<<<<<<<<<<<<
 * cdef inline int mpi_active() noexcept nogil:
 *     cdef int ierr = MPI_SUCCESS
*/

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":315
 * @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":317
 *     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":318
 *     # 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":319
 *     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":321
 *     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":322
 *     # 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":323
 *     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":325
 *     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":313
 * 
 * 
 * @cython.linetrace(False)             # <<<<<<<<<<<<<<
 * cdef inline int mpi_active() noexcept nogil:
 *     cdef int ierr = MPI_SUCCESS
*/

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

/* "src/mpi4py/MPI.src/atimport.pxi":332
 * 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;
  PyGILState_STATE __pyx_gilstate_save;

  /* "src/mpi4py/MPI.src/atimport.pxi":334
 * 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":335
 *     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":336
 *     <void> MPI_Get_version(&mpi_version, &mpi_subversion)
 *     mpi_numversion = 10 * mpi_version + mpi_subversion
 *     if not mpi_active(): return 0             # <<<<<<<<<<<<<<
 *     check_mpiexec()
 *     options_set_errhandler(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":337
 *     mpi_numversion = 10 * mpi_version + mpi_subversion
 *     if not mpi_active(): return 0
 *     check_mpiexec()             # <<<<<<<<<<<<<<
 *     options_set_errhandler(MPI_COMM_SELF)
 *     options_set_errhandler(MPI_COMM_WORLD)
*/
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_check_mpiexec(); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(4, 337, __pyx_L1_error)

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

  /* "src/mpi4py/MPI.src/atimport.pxi":339
 *     check_mpiexec()
 *     options_set_errhandler(MPI_COMM_SELF)
 *     options_set_errhandler(MPI_COMM_WORLD)             # <<<<<<<<<<<<<<
 *     return 0
 * 
*/
  __pyx_t_2 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_options_set_errhandler(MPI_COMM_WORLD); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(4, 339, __pyx_L1_error)

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

  /* "src/mpi4py/MPI.src/atimport.pxi":332
 * 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:;
  __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  __Pyx_AddTraceback("mpi4py.MPI.initialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  __pyx_L0:;
  return __pyx_r;
}

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

static void __pyx_f_6mpi4py_3MPI_finalize(void) {
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/atimport.pxi":345
 * @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":346
 * cdef void finalize() noexcept nogil:
 *     if not mpi_active(): return
 *     <void>PyMPI_Commctx_finalize()             # <<<<<<<<<<<<<<
 * 
 * 
*/
  ((void)PyMPI_Commctx_finalize());

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

  /* function exit code */
  __pyx_L0:;
}

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

static void __pyx_f_6mpi4py_3MPI_atexit(void) {
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/atimport.pxi":354
 * @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":355
 * 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":356
 *     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":355
 * 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":357
 *     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":358
 *         <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":359
 *     finalize()
 *     if options.finalize:
 *         <void>MPI_Finalize()             # <<<<<<<<<<<<<<
 * 
 * 
*/
    ((void)MPI_Finalize());

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

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

  /* function exit code */
  __pyx_L0:;
}

/* "src/mpi4py/MPI.src/atimport.pxi":362
 * 
 * 
 * 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\nHelper for ``python -m mpi4py.run ...``.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_1_set_abort_status = {"_set_abort_status", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 362, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 362, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_set_abort_status", 0) < (0)) __PYX_ERR(4, 362, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_set_abort_status", 1, 1, 1, i); __PYX_ERR(4, 362, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 362, __pyx_L3_error)
    }
    __pyx_v_status = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_status == (int)-1) && PyErr_Occurred())) __PYX_ERR(4, 362, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_set_abort_status", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 362, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

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

  /* "src/mpi4py/MPI.src/atimport.pxi":362
 * 
 * 
 * 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":380
 * 
 * 
 * @cython.linetrace(False)             # <<<<<<<<<<<<<<
 * cdef int PyMPI_Raise(int ierr) except -1 with gil:
 *     if ierr == PyMPI_ERR_UNAVAILABLE:
*/

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;
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  __Pyx_RefNannySetupContext("PyMPI_Raise", 0);

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

    /* "src/mpi4py/MPI.src/atimport.pxi":383
 * cdef int PyMPI_Raise(int ierr) except -1 with gil:
 *     if ierr == PyMPI_ERR_UNAVAILABLE:
 *         PyErr_SetObject(<object>PyExc_NotImplementedError, None)             # <<<<<<<<<<<<<<
 *         return 0
 *     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":384
 *     if ierr == PyMPI_ERR_UNAVAILABLE:
 *         PyErr_SetObject(<object>PyExc_NotImplementedError, None)
 *         return 0             # <<<<<<<<<<<<<<
 *     if (<void*>MPIException) == NULL:
 *         PyErr_SetObject(<object>PyExc_RuntimeError, <long>ierr)
*/
    __pyx_r = 0;
    goto __pyx_L0;

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

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

    /* "src/mpi4py/MPI.src/atimport.pxi":386
 *         return 0
 *     if (<void*>MPIException) == NULL:
 *         PyErr_SetObject(<object>PyExc_RuntimeError, <long>ierr)             # <<<<<<<<<<<<<<
 *         return 0
 *     PyErr_SetObject(MPIException, <long>ierr)
*/
    __pyx_t_2 = ((PyObject *)PyExc_RuntimeError);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyLong_From_long(((long)__pyx_v_ierr)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 386, __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":387
 *     if (<void*>MPIException) == NULL:
 *         PyErr_SetObject(<object>PyExc_RuntimeError, <long>ierr)
 *         return 0             # <<<<<<<<<<<<<<
 *     PyErr_SetObject(MPIException, <long>ierr)
 *     return 0
*/
    __pyx_r = 0;
    goto __pyx_L0;

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

  /* "src/mpi4py/MPI.src/atimport.pxi":388
 *         PyErr_SetObject(<object>PyExc_RuntimeError, <long>ierr)
 *         return 0
 *     PyErr_SetObject(MPIException, <long>ierr)             # <<<<<<<<<<<<<<
 *     return 0
 * 
*/
  __pyx_t_3 = __pyx_v_6mpi4py_3MPI_MPIException;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyLong_From_long(((long)__pyx_v_ierr)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 388, __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":389
 *         return 0
 *     PyErr_SetObject(MPIException, <long>ierr)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/atimport.pxi":380
 * 
 * 
 * @cython.linetrace(False)             # <<<<<<<<<<<<<<
 * cdef int PyMPI_Raise(int ierr) except -1 with gil:
 *     if ierr == PyMPI_ERR_UNAVAILABLE:
*/

  /* 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();
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  return __pyx_r;
}

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

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;
  PyGILState_STATE __pyx_gilstate_save;

  /* "src/mpi4py/MPI.src/atimport.pxi":394
 * @cython.linetrace(False)
 * 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":395
 * 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(4, 395, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/atimport.pxi":396
 *     if ierr == MPI_SUCCESS: return 0
 *     PyMPI_Raise(ierr)
 *     return -1             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_r = -1;
  goto __pyx_L0;

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

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

/* "src/mpi4py/MPI.src/atimport.pxi":399
 * 
 * 
 * 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;
  __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_HandleException", 0);

  /* "src/mpi4py/MPI.src/atimport.pxi":400
 * 
 * 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":401
 * cdef int PyMPI_HandleException(object exc) noexcept:
 *     PyErr_DisplayException(exc)
 *     if (<void*>MPIException) != NULL:             # <<<<<<<<<<<<<<
 *         if isinstance(exc, Exception):
 *             return <int>exc
*/
  __pyx_t_1 = (((void *)__pyx_v_6mpi4py_3MPI_MPIException) != NULL);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/atimport.pxi":402
 *     PyErr_DisplayException(exc)
 *     if (<void*>MPIException) != NULL:
 *         if isinstance(exc, Exception):             # <<<<<<<<<<<<<<
 *             return <int>exc
 *     return MPI_ERR_OTHER
*/
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_Exception); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 402, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = PyObject_IsInstance(__pyx_v_exc, __pyx_t_2); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(4, 402, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_1) {

      /* "src/mpi4py/MPI.src/atimport.pxi":403
 *     if (<void*>MPIException) != NULL:
 *         if isinstance(exc, Exception):
 *             return <int>exc             # <<<<<<<<<<<<<<
 *     return MPI_ERR_OTHER
 * 
*/
      __pyx_t_3 = __Pyx_PyLong_As_int(__pyx_v_exc); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(4, 403, __pyx_L1_error)
      __pyx_r = ((int)__pyx_t_3);
      goto __pyx_L0;

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

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

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

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

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

/* "src/mpi4py/MPI.src/atimport.pxi":415
 * 
 * 
 * @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":417
 * @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":415
 * 
 * 
 * @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":420
 * 
 * 
 * @cython.linetrace(False)             # <<<<<<<<<<<<<<
 * cdef inline int Py_IsInitialized() noexcept nogil:
 *     if PYPY and not py_module_alive(): return 0
*/

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":422
 * @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":423
 * 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":420
 * 
 * 
 * @cython.linetrace(False)             # <<<<<<<<<<<<<<
 * cdef inline int Py_IsInitialized() noexcept nogil:
 *     if PYPY and not py_module_alive(): return 0
*/

  /* 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_SIZE
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__cinit__", __pyx_kwds); 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(5, 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;
  size_t __pyx_t_4;
  void *__pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("allocate", 0);

  /* "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_3 = NULL;
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_memory_allocation_size_too_large};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_MemoryError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 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(5, 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_3 = NULL;
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_memory_allocation_with_negative};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 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(5, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI__PyMem); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 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(5, 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_5 = __pyx_v_ob->buf;
    (((void **)__pyx_v_buf)[0]) = __pyx_t_5;
  }

  /* "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;
  size_t __pyx_t_4;
  void *__pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rawalloc", 0);

  /* "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_3 = NULL;
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_memory_allocation_size_too_large};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_MemoryError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 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(5, 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_3 = NULL;
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_memory_allocation_with_negative};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 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(5, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI__PyMem); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 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(5, 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_5 = __pyx_v_ob->buf;
    (((void **)__pyx_v_buf)[0]) = __pyx_t_5;
  }

  /* "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(6, 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(6, 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", 0);

  /* "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(6, 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", 0);

  /* "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(6, 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", 0);

  /* "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(6, 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] = __pyx_k_true;
  __pyx_t_1[1] = __pyx_k_yes;
  __pyx_t_1[2] = __pyx_k_on;
  __pyx_t_1[3] = __pyx_k_y;
  __pyx_t_1[4] = __pyx_k_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] = __pyx_k_false;
  __pyx_t_2[1] = __pyx_k_no;
  __pyx_t_2[2] = __pyx_k_off;
  __pyx_t_2[3] = __pyx_k_n;
  __pyx_t_2[4] = __pyx_k_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(7, 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(7, 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(7, 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":44
 * 
 * 
 * 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":45
 * 
 * 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":46
 * 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":44
 * 
 * 
 * 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":49
 * 
 * 
 * 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":50
 * 
 * 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":51
 * 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":49
 * 
 * 
 * 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;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dlpack_check_version", 0);

  /* "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_3 = NULL;
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_dlpack_unexpected_version};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_BufferError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 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(8, 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_XDECREF(__pyx_t_3);
  __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;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_t_6;
  int __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("dlpack_check_shape", 0);

  /* "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_4 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_dlpack_number_of_dimensions_is_n};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_BufferError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 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(8, 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_6 = (__pyx_v_ndim > 0);
  if (__pyx_t_6) {
  } else {
    __pyx_t_2 = __pyx_t_6;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_6 = (__pyx_v_dltensor->shape == NULL);
  __pyx_t_2 = __pyx_t_6;
  __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_4 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_dlpack_shape_is_NULL};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_BufferError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 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(8, 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_7 = __pyx_v_ndim;
  __pyx_t_8 = __pyx_t_7;
  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/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_4 = NULL;
      __pyx_t_5 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_dlpack_shape_item_is_negative};
        __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_BufferError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 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(8, 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_7 = __pyx_v_ndim;
    __pyx_t_8 = __pyx_t_7;
    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/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_4 = NULL;
        __pyx_t_5 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_dlpack_strides_item_is_negative};
          __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_BufferError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 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(8, 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_XDECREF(__pyx_t_4);
  __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:             # <<<<<<<<<<<<<<
 *     cdef bint c_contig = dlpack_is_contig(dltensor, c'C')
 *     cdef bint f_contig = dlpack_is_contig(dltensor, c'F')
*/

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

  /* "src/mpi4py/MPI.src/asdlpack.pxi":134
 * 
 * cdef inline int dlpack_check_contig(const DLTensor *dltensor) except -1:
 *     cdef bint c_contig = dlpack_is_contig(dltensor, c'C')             # <<<<<<<<<<<<<<
 *     cdef bint f_contig = dlpack_is_contig(dltensor, c'F')
 *     if not c_contig and not f_contig:
*/
  __pyx_v_c_contig = __pyx_f_6mpi4py_3MPI_dlpack_is_contig(__pyx_v_dltensor, 'C');

  /* "src/mpi4py/MPI.src/asdlpack.pxi":135
 * cdef inline int dlpack_check_contig(const DLTensor *dltensor) except -1:
 *     cdef bint c_contig = dlpack_is_contig(dltensor, c'C')
 *     cdef bint f_contig = dlpack_is_contig(dltensor, c'F')             # <<<<<<<<<<<<<<
 *     if not c_contig and not f_contig:
 *         raise BufferError("dlpack: buffer is not contiguous")
*/
  __pyx_v_f_contig = __pyx_f_6mpi4py_3MPI_dlpack_is_contig(__pyx_v_dltensor, 'F');

  /* "src/mpi4py/MPI.src/asdlpack.pxi":136
 *     cdef bint c_contig = dlpack_is_contig(dltensor, c'C')
 *     cdef bint f_contig = dlpack_is_contig(dltensor, c'F')
 *     if not c_contig and not f_contig:             # <<<<<<<<<<<<<<
 *         raise BufferError("dlpack: buffer is not contiguous")
 *     return 0
*/
  __pyx_t_2 = (!__pyx_v_c_contig);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (!__pyx_v_f_contig);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (unlikely(__pyx_t_1)) {

    /* "src/mpi4py/MPI.src/asdlpack.pxi":137
 *     cdef bint f_contig = dlpack_is_contig(dltensor, c'F')
 *     if not c_contig and not f_contig:
 *         raise BufferError("dlpack: buffer is not contiguous")             # <<<<<<<<<<<<<<
 *     return 0
 * 
*/
    __pyx_t_4 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_dlpack_buffer_is_not_contiguous};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_BufferError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 137, __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(8, 137, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/asdlpack.pxi":136
 *     cdef bint c_contig = dlpack_is_contig(dltensor, c'C')
 *     cdef bint f_contig = dlpack_is_contig(dltensor, c'F')
 *     if not c_contig and not f_contig:             # <<<<<<<<<<<<<<
 *         raise BufferError("dlpack: buffer is not contiguous")
 *     return 0
*/
  }

  /* "src/mpi4py/MPI.src/asdlpack.pxi":138
 *     if not c_contig and not f_contig:
 *         raise BufferError("dlpack: buffer is not contiguous")
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int dlpack_check_rdonly(bint readonly, int flags) except -1:
*/
  __pyx_r = 0;
  goto __pyx_L0;

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

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __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":140
 *     return 0
 * 
 * cdef inline int dlpack_check_rdonly(bint readonly, int flags) except -1:             # <<<<<<<<<<<<<<
 *     if readonly and ((flags & PyBUF_WRITABLE) == PyBUF_WRITABLE):
 *         raise BufferError("dlpack: buffer is not writable")
*/

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_dlpack_check_rdonly(int __pyx_v_readonly, int __pyx_v_flags) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dlpack_check_rdonly", 0);

  /* "src/mpi4py/MPI.src/asdlpack.pxi":141
 * 
 * cdef inline int dlpack_check_rdonly(bint readonly, int flags) except -1:
 *     if readonly and ((flags & PyBUF_WRITABLE) == PyBUF_WRITABLE):             # <<<<<<<<<<<<<<
 *         raise BufferError("dlpack: buffer is not writable")
 *     return 0
*/
  if (__pyx_v_readonly) {
  } else {
    __pyx_t_1 = __pyx_v_readonly;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = ((__pyx_v_flags & PyBUF_WRITABLE) == PyBUF_WRITABLE);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (unlikely(__pyx_t_1)) {

    /* "src/mpi4py/MPI.src/asdlpack.pxi":142
 * cdef inline int dlpack_check_rdonly(bint readonly, int flags) except -1:
 *     if readonly and ((flags & PyBUF_WRITABLE) == PyBUF_WRITABLE):
 *         raise BufferError("dlpack: buffer is not writable")             # <<<<<<<<<<<<<<
 *     return 0
 * 
*/
    __pyx_t_4 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_dlpack_buffer_is_not_writable};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_BufferError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 142, __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(8, 142, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/asdlpack.pxi":141
 * 
 * cdef inline int dlpack_check_rdonly(bint readonly, int flags) except -1:
 *     if readonly and ((flags & PyBUF_WRITABLE) == PyBUF_WRITABLE):             # <<<<<<<<<<<<<<
 *         raise BufferError("dlpack: buffer is not writable")
 *     return 0
*/
  }

  /* "src/mpi4py/MPI.src/asdlpack.pxi":143
 *     if readonly and ((flags & PyBUF_WRITABLE) == PyBUF_WRITABLE):
 *         raise BufferError("dlpack: buffer is not writable")
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline void *dlpack_get_data(
*/
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":140
 *     return 0
 * 
 * cdef inline int dlpack_check_rdonly(bint readonly, int flags) except -1:             # <<<<<<<<<<<<<<
 *     if readonly and ((flags & PyBUF_WRITABLE) == PyBUF_WRITABLE):
 *         raise BufferError("dlpack: buffer is not writable")
*/

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

/* "src/mpi4py/MPI.src/asdlpack.pxi":145
 *     return 0
 * 
 * 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":148
 *     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":145
 *     return 0
 * 
 * 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":150
 *     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":153
 *     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":154
 * ) 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":155
 *     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":156
 *     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":157
 *     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":158
 *     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":159
 *     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":160
 *     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":161
 *         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":150
 *     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":163
 *     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":166
 *     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":167
 * ) 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":168
 *     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":169
 *     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":170
 *     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":171
 *         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":172
 *             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":169
 *     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":173
 *             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":168
 *     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":174
 *             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":175
 *         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":174
 *             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":176
 *     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":177
 *         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":178
 *     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":179
 *         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":180
 *         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":181
 *         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":176
 *     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":182
 *         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":183
 *         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":184
 *     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":185
 *         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":186
 *         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":187
 *         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":182
 *         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":188
 *         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":189
 *         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":190
 *     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":191
 *         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":192
 *         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":188
 *         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":193
 *         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":194
 *         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":195
 *     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":196
 *         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":197
 *         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":193
 *         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":198
 *         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":163
 *     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":200
 *     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":203
 *     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":204
 * ) 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":205
 *     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":206
 *     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":208
 *         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":209
 *             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":210
 *                 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":207
 *     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":212
 *                 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":207
 *     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":206
 *     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":213
 *             ):
 *                 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":205
 *     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":214
 *                 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":200
 *     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":218
 * # -----------------------------------------------------------------------------
 * 
 * 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;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Py_CheckDLPackBuffer", 0);

  /* "src/mpi4py/MPI.src/asdlpack.pxi":219
 * 
 * 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_mstate_global->__pyx_n_u_dlpack); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(8, 219, __pyx_L3_error)
      __pyx_r = __pyx_t_4;
      goto __pyx_L7_try_return;
    }
    __pyx_L3_error:;

    /* "src/mpi4py/MPI.src/asdlpack.pxi":220
 * 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_ErrRestore(0,0,0);
      __pyx_r = 0;
      goto __pyx_L6_except_return;
    }

    /* "src/mpi4py/MPI.src/asdlpack.pxi":219
 * 
 * cdef int Py_CheckDLPackBuffer(object obj) noexcept:
 *     try:    return <bint>hasattr(obj, '__dlpack__')             # <<<<<<<<<<<<<<
 *     except: return 0  # ~> uncovered  # noqa
 * 
*/
    __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":218
 * # -----------------------------------------------------------------------------
 * 
 * cdef int Py_CheckDLPackBuffer(object obj) noexcept:             # <<<<<<<<<<<<<<
 *     try:    return <bint>hasattr(obj, '__dlpack__')
 *     except: return 0  # ~> uncovered  # noqa
*/

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

/* "src/mpi4py/MPI.src/asdlpack.pxi":222
 *     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;
  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;
  PyObject *__pyx_t_9 = NULL;
  size_t __pyx_t_10;
  PyObject *(*__pyx_t_11)(PyObject *);
  unsigned int __pyx_t_12;
  int __pyx_t_13;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  void *__pyx_t_16;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Py_GetDLPackBuffer", 0);

  /* "src/mpi4py/MPI.src/asdlpack.pxi":223
 * 
 * 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 uint64_t READONLY = DLPACK_FLAG_BITMASK_READ_ONLY
*/
  __pyx_v_version_major = 1;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":224
 * 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 uint64_t READONLY = DLPACK_FLAG_BITMASK_READ_ONLY
 *     cdef object dlpack
*/
  __pyx_v_capsulename = __pyx_k_dltensor_versioned;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":225
 *     cdef unsigned version_major = 1
 *     cdef const char *capsulename = b"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":233
 *     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":234
 *     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":243
 *     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":244
 * 
 *     try:
 *         dlpack = obj.__dlpack__             # <<<<<<<<<<<<<<
 *         dlpack_device = obj.__dlpack_device__
 *     except AttributeError:
*/
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_dlpack); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 244, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_v_dlpack = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "src/mpi4py/MPI.src/asdlpack.pxi":245
 *     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_mstate_global->__pyx_n_u_dlpack_device); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 245, __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":243
 *     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":246
 *         dlpack = obj.__dlpack__
 *         dlpack_device = obj.__dlpack_device__
 *     except AttributeError:             # <<<<<<<<<<<<<<
 *         raise NotImplementedError("dlpack: missing support")
 * 
*/
    __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_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(8, 246, __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":247
 *         dlpack_device = obj.__dlpack_device__
 *     except AttributeError:
 *         raise NotImplementedError("dlpack: missing support")             # <<<<<<<<<<<<<<
 * 
 *     device_type, device_id = dlpack_device()
*/
      __pyx_t_9 = NULL;
      __pyx_t_10 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_kp_u_dlpack_missing_support};
        __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_NotImplementedError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_8)) __PYX_ERR(8, 247, __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(8, 247, __pyx_L5_except_error)
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/asdlpack.pxi":243
 *     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":249
 *         raise NotImplementedError("dlpack: missing support")
 * 
 *     device_type, device_id = dlpack_device()             # <<<<<<<<<<<<<<
 *     <void> device_id  # unused
 * 
*/
  __pyx_t_6 = NULL;
  __Pyx_INCREF(__pyx_v_dlpack_device);
  __pyx_t_4 = __pyx_v_dlpack_device; 
  __pyx_t_10 = 1;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
    assert(__pyx_t_6);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_6);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
    __pyx_t_10 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
    __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_10, (1-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_7)) __PYX_ERR(8, 249, __pyx_L1_error)
    __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(8, 249, __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_INCREF(__pyx_t_4);
      __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1);
      __Pyx_INCREF(__pyx_t_6);
    } else {
      __pyx_t_4 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 249, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __pyx_t_6 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_6)) __PYX_ERR(8, 249, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_6);
    }
    #else
    __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 249, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(8, 249, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    #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(8, 249, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_11 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_8);
    index = 0; __pyx_t_4 = __pyx_t_11(__pyx_t_8); if (unlikely(!__pyx_t_4)) goto __pyx_L11_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_4);
    index = 1; __pyx_t_6 = __pyx_t_11(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L11_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_6);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_8), 2) < (0)) __PYX_ERR(8, 249, __pyx_L1_error)
    __pyx_t_11 = 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_11 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(8, 249, __pyx_L1_error)
    __pyx_L12_unpacking_done:;
  }
  __pyx_t_12 = __Pyx_PyLong_As_unsigned_int(__pyx_t_4); if (unlikely((__pyx_t_12 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(8, 249, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_5 = __Pyx_PyLong_As_int(__pyx_t_6); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(8, 249, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_v_device_type = __pyx_t_12;
  __pyx_v_device_id = __pyx_t_5;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":250
 * 
 *     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":252
 *     <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":253
 * 
 *     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_PyLong_From_unsigned_int(__pyx_v_version_major); if (unlikely(!__pyx_t_7)) __PYX_ERR(8, 253, __pyx_L13_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(8, 253, __pyx_L13_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_7);
      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7) != (0)) __PYX_ERR(8, 253, __pyx_L13_error);
      __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0);
      __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_0);
      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_mstate_global->__pyx_int_0) != (0)) __PYX_ERR(8, 253, __pyx_L13_error);
      __pyx_t_7 = 0;
      __pyx_v_max_version = ((PyObject*)__pyx_t_6);
      __pyx_t_6 = 0;

      /* "src/mpi4py/MPI.src/asdlpack.pxi":254
 *     try:  # DLPack v1.0+
 *         max_version = (version_major, 0)
 *         if device_type == kDLCPU:             # <<<<<<<<<<<<<<
 *             capsule = dlpack(max_version=max_version, copy=False)
 *         else:
*/
      __pyx_t_13 = (__pyx_v_device_type == __pyx_e_6mpi4py_3MPI_kDLCPU);
      if (__pyx_t_13) {

        /* "src/mpi4py/MPI.src/asdlpack.pxi":255
 *         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_7 = NULL;
        __Pyx_INCREF(__pyx_v_dlpack);
        __pyx_t_4 = __pyx_v_dlpack; 
        __pyx_t_10 = 1;
        #if CYTHON_UNPACK_METHODS
        if (likely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
          assert(__pyx_t_7);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
          __pyx_t_10 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 2 : 0)] = {__pyx_t_7, NULL};
          __pyx_t_8 = __Pyx_MakeVectorcallBuilderKwds(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(8, 255, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_8);
          if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_max_version, __pyx_v_max_version, __pyx_t_8, __pyx_callargs+1, 0) < (0)) __PYX_ERR(8, 255, __pyx_L13_error)
          if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_copy, Py_False, __pyx_t_8, __pyx_callargs+1, 1) < (0)) __PYX_ERR(8, 255, __pyx_L13_error)
          __pyx_t_6 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_10, (1-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_8);
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_6)) __PYX_ERR(8, 255, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_6);
        }
        __pyx_v_capsule = __pyx_t_6;
        __pyx_t_6 = 0;

        /* "src/mpi4py/MPI.src/asdlpack.pxi":254
 *     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":257
 *             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_4 = NULL;
        __Pyx_INCREF(__pyx_v_dlpack);
        __pyx_t_8 = __pyx_v_dlpack; 
        __pyx_t_10 = 1;
        #if CYTHON_UNPACK_METHODS
        if (likely(PyMethod_Check(__pyx_t_8))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_8);
          assert(__pyx_t_4);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
          __pyx_t_10 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 3 : 0)] = {__pyx_t_4, NULL};
          __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(8, 257, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_7);
          if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_stream, __pyx_mstate_global->__pyx_int_neg_1, __pyx_t_7, __pyx_callargs+1, 0) < (0)) __PYX_ERR(8, 257, __pyx_L13_error)
          if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_max_version, __pyx_v_max_version, __pyx_t_7, __pyx_callargs+1, 1) < (0)) __PYX_ERR(8, 257, __pyx_L13_error)
          if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_copy, Py_False, __pyx_t_7, __pyx_callargs+1, 2) < (0)) __PYX_ERR(8, 257, __pyx_L13_error)
          __pyx_t_6 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_10, (1-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7);
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          if (unlikely(!__pyx_t_6)) __PYX_ERR(8, 257, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_6);
        }
        __pyx_v_capsule = __pyx_t_6;
        __pyx_t_6 = 0;
      }
      __pyx_L19:;

      /* "src/mpi4py/MPI.src/asdlpack.pxi":252
 *     <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;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/asdlpack.pxi":258
 *         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(((PyObject *)(((PyTypeObject*)PyExc_TypeError))));
    if (__pyx_t_5) {
      __Pyx_AddTraceback("mpi4py.MPI.Py_GetDLPackBuffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_8, &__pyx_t_7) < 0) __PYX_ERR(8, 258, __pyx_L15_except_error)
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_7);

      /* "src/mpi4py/MPI.src/asdlpack.pxi":259
 *             capsule = dlpack(stream=-1, max_version=max_version, copy=False)
 *     except TypeError:  # DLPack v0.x
 *         version_major = 0             # <<<<<<<<<<<<<<
 *         capsulename = b"dltensor"
 *         if device_type == kDLCPU:
*/
      __pyx_v_version_major = 0;

      /* "src/mpi4py/MPI.src/asdlpack.pxi":260
 *     except TypeError:  # DLPack v0.x
 *         version_major = 0
 *         capsulename = b"dltensor"             # <<<<<<<<<<<<<<
 *         if device_type == kDLCPU:
 *             capsule = dlpack()
*/
      __pyx_v_capsulename = __pyx_k_dltensor;

      /* "src/mpi4py/MPI.src/asdlpack.pxi":261
 *         version_major = 0
 *         capsulename = b"dltensor"
 *         if device_type == kDLCPU:             # <<<<<<<<<<<<<<
 *             capsule = dlpack()
 *         else:
*/
      __pyx_t_13 = (__pyx_v_device_type == __pyx_e_6mpi4py_3MPI_kDLCPU);
      if (__pyx_t_13) {

        /* "src/mpi4py/MPI.src/asdlpack.pxi":262
 *         capsulename = b"dltensor"
 *         if device_type == kDLCPU:
 *             capsule = dlpack()             # <<<<<<<<<<<<<<
 *         else:
 *             capsule = dlpack(stream=-1)
*/
        __pyx_t_9 = NULL;
        __Pyx_INCREF(__pyx_v_dlpack);
        __pyx_t_14 = __pyx_v_dlpack; 
        __pyx_t_10 = 1;
        #if CYTHON_UNPACK_METHODS
        if (likely(PyMethod_Check(__pyx_t_14))) {
          __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_14);
          assert(__pyx_t_9);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_14);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_14, __pyx__function);
          __pyx_t_10 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_9, NULL};
          __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_14, __pyx_callargs+__pyx_t_10, (1-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 262, __pyx_L15_except_error)
          __Pyx_GOTREF(__pyx_t_4);
        }
        __Pyx_XDECREF_SET(__pyx_v_capsule, __pyx_t_4);
        __pyx_t_4 = 0;

        /* "src/mpi4py/MPI.src/asdlpack.pxi":261
 *         version_major = 0
 *         capsulename = b"dltensor"
 *         if device_type == kDLCPU:             # <<<<<<<<<<<<<<
 *             capsule = dlpack()
 *         else:
*/
        goto __pyx_L22;
      }

      /* "src/mpi4py/MPI.src/asdlpack.pxi":264
 *             capsule = dlpack()
 *         else:
 *             capsule = dlpack(stream=-1)             # <<<<<<<<<<<<<<
 * 
 *     if not PyCapsule_IsValid(capsule, capsulename):
*/
      /*else*/ {
        __pyx_t_14 = NULL;
        __Pyx_INCREF(__pyx_v_dlpack);
        __pyx_t_9 = __pyx_v_dlpack; 
        __pyx_t_10 = 1;
        #if CYTHON_UNPACK_METHODS
        if (likely(PyMethod_Check(__pyx_t_9))) {
          __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_9);
          assert(__pyx_t_14);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_14);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_9, __pyx__function);
          __pyx_t_10 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_14, NULL};
          __pyx_t_15 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_15)) __PYX_ERR(8, 264, __pyx_L15_except_error)
          __Pyx_GOTREF(__pyx_t_15);
          if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_stream, __pyx_mstate_global->__pyx_int_neg_1, __pyx_t_15, __pyx_callargs+1, 0) < (0)) __PYX_ERR(8, 264, __pyx_L15_except_error)
          __pyx_t_4 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_9, __pyx_callargs+__pyx_t_10, (1-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_15);
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 264, __pyx_L15_except_error)
          __Pyx_GOTREF(__pyx_t_4);
        }
        __Pyx_XDECREF_SET(__pyx_v_capsule, __pyx_t_4);
        __pyx_t_4 = 0;
      }
      __pyx_L22:;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L14_exception_handled;
    }
    goto __pyx_L15_except_error;

    /* "src/mpi4py/MPI.src/asdlpack.pxi":252
 *     <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":266
 *             capsule = dlpack(stream=-1)
 * 
 *     if not PyCapsule_IsValid(capsule, capsulename):             # <<<<<<<<<<<<<<
 *         raise BufferError("dlpack: invalid capsule object")
 *     pointer = PyCapsule_GetPointer(capsule, capsulename)
*/
  __pyx_t_13 = (!(PyCapsule_IsValid(__pyx_v_capsule, __pyx_v_capsulename) != 0));
  if (unlikely(__pyx_t_13)) {

    /* "src/mpi4py/MPI.src/asdlpack.pxi":267
 * 
 *     if not PyCapsule_IsValid(capsule, capsulename):
 *         raise BufferError("dlpack: invalid capsule object")             # <<<<<<<<<<<<<<
 *     pointer = PyCapsule_GetPointer(capsule, capsulename)
 *     if version_major >= 1:
*/
    __pyx_t_8 = NULL;
    __pyx_t_10 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_mstate_global->__pyx_kp_u_dlpack_invalid_capsule_object};
      __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_BufferError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_7)) __PYX_ERR(8, 267, __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(8, 267, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/asdlpack.pxi":266
 *             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":268
 *     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_16 = PyCapsule_GetPointer(__pyx_v_capsule, __pyx_v_capsulename); if (unlikely(__pyx_t_16 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(8, 268, __pyx_L1_error)
  __pyx_v_pointer = __pyx_t_16;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":269
 *         raise BufferError("dlpack: invalid capsule object")
 *     pointer = PyCapsule_GetPointer(capsule, capsulename)
 *     if version_major >= 1:             # <<<<<<<<<<<<<<
 *         managed1  = <DLManagedTensorVersioned*> pointer
 *         dlversion = &managed1.version
*/
  __pyx_t_13 = (__pyx_v_version_major >= 1);
  if (__pyx_t_13) {

    /* "src/mpi4py/MPI.src/asdlpack.pxi":270
 *     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":271
 *     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":272
 *         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":273
 *         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":269
 *         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":275
 *         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":276
 *     else:
 *         managed0  = <DLManagedTensor*> pointer
 *         dlversion = NULL             # <<<<<<<<<<<<<<
 *         dltensor  = &managed0.dl_tensor
 *         readonly  = 0
*/
    __pyx_v_dlversion = NULL;

    /* "src/mpi4py/MPI.src/asdlpack.pxi":277
 *         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":278
 *         dlversion = NULL
 *         dltensor  = &managed0.dl_tensor
 *         readonly  = 0             # <<<<<<<<<<<<<<
 * 
 *     dlpack_check_version(dlversion, version_major)
*/
    __pyx_v_readonly = 0;
  }
  __pyx_L24:;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":280
 *         readonly  = 0
 * 
 *     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(8, 280, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asdlpack.pxi":281
 * 
 *     dlpack_check_version(dlversion, version_major)
 *     dlpack_check_shape(dltensor)             # <<<<<<<<<<<<<<
 *     dlpack_check_contig(dltensor)
 *     dlpack_check_rdonly(readonly, flags)
*/
  __pyx_t_5 = __pyx_f_6mpi4py_3MPI_dlpack_check_shape(__pyx_v_dltensor); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(8, 281, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asdlpack.pxi":282
 *     dlpack_check_version(dlversion, version_major)
 *     dlpack_check_shape(dltensor)
 *     dlpack_check_contig(dltensor)             # <<<<<<<<<<<<<<
 *     dlpack_check_rdonly(readonly, flags)
 * 
*/
  __pyx_t_5 = __pyx_f_6mpi4py_3MPI_dlpack_check_contig(__pyx_v_dltensor); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(8, 282, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asdlpack.pxi":283
 *     dlpack_check_shape(dltensor)
 *     dlpack_check_contig(dltensor)
 *     dlpack_check_rdonly(readonly, flags)             # <<<<<<<<<<<<<<
 * 
 *     buf = dlpack_get_data(dltensor)
*/
  __pyx_t_5 = __pyx_f_6mpi4py_3MPI_dlpack_check_rdonly(__pyx_v_readonly, __pyx_v_flags); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(8, 283, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asdlpack.pxi":285
 *     dlpack_check_rdonly(readonly, flags)
 * 
 *     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":286
 * 
 *     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":287
 *     buf = dlpack_get_data(dltensor)
 *     size = dlpack_get_size(dltensor)
 *     itemsize = dlpack_get_itemsize(dltensor)             # <<<<<<<<<<<<<<
 *     format = dlpack_get_format(dltensor)
 * 
*/
  __pyx_v_itemsize = __pyx_f_6mpi4py_3MPI_dlpack_get_itemsize(__pyx_v_dltensor);

  /* "src/mpi4py/MPI.src/asdlpack.pxi":288
 *     size = dlpack_get_size(dltensor)
 *     itemsize = dlpack_get_itemsize(dltensor)
 *     format = dlpack_get_format(dltensor)             # <<<<<<<<<<<<<<
 * 
 *     PyBuffer_FillInfo(view, capsule, buf, size, readonly, flags)
*/
  __pyx_v_format = __pyx_f_6mpi4py_3MPI_dlpack_get_format(__pyx_v_dltensor);

  /* "src/mpi4py/MPI.src/asdlpack.pxi":290
 *     format = dlpack_get_format(dltensor)
 * 
 *     PyBuffer_FillInfo(view, capsule, buf, size, readonly, flags)             # <<<<<<<<<<<<<<
 * 
 *     if (flags & PyBUF_FORMAT) == PyBUF_FORMAT:
*/
  __pyx_t_5 = PyBuffer_FillInfo(__pyx_v_view, __pyx_v_capsule, __pyx_v_buf, __pyx_v_size, __pyx_v_readonly, __pyx_v_flags); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(8, 290, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asdlpack.pxi":292
 *     PyBuffer_FillInfo(view, capsule, buf, size, readonly, flags)
 * 
 *     if (flags & PyBUF_FORMAT) == PyBUF_FORMAT:             # <<<<<<<<<<<<<<
 *         view.format = format
 *         if view.format != BYTE_FMT:
*/
  __pyx_t_13 = ((__pyx_v_flags & PyBUF_FORMAT) == PyBUF_FORMAT);
  if (__pyx_t_13) {

    /* "src/mpi4py/MPI.src/asdlpack.pxi":293
 * 
 *     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":294
 *     if (flags & PyBUF_FORMAT) == PyBUF_FORMAT:
 *         view.format = format
 *         if view.format != BYTE_FMT:             # <<<<<<<<<<<<<<
 *             view.itemsize = itemsize
 * 
*/
    __pyx_t_13 = (__pyx_v_view->format != __pyx_v_6mpi4py_3MPI_BYTE_FMT);
    if (__pyx_t_13) {

      /* "src/mpi4py/MPI.src/asdlpack.pxi":295
 *         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":294
 *     if (flags & PyBUF_FORMAT) == PyBUF_FORMAT:
 *         view.format = format
 *         if view.format != BYTE_FMT:             # <<<<<<<<<<<<<<
 *             view.itemsize = itemsize
 * 
*/
    }

    /* "src/mpi4py/MPI.src/asdlpack.pxi":292
 *     PyBuffer_FillInfo(view, capsule, buf, size, readonly, flags)
 * 
 *     if (flags & PyBUF_FORMAT) == PyBUF_FORMAT:             # <<<<<<<<<<<<<<
 *         view.format = format
 *         if view.format != BYTE_FMT:
*/
  }

  /* "src/mpi4py/MPI.src/asdlpack.pxi":297
 *             view.itemsize = itemsize
 * 
 *     return <int> device_type             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  __pyx_r = ((int)__pyx_v_device_type);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":222
 *     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_9);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __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", 0);

  /* "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, PyLong_FromSsize_t, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); 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, PyLong_FromSsize_t, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); 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;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Py_CheckCAIBuffer", 0);

  /* "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_mstate_global->__pyx_n_u_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_ErrRestore(0,0,0);
      __pyx_r = 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_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_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;
  PyObject *__pyx_t_9 = NULL;
  size_t __pyx_t_10;
  int __pyx_t_11;
  Py_ssize_t __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  int __pyx_t_14;
  void *__pyx_t_15;
  long __pyx_t_16;
  PyObject *__pyx_t_17[3];
  PyObject *__pyx_t_18[5];
  PyObject *__pyx_t_19[7];
  PyObject *__pyx_t_20 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Py_GetCAIBuffer", 0);

  /* "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_mstate_global->__pyx_n_u_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(((PyObject *)(((PyTypeObject*)PyExc_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_9 = NULL;
      __pyx_t_10 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_kp_u_missing_CUDA_array_interface};
        __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_NotImplementedError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        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_mstate_global->__pyx_n_u_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_mstate_global->__pyx_n_u_typestr); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (!(likely(PyUnicode_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_mstate_global->__pyx_n_u_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_mstate_global->__pyx_n_u_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_mstate_global->__pyx_n_u_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_mstate_global->__pyx_n_u_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_PyTuple_GET_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_INCREF(__pyx_t_7);
    __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1);
    __Pyx_INCREF(__pyx_t_6);
    #else
    __pyx_t_7 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 95, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = __Pyx_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_11 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_11 == (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_11;

  /* "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_12 = 0;
  for (;;) {
    {
      Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_6);
      #if !CYTHON_ASSUME_SAFE_SIZE
      if (unlikely((__pyx_temp < 0))) __PYX_ERR(9, 96, __pyx_L1_error)
      #endif
      if (__pyx_t_12 >= __pyx_temp) break;
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_7 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_12));
    #else
    __pyx_t_7 = __Pyx_PySequence_ITEM(__pyx_t_6, __pyx_t_12);
    #endif
    ++__pyx_t_12;
    if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_13 = __Pyx_PyIndex_AsSsize_t(__pyx_t_7); if (unlikely((__pyx_t_13 == (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_13;
    __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_14 = (__pyx_v_dev_ptr == Py_None);
  if (__pyx_t_14) {
  } else {
    __pyx_t_11 = __pyx_t_14;
    goto __pyx_L15_bool_binop_done;
  }
  __pyx_t_14 = (__pyx_v_size == 0);
  __pyx_t_11 = __pyx_t_14;
  __pyx_L15_bool_binop_done:;
  if (__pyx_t_11) {
    __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0);
    __Pyx_DECREF_SET(__pyx_v_dev_ptr, __pyx_mstate_global->__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_15 = PyLong_AsVoidPtr(__pyx_v_dev_ptr); if (unlikely(__pyx_t_15 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(9, 98, __pyx_L1_error)
  __pyx_v_buf = __pyx_t_15;

  /* "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 = __Pyx_PyUnicode_Substring(__pyx_v_typestr, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_16 = __Pyx_PyObject_Ord(__pyx_t_6); if (unlikely(__pyx_t_16 == ((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_16);

  /* "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 = __Pyx_PyUnicode_Substring(__pyx_v_typestr, 1, 2); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_16 = __Pyx_PyObject_Ord(__pyx_t_6); if (unlikely(__pyx_t_16 == ((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_16);

  /* "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 = __Pyx_PyUnicode_Substring(__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_12 = __Pyx_PyIndex_AsSsize_t(__pyx_t_7); if (unlikely((__pyx_t_12 == (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_12);

  /* "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_11 = ((__pyx_v_flags & PyBUF_FORMAT) == PyBUF_FORMAT);
  if (__pyx_t_11) {

    /* "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_11 = (__pyx_v_byteorder == '<');
    if (__pyx_t_11) {

      /* "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_11 = (!(__pyx_f_6mpi4py_3MPI_is_little_endian() != 0));
      if (unlikely(__pyx_t_11)) {

        /* "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_6 = NULL;

        /* "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_4 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_typestr), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 109, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_17[0] = __pyx_mstate_global->__pyx_kp_u_cuda_array_interface___typestr;
        __pyx_t_17[1] = __pyx_t_4;
        __pyx_t_17[2] = __pyx_mstate_global->__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_8 = __Pyx_PyUnicode_Join(__pyx_t_17, 3, 34 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 27, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4));
        if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 108, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_10 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_8};
          __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_BufferError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 107, __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, 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_11 = (__pyx_v_byteorder == '>');
    if (__pyx_t_11) {

      /* "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_11 = (!(__pyx_f_6mpi4py_3MPI_is_big_endian() != 0));
      if (unlikely(__pyx_t_11)) {

        /* "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_8 = NULL;

        /* "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_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 115, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_17[0] = __pyx_mstate_global->__pyx_kp_u_cuda_array_interface___typestr;
        __pyx_t_17[1] = __pyx_t_6;
        __pyx_t_17[2] = __pyx_mstate_global->__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_4 = __Pyx_PyUnicode_Join(__pyx_t_17, 3, 34 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6) + 27, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6));
        if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 114, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_10 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_4};
          __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_BufferError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 113, __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, 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_11 = (__pyx_v_byteorder != '|');
    if (unlikely(__pyx_t_11)) {

      /* "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_4 = NULL;

      /* "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_8 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_typestr), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 120, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_17[0] = __pyx_mstate_global->__pyx_kp_u_cuda_array_interface___typestr;
      __pyx_t_17[1] = __pyx_t_8;
      __pyx_t_17[2] = __pyx_mstate_global->__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_17, 3, 34 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8) + 29, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8));
      if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 119, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_10 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6};
        __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_BufferError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 118, __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, 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_11 = (__pyx_v_mask != Py_None);
  if (unlikely(__pyx_t_11)) {

    /* "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_6 = NULL;
    __pyx_t_10 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_cuda_array_interface___cannot};
      __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_BufferError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      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_11 = (__pyx_v_size < 0);
  if (unlikely(__pyx_t_11)) {

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":128
 *         )
 *     if size < 0:
 *         raise BufferError(             # <<<<<<<<<<<<<<
 *             f"__cuda_array_interface__: "
 *             f"buffer with negative size "
*/
    __pyx_t_6 = NULL;

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":131
 *             f"__cuda_array_interface__: "
 *             f"buffer with negative size "
 *             f"(shape:{shape}, size:{size})"             # <<<<<<<<<<<<<<
 *         )
 *     if (
*/
    __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_v_shape, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 131, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_8 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_size, 0, ' ', 'd'); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 131, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_18[0] = __pyx_mstate_global->__pyx_kp_u_cuda_array_interface___buffer;
    __pyx_t_18[1] = __pyx_t_4;
    __pyx_t_18[2] = __pyx_mstate_global->__pyx_kp_u_size;
    __pyx_t_18[3] = __pyx_t_8;
    __pyx_t_18[4] = __pyx_mstate_global->__pyx_kp_u__4;

    /* "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_9 = __Pyx_PyUnicode_Join(__pyx_t_18, 5, 59 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 7 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4));
    if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 129, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_10 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_9};
      __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_BufferError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 128, __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, 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_14 = (__pyx_v_strides != ((PyObject*)Py_None));
  if (__pyx_t_14) {
  } else {
    __pyx_t_11 = __pyx_t_14;
    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_14 = (!(__pyx_t_5 != 0));
  if (__pyx_t_14) {
  } else {
    __pyx_t_11 = __pyx_t_14;
    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_14 = (!(__pyx_t_5 != 0));
  __pyx_t_11 = __pyx_t_14;
  __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_11)) {

    /* "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_9 = NULL;

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":141
 *             f"__cuda_array_interface__: "
 *             f"buffer is not contiguous "
 *             f"(shape:{shape}, strides:{strides}, itemsize:{itemsize})"             # <<<<<<<<<<<<<<
 *         )
 *     if readonly and ((flags & PyBUF_WRITABLE) == PyBUF_WRITABLE):
*/
    __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_shape, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 141, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_strides, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 141, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_4 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_itemsize, 0, ' ', 'd'); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 141, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_19[0] = __pyx_mstate_global->__pyx_kp_u_cuda_array_interface___buffer_2;
    __pyx_t_19[1] = __pyx_t_6;
    __pyx_t_19[2] = __pyx_mstate_global->__pyx_kp_u_strides_2;
    __pyx_t_19[3] = __pyx_t_8;
    __pyx_t_19[4] = __pyx_mstate_global->__pyx_kp_u_itemsize;
    __pyx_t_19[5] = __pyx_t_4;
    __pyx_t_19[6] = __pyx_mstate_global->__pyx_kp_u__4;

    /* "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_20 = __Pyx_PyUnicode_Join(__pyx_t_19, 7, 58 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6) + 10 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8) + 11 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8));
    if (unlikely(!__pyx_t_20)) __PYX_ERR(9, 139, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_20);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_10 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_20};
      __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_BufferError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
      if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 138, __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, 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 readonly and ((flags & PyBUF_WRITABLE) == PyBUF_WRITABLE):             # <<<<<<<<<<<<<<
 *         raise BufferError(
 *             f"__cuda_array_interface__: "
*/
  if (__pyx_v_readonly) {
  } else {
    __pyx_t_11 = __pyx_v_readonly;
    goto __pyx_L28_bool_binop_done;
  }
  __pyx_t_14 = ((__pyx_v_flags & PyBUF_WRITABLE) == PyBUF_WRITABLE);
  __pyx_t_11 = __pyx_t_14;
  __pyx_L28_bool_binop_done:;
  if (unlikely(__pyx_t_11)) {

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":144
 *         )
 *     if readonly and ((flags & PyBUF_WRITABLE) == PyBUF_WRITABLE):
 *         raise BufferError(             # <<<<<<<<<<<<<<
 *             f"__cuda_array_interface__: "
 *             f"buffer is not writable"
*/
    __pyx_t_20 = NULL;
    __pyx_t_10 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_20, __pyx_mstate_global->__pyx_kp_u_cuda_array_interface___buffer_3};
      __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_BufferError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
      if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 144, __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, 144, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":143
 *             f"(shape:{shape}, strides:{strides}, itemsize:{itemsize})"
 *         )
 *     if readonly and ((flags & PyBUF_WRITABLE) == PyBUF_WRITABLE):             # <<<<<<<<<<<<<<
 *         raise BufferError(
 *             f"__cuda_array_interface__: "
*/
  }

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":148
 *             f"buffer is not writable"
 *         )
 *     if  descr is not None and (len(descr) != 1 or descr[0] != ('', typestr)):             # <<<<<<<<<<<<<<
 *         PyErr_WarnFormat(
 *             RuntimeWarning, 1,
*/
  __pyx_t_14 = (__pyx_v_descr != ((PyObject*)Py_None));
  if (__pyx_t_14) {
  } else {
    __pyx_t_11 = __pyx_t_14;
    goto __pyx_L31_bool_binop_done;
  }
  if (unlikely(__pyx_v_descr == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(9, 148, __pyx_L1_error)
  }
  __pyx_t_12 = __Pyx_PyList_GET_SIZE(__pyx_v_descr); if (unlikely(__pyx_t_12 == ((Py_ssize_t)-1))) __PYX_ERR(9, 148, __pyx_L1_error)
  __pyx_t_14 = (__pyx_t_12 != 1);
  if (!__pyx_t_14) {
  } else {
    __pyx_t_11 = __pyx_t_14;
    goto __pyx_L31_bool_binop_done;
  }
  if (unlikely(__pyx_v_descr == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(9, 148, __pyx_L1_error)
  }
  __pyx_t_7 = __Pyx_GetItemInt_List(__pyx_v_descr, 0, long, 1, __Pyx_PyLong_From_long, 1, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_20 = PyTuple_New(2); if (unlikely(!__pyx_t_20)) __PYX_ERR(9, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_kp_u_);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_20, 0, __pyx_mstate_global->__pyx_kp_u_) != (0)) __PYX_ERR(9, 148, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_typestr);
  __Pyx_GIVEREF(__pyx_v_typestr);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_20, 1, __pyx_v_typestr) != (0)) __PYX_ERR(9, 148, __pyx_L1_error);
  __pyx_t_9 = PyObject_RichCompare(__pyx_t_7, __pyx_t_20, Py_NE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 148, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
  __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(9, 148, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_11 = __pyx_t_14;
  __pyx_L31_bool_binop_done:;
  if (__pyx_t_11) {

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":149
 *         )
 *     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(((PyObject *)(((PyTypeObject*)PyExc_RuntimeWarning))), 1, ((char *)"__cuda_array_interface__: %s"), ((char *)"ignoring 'descr' key")); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(9, 149, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":148
 *             f"buffer is not writable"
 *         )
 *     if  descr is not None and (len(descr) != 1 or descr[0] != ('', typestr)):             # <<<<<<<<<<<<<<
 *         PyErr_WarnFormat(
 *             RuntimeWarning, 1,
*/
  }

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":155
 *         )
 * 
 *     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, 155, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":157
 *     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_11 = ((__pyx_v_flags & PyBUF_FORMAT) == PyBUF_FORMAT);
  if (__pyx_t_11) {

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":158
 * 
 *     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":159
 *     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/ascaibuf.pxi":160
 *         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":159
 *     if (flags & PyBUF_FORMAT) == PyBUF_FORMAT:
 *         view.format = format
 *         if view.format != BYTE_FMT:             # <<<<<<<<<<<<<<
 *             view.itemsize = itemsize
 * 
*/
    }

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":157
 *     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":162
 *             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_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_20);
  __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":61
 * 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", 0);

  /* "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:
*/
  {
    __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":63
 * 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(1, 63, __pyx_L3_error)
      __pyx_r = __pyx_t_4;
      goto __pyx_L7_try_return;

      /* "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:
*/
    }
    __pyx_L3_error:;

    /* "src/mpi4py/MPI.src/asbuffer.pxi":64
 *     try:
 *         return PyObject_GetBuffer(obj, view, flags)
 *     except BaseException:             # <<<<<<<<<<<<<<
 *         try:
 *             return Py_GetDLPackBuffer(obj, view, flags)
*/
    __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_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(1, 64, __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":65
 *         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":66
 *     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(1, 66, __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":65
 *         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":67
 *         try:
 *             return Py_GetDLPackBuffer(obj, view, flags)
 *         except NotImplementedError:             # <<<<<<<<<<<<<<
 *             pass
 *         except BaseException:
*/
        __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_NotImplementedError))));
        if (__pyx_t_4) {
          __Pyx_ErrRestore(0,0,0);
          goto __pyx_L12_exception_handled;
        }

        /* "src/mpi4py/MPI.src/asbuffer.pxi":69
 *         except NotImplementedError:
 *             pass
 *         except BaseException:             # <<<<<<<<<<<<<<
 *             raise
 *         try:
*/
        __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_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(1, 69, __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":70
 *             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(1, 70, __pyx_L13_except_error)
        }
        goto __pyx_L13_except_error;

        /* "src/mpi4py/MPI.src/asbuffer.pxi":65
 *         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":71
 *         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":72
 *             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(1, 72, __pyx_L23_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_L27_try_return;

          /* "src/mpi4py/MPI.src/asbuffer.pxi":71
 *         except BaseException:
 *             raise
 *         try:             # <<<<<<<<<<<<<<
 *             return Py_GetCAIBuffer(obj, view, flags)
 *         except NotImplementedError:
*/
        }
        __pyx_L23_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":73
 *         try:
 *             return Py_GetCAIBuffer(obj, view, flags)
 *         except NotImplementedError:             # <<<<<<<<<<<<<<
 *             pass
 *         except BaseException:
*/
        __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_NotImplementedError))));
        if (__pyx_t_4) {
          __Pyx_ErrRestore(0,0,0);
          goto __pyx_L24_exception_handled;
        }

        /* "src/mpi4py/MPI.src/asbuffer.pxi":75
 *         except NotImplementedError:
 *             pass
 *         except BaseException:             # <<<<<<<<<<<<<<
 *             raise
 *         raise
*/
        __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_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(1, 75, __pyx_L25_except_error)
          __Pyx_XGOTREF(__pyx_t_13);
          __Pyx_XGOTREF(__pyx_t_12);
          __Pyx_XGOTREF(__pyx_t_11);

          /* "src/mpi4py/MPI.src/asbuffer.pxi":76
 *             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(1, 76, __pyx_L25_except_error)
        }
        goto __pyx_L25_except_error;

        /* "src/mpi4py/MPI.src/asbuffer.pxi":71
 *         except BaseException:
 *             raise
 *         try:             # <<<<<<<<<<<<<<
 *             return Py_GetCAIBuffer(obj, view, flags)
 *         except NotImplementedError:
*/
        __pyx_L25_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_L27_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_L24_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":77
 *         except BaseException:
 *             raise
 *         raise             # <<<<<<<<<<<<<<
 * 
 * cdef void PyMPI_ReleaseBuffer(int kind, Py_buffer *view) noexcept:
*/
      __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(1, 77, __pyx_L5_except_error)
    }
    goto __pyx_L5_except_error;

    /* "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:
*/
    __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":61
 * 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":79
 *         raise
 * 
 * cdef void PyMPI_ReleaseBuffer(int kind, Py_buffer *view) noexcept:             # <<<<<<<<<<<<<<
 *     if kind == 0:
 *         # Python buffer interface
*/

static void __pyx_f_6mpi4py_3MPI_PyMPI_ReleaseBuffer(int __pyx_v_kind, Py_buffer *__pyx_v_view) {
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":80
 * 
 * cdef void PyMPI_ReleaseBuffer(int kind, Py_buffer *view) noexcept:
 *     if kind == 0:             # <<<<<<<<<<<<<<
 *         # Python buffer interface
 *         PyBuffer_Release(view)
*/
  __pyx_t_1 = (__pyx_v_kind == 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/asbuffer.pxi":82
 *     if kind == 0:
 *         # Python buffer interface
 *         PyBuffer_Release(view)             # <<<<<<<<<<<<<<
 *     else:
 *         # DLPack/CAI buffer interface
*/
    PyBuffer_Release(__pyx_v_view);

    /* "src/mpi4py/MPI.src/asbuffer.pxi":80
 * 
 * cdef void PyMPI_ReleaseBuffer(int kind, Py_buffer *view) noexcept:
 *     if kind == 0:             # <<<<<<<<<<<<<<
 *         # Python buffer interface
 *         PyBuffer_Release(view)
*/
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":85
 *     else:
 *         # DLPack/CAI buffer interface
 *         Py_CLEAR(view.obj)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  /*else*/ {
    Py_CLEAR(__pyx_v_view->obj);
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":79
 *         raise
 * 
 * cdef void PyMPI_ReleaseBuffer(int kind, Py_buffer *view) noexcept:             # <<<<<<<<<<<<<<
 *     if kind == 0:
 *         # Python buffer interface
*/

  /* function exit code */
}

/* "src/mpi4py/MPI.src/asbuffer.pxi":102
 *     Py_ssize_t PyNumber_AsSsize_t(object, object) except? -1
 * 
 * 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;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("check_cpu_accessible", 0);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":103
 * 
 * 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":104
 * 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":105
 *     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":106
 *     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":107
 *     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":108
 *     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":109
 *     if device_type == kDLROCMHost    : return 0  # ~> uncovered
 *     if device_type == kDLCUDAManaged : return 0  # ~> uncovered
 *     raise BufferError("buffer is not CPU-accessible")             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_3 = NULL;
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_buffer_is_not_CPU_accessible};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_BufferError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 109, __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, 109, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asbuffer.pxi":102
 *     Py_ssize_t PyNumber_AsSsize_t(object, object) except? -1
 * 
 * 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_XDECREF(__pyx_t_3);
  __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":121
 *     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_SIZE
  __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);
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__cinit__", __pyx_kwds); 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__", 0);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":122
 * 
 *     def __cinit__(self, *args):
 *         if args:             # <<<<<<<<<<<<<<
 *             self.kind = PyMPI_GetBuffer(args[0], &self.view, PyBUF_SIMPLE)
 *         else:
*/
  {
    Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_v_args);
    if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(1, 122, __pyx_L1_error)
    __pyx_t_1 = (__pyx_temp != 0);
  }

  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/asbuffer.pxi":123
 *     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_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 123, __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(1, 123, __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":122
 * 
 *     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":125
 *             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":126
 *         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(1, 125, __pyx_L1_error)
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":121
 *     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":128
 *                               NULL, 0, 0, PyBUF_SIMPLE)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         PyMPI_ReleaseBuffer(self.kind, &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":129
 * 
 *     def __dealloc__(self):
 *         PyMPI_ReleaseBuffer(self.kind, &self.view)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __pyx_f_6mpi4py_3MPI_PyMPI_ReleaseBuffer(__pyx_v_self->kind, (&__pyx_v_self->view));

  /* "src/mpi4py/MPI.src/asbuffer.pxi":128
 *                               NULL, 0, 0, PyBUF_SIMPLE)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         PyMPI_ReleaseBuffer(self.kind, &self.view)
 * 
*/

  /* function exit code */
}

/* "src/mpi4py/MPI.src/asbuffer.pxi":131
 *         PyMPI_ReleaseBuffer(self.kind, &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\n\nBuffer allocation.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6buffer_5allocate = {"allocate", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_nbytes,&__pyx_mstate_global->__pyx_n_u_clear,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 131, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 131, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 131, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "allocate", 0) < (0)) __PYX_ERR(1, 131, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("allocate", 0, 1, 2, i); __PYX_ERR(1, 131, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 131, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 131, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_nbytes = __Pyx_PyLong_As_MPI_Aint(values[0]); if (unlikely((__pyx_v_nbytes == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(1, 133, __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(1, 134, __pyx_L3_error)
    } else {

      /* "src/mpi4py/MPI.src/asbuffer.pxi":134
 *     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(1, 131, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":131
 *         PyMPI_ReleaseBuffer(self.kind, &self.view)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def allocate(
 *         Aint nbytes: int,
*/

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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;
  size_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("allocate", 0);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":137
 *     ) -> 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":138
 *         """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":139
 *         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":140
 *         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_3 = NULL;
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_expecting_non_negative_size};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 140, __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, 140, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/asbuffer.pxi":139
 *         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":141
 *         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(1, 141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_ob = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":142
 *             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_mstate_global->__pyx_ptype_6mpi4py_3MPI_buffer); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 142, __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":143
 *         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_5 = PyBuffer_FillInfo((&__pyx_v_buf->view), __pyx_v_ob, __pyx_v_addr, __pyx_v_size, 0, PyBUF_SIMPLE); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 143, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asbuffer.pxi":144
 *         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":131
 *         PyMPI_ReleaseBuffer(self.kind, &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":146
 *         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\n\nBuffer from buffer-like object.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6buffer_7frombuffer = {"frombuffer", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_obj,&__pyx_mstate_global->__pyx_n_u_readonly,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 146, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 146, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 146, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "frombuffer", 0) < (0)) __PYX_ERR(1, 146, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("frombuffer", 0, 1, 2, i); __PYX_ERR(1, 146, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 146, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 146, __pyx_L3_error)
        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(1, 149, __pyx_L3_error)
    } else {

      /* "src/mpi4py/MPI.src/asbuffer.pxi":149
 *     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(1, 146, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":146
 *         return buf
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def frombuffer(
 *         obj: Buffer,
*/

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":152
 *     ) -> 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":153
 *         """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":154
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_buffer); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 154, __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":155
 *         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(1, 155, __pyx_L1_error)
  __pyx_v_buf->kind = __pyx_t_4;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":156
 *         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":157
 *         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":146
 *         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":159
 *         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\n\nBuffer from address and size in bytes.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6buffer_9fromaddress = {"fromaddress", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_address,&__pyx_mstate_global->__pyx_n_u_nbytes,&__pyx_mstate_global->__pyx_n_u_readonly,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 159, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 159, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 159, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 159, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "fromaddress", 0) < (0)) __PYX_ERR(1, 159, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("fromaddress", 0, 2, 3, i); __PYX_ERR(1, 159, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 159, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 159, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 159, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_address = values[0];
    __pyx_v_nbytes = __Pyx_PyLong_As_MPI_Aint(values[1]); if (unlikely((__pyx_v_nbytes == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(1, 162, __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(1, 163, __pyx_L3_error)
    } else {

      /* "src/mpi4py/MPI.src/asbuffer.pxi":163
 *         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(1, 159, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":159
 *         return buf
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def fromaddress(
 *         address: int,
*/

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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;
  PyObject *__pyx_t_4 = NULL;
  size_t __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("fromaddress", 0);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":166
 *     ) -> 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(1, 166, __pyx_L1_error)
  __pyx_v_addr = __pyx_t_1;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":167
 *         """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":168
 *         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":169
 *         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_4 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_expecting_non_negative_buffer_le};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 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(1, 169, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/asbuffer.pxi":168
 *         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":170
 *         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_6 = (__pyx_v_size > 0);
  if (__pyx_t_6) {
  } else {
    __pyx_t_2 = __pyx_t_6;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_6 = (__pyx_v_addr == NULL);
  __pyx_t_2 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (unlikely(__pyx_t_2)) {

    /* "src/mpi4py/MPI.src/asbuffer.pxi":171
 *             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_4 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_expecting_non_NULL_address};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 171, __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(1, 171, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/asbuffer.pxi":170
 *         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":172
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_buffer); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 172, __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_buf = ((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":173
 *             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_7 = PyBuffer_FillInfo((&__pyx_v_buf->view), ((PyObject *)NULL), __pyx_v_addr, __pyx_v_size, __pyx_v_readonly, PyBUF_SIMPLE); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(1, 173, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asbuffer.pxi":175
 *         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":159
 *         return buf
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def fromaddress(
 *         address: int,
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __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":181
 *     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__", 0);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":182
 *         """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(1, 182, __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":181
 *     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":188
 *     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__", 0);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":189
 *         """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":190
 *         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":188
 *     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":194
 *     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__", 0);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":195
 *         """Buffer size (in bytes)."""
 *         def __get__(self) -> int:
 *             return self.view.len             # <<<<<<<<<<<<<<
 * 
 *     property readonly:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyLong_FromSsize_t(__pyx_v_self->view.len); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 195, __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":194
 *     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":199
 *     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__", 0);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":200
 *         """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(1, 200, __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":199
 *     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":204
 *     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__", 0);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":205
 *         """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":206
 *         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(1, 206, __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":205
 *         """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":207
 *             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(1, 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/asbuffer.pxi":204
 *     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":211
 *     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__", 0);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":212
 *         """Size (in bytes) of each element."""
 *         def __get__(self) -> int:
 *             return self.view.itemsize             # <<<<<<<<<<<<<<
 * 
 *     # memoryview methods
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyLong_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 212, __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":211
 *     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":216
 *     # 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\nCast to a `memoryview` with new format or shape.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6buffer_11cast = {"cast", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_format,&__pyx_mstate_global->__pyx_n_u_shape,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 216, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 216, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 216, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "cast", 0) < (0)) __PYX_ERR(1, 216, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/asbuffer.pxi":219
 *         self,
 *         format: str,
 *         shape: list[int] | tuple[int, ...] = ...,             # <<<<<<<<<<<<<<
 *     ) -> memoryview:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_Ellipsis));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("cast", 0, 1, 2, i); __PYX_ERR(1, 216, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 216, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 216, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_Ellipsis));
    }
    __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(1, 216, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":216
 *     # memoryview methods
 * 
 *     def cast(             # <<<<<<<<<<<<<<
 *         self,
 *         format: str,
*/

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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;
  size_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cast", 0);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":224
 *         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(1, 224, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asbuffer.pxi":225
 *         """
 *         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":226
 *         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_5 = PyMemoryView_FromObject(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 226, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __pyx_t_5;
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_format};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_cast, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 226, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/asbuffer.pxi":225
 *         """
 *         check_cpu_accessible(self.kind)
 *         if shape is Ellipsis:             # <<<<<<<<<<<<<<
 *             return PyMemoryView_FromObject(self).cast(format)
 *         else:
*/
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":228
 *             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_4 = PyMemoryView_FromObject(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 228, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __pyx_t_4;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_format, __pyx_v_shape};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_cast, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 228, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":216
 *     # 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":230
 *             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\n\nReturn the data in the buffer as a byte string.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6buffer_13tobytes = {"tobytes", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_order,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 230, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 230, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "tobytes", 0) < (0)) __PYX_ERR(1, 230, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 230, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __pyx_v_order = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("tobytes", 0, 0, 1, __pyx_nargs); __PYX_ERR(1, 230, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":232
 *     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":233
 *         """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(1, 233, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asbuffer.pxi":234
 *         <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(1, 234, __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":230
 *             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":236
 *         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\n\nReturn a readonly version of the buffer object.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6buffer_15toreadonly = {"toreadonly", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("toreadonly", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":238
 *     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":239
 *         """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":240
 *         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":239
 *         """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":241
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_buffer); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 241, __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":242
 *             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(1, 242, __pyx_L1_error)
  __pyx_v_buf->kind = __pyx_t_4;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":243
 *         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":244
 *         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":236
 *         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":246
 *         return buf
 * 
 *     def release(self) -> None:             # <<<<<<<<<<<<<<
 *         """Release the underlying buffer exposed by the buffer object."""
 *         PyMPI_ReleaseBuffer(self.kind, &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\n\nRelease the underlying buffer exposed by the buffer object.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6buffer_17release = {"release", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("release", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":248
 *     def release(self) -> None:
 *         """Release the underlying buffer exposed by the buffer object."""
 *         PyMPI_ReleaseBuffer(self.kind, &self.view)             # <<<<<<<<<<<<<<
 *         PyBuffer_FillInfo(&self.view, <object>NULL,
 *                           NULL, 0, 0, PyBUF_SIMPLE)
*/
  __pyx_f_6mpi4py_3MPI_PyMPI_ReleaseBuffer(__pyx_v_self->kind, (&__pyx_v_self->view));

  /* "src/mpi4py/MPI.src/asbuffer.pxi":249
 *         """Release the underlying buffer exposed by the buffer object."""
 *         PyMPI_ReleaseBuffer(self.kind, &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(1, 249, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asbuffer.pxi":251
 *         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":246
 *         return buf
 * 
 *     def release(self) -> None:             # <<<<<<<<<<<<<<
 *         """Release the underlying buffer exposed by the buffer object."""
 *         PyMPI_ReleaseBuffer(self.kind, &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":255
 *     # 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":256
 * 
 *     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(1, 256, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asbuffer.pxi":255
 *     # 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":262
 *     # 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":263
 * 
 *     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":262
 *     # sequence interface (basic)
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self.view.len
 * 
*/

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

/* "src/mpi4py/MPI.src/asbuffer.pxi":265
 *         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;
  PyObject *__pyx_t_6 = NULL;
  size_t __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getitem__", 0);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":266
 * 
 *     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(1, 266, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asbuffer.pxi":267
 *     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":268
 *         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":269
 *         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":270
 *         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":271
 *         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, ((PyObject *)(((PyTypeObject*)PyExc_IndexError)))); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1L) && PyErr_Occurred())) __PYX_ERR(1, 271, __pyx_L1_error)
    __pyx_v_start = __pyx_t_2;

    /* "src/mpi4py/MPI.src/asbuffer.pxi":272
 *         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":273
 *             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":274
 *             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_6 = NULL;
      __pyx_t_7 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_index_out_of_range};
        __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_IndexError)), __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 274, __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(1, 274, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/asbuffer.pxi":273
 *             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":275
 *             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_PyLong_From_long(((long)(__pyx_v_buf[__pyx_v_start]))); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 275, __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":270
 *         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":276
 *                 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
 *             return <long>buf[start]
 *         elif PySlice_Check(item):
 *             PySlice_Unpack(item, &start, &stop, &step)             # <<<<<<<<<<<<<<
 *             slen = PySlice_AdjustIndices(blen, &start, &stop, step)
 *             if step != 1: raise IndexError("slice with step not supported")
*/
    __pyx_t_1 = PySlice_Unpack(__pyx_v_item, (&__pyx_v_start), (&__pyx_v_stop), (&__pyx_v_step)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(1, 277, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/asbuffer.pxi":278
 *         elif PySlice_Check(item):
 *             PySlice_Unpack(item, &start, &stop, &step)
 *             slen = PySlice_AdjustIndices(blen, &start, &stop, step)             # <<<<<<<<<<<<<<
 *             if step != 1: raise IndexError("slice with step not supported")
 *             return tobuffer(self, buf+start, slen, self.view.readonly)
*/
    __pyx_v_slen = PySlice_AdjustIndices(__pyx_v_blen, (&__pyx_v_start), (&__pyx_v_stop), __pyx_v_step);

    /* "src/mpi4py/MPI.src/asbuffer.pxi":279
 *             PySlice_Unpack(item, &start, &stop, &step)
 *             slen = PySlice_AdjustIndices(blen, &start, &stop, step)
 *             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_6 = NULL;
      __pyx_t_7 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_slice_with_step_not_supported};
        __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_IndexError)), __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 279, __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(1, 279, __pyx_L1_error)
    }

    /* "src/mpi4py/MPI.src/asbuffer.pxi":280
 *             slen = PySlice_AdjustIndices(blen, &start, &stop, step)
 *             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(1, 280, __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":276
 *                 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":282
 *             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_6 = NULL;
    __pyx_t_7 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_index_must_be_integer_or_slice};
      __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 282, __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(1, 282, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":265
 *         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_XDECREF(__pyx_t_6);
  __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":284
 *             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;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  unsigned char __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setitem__", 0);

  /* "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")
*/
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_check_cpu_accessible(__pyx_v_self->kind); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(1, 285, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asbuffer.pxi":286
 *     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":287
 *         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_3 = NULL;
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_buffer_is_read_only};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 287, __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, 287, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/asbuffer.pxi":286
 *     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":288
 *         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":289
 *             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":290
 *         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_5 = __pyx_v_self->view.len;
  __pyx_v_blen = __pyx_t_5;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":292
 *         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_6 = (PyIndex_Check(__pyx_v_item) != 0);
  if (__pyx_t_6) {

    /* "src/mpi4py/MPI.src/asbuffer.pxi":293
 *         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_5 = PyNumber_AsSsize_t(__pyx_v_item, ((PyObject *)(((PyTypeObject*)PyExc_IndexError)))); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1L) && PyErr_Occurred())) __PYX_ERR(1, 293, __pyx_L1_error)
    __pyx_v_start = __pyx_t_5;

    /* "src/mpi4py/MPI.src/asbuffer.pxi":294
 *         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_6 = (__pyx_v_start < 0);
    if (__pyx_t_6) {
      __pyx_v_start = (__pyx_v_start + __pyx_v_blen);
    }

    /* "src/mpi4py/MPI.src/asbuffer.pxi":295
 *             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_7 = (__pyx_v_start < 0);
    if (!__pyx_t_7) {
    } else {
      __pyx_t_6 = __pyx_t_7;
      goto __pyx_L7_bool_binop_done;
    }
    __pyx_t_7 = (__pyx_v_start >= __pyx_v_blen);
    __pyx_t_6 = __pyx_t_7;
    __pyx_L7_bool_binop_done:;
    if (unlikely(__pyx_t_6)) {

      /* "src/mpi4py/MPI.src/asbuffer.pxi":296
 *             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_3 = NULL;
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_index_out_of_range};
        __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_IndexError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 296, __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, 296, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/asbuffer.pxi":295
 *             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":297
 *             if start < 0 or start >= blen:
 *                 raise IndexError("index out of range")
 *             buf[start] = <unsigned char>value             # <<<<<<<<<<<<<<
 *         elif PySlice_Check(item):
 *             PySlice_Unpack(item, &start, &stop, &step)
*/
    __pyx_t_8 = __Pyx_PyLong_As_unsigned_char(__pyx_v_value); if (unlikely((__pyx_t_8 == (unsigned char)-1) && PyErr_Occurred())) __PYX_ERR(1, 297, __pyx_L1_error)
    (__pyx_v_buf[__pyx_v_start]) = ((unsigned char)__pyx_t_8);

    /* "src/mpi4py/MPI.src/asbuffer.pxi":292
 *         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":298
 *                 raise IndexError("index out of range")
 *             buf[start] = <unsigned char>value
 *         elif PySlice_Check(item):             # <<<<<<<<<<<<<<
 *             PySlice_Unpack(item, &start, &stop, &step)
 *             slen = PySlice_AdjustIndices(blen, &start, &stop, step)
*/
  __pyx_t_6 = (PySlice_Check(__pyx_v_item) != 0);
  if (likely(__pyx_t_6)) {

    /* "src/mpi4py/MPI.src/asbuffer.pxi":299
 *             buf[start] = <unsigned char>value
 *         elif PySlice_Check(item):
 *             PySlice_Unpack(item, &start, &stop, &step)             # <<<<<<<<<<<<<<
 *             slen = PySlice_AdjustIndices(blen, &start, &stop, step)
 *             if step != 1: raise IndexError("slice with step not supported")
*/
    __pyx_t_1 = PySlice_Unpack(__pyx_v_item, (&__pyx_v_start), (&__pyx_v_stop), (&__pyx_v_step)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(1, 299, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/asbuffer.pxi":300
 *         elif PySlice_Check(item):
 *             PySlice_Unpack(item, &start, &stop, &step)
 *             slen = PySlice_AdjustIndices(blen, &start, &stop, step)             # <<<<<<<<<<<<<<
 *             if step != 1: raise IndexError("slice with step not supported")
 *             if PyIndex_Check(value):
*/
    __pyx_v_slen = PySlice_AdjustIndices(__pyx_v_blen, (&__pyx_v_start), (&__pyx_v_stop), __pyx_v_step);

    /* "src/mpi4py/MPI.src/asbuffer.pxi":301
 *             PySlice_Unpack(item, &start, &stop, &step)
 *             slen = PySlice_AdjustIndices(blen, &start, &stop, step)
 *             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_6 = (__pyx_v_step != 1);
    if (unlikely(__pyx_t_6)) {
      __pyx_t_3 = NULL;
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_slice_with_step_not_supported};
        __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_IndexError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 301, __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, 301, __pyx_L1_error)
    }

    /* "src/mpi4py/MPI.src/asbuffer.pxi":302
 *             slen = PySlice_AdjustIndices(blen, &start, &stop, step)
 *             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_6 = (PyIndex_Check(__pyx_v_value) != 0);
    if (__pyx_t_6) {

      /* "src/mpi4py/MPI.src/asbuffer.pxi":303
 *             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_8 = __Pyx_PyLong_As_unsigned_char(__pyx_v_value); if (unlikely((__pyx_t_8 == (unsigned char)-1) && PyErr_Occurred())) __PYX_ERR(1, 303, __pyx_L1_error)
      ((void)memset((__pyx_v_buf + __pyx_v_start), ((unsigned char)__pyx_t_8), ((size_t)__pyx_v_slen)));

      /* "src/mpi4py/MPI.src/asbuffer.pxi":302
 *             slen = PySlice_AdjustIndices(blen, &start, &stop, step)
 *             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":305
 *                 <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(1, 305, __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":306
 *             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_6 = (__pyx_v_inbuf->view.len != __pyx_v_slen);
      if (unlikely(__pyx_t_6)) {

        /* "src/mpi4py/MPI.src/asbuffer.pxi":307
 *                 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_3 = NULL;
        __pyx_t_4 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_slice_length_does_not_match_buff};
          __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 307, __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, 307, __pyx_L1_error)

        /* "src/mpi4py/MPI.src/asbuffer.pxi":306
 *             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":308
 *                 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":298
 *                 raise IndexError("index out of range")
 *             buf[start] = <unsigned char>value
 *         elif PySlice_Check(item):             # <<<<<<<<<<<<<<
 *             PySlice_Unpack(item, &start, &stop, &step)
 *             slen = PySlice_AdjustIndices(blen, &start, &stop, step)
*/
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":310
 *                 <void>memmove(buf+start, inbuf.view.buf, <size_t>slen)
 *         else:
 *             raise TypeError("index must be integer or slice")             # <<<<<<<<<<<<<<
 * 
 * 
*/
  /*else*/ {
    __pyx_t_3 = NULL;
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_index_must_be_integer_or_slice};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 310, __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, 310, __pyx_L1_error)
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":284
 *             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_XDECREF(__pyx_t_3);
  __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":317
 * # -----------------------------------------------------------------------------
 * 
 * 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", 0);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":318
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_buffer); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 318, __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":317
 * # -----------------------------------------------------------------------------
 * 
 * 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":320
 *     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", 0);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":321
 * 
 * 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(1, 321, __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":322
 * 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":323
 *     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":324
 *     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":323
 *     cdef buffer buf = newbuffer()
 *     cdef int flags = PyBUF_ANY_CONTIGUOUS
 *     if not readonly:             # <<<<<<<<<<<<<<
 *         flags |= PyBUF_WRITABLE
 *     if format:
*/
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":325
 *     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":326
 *         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":325
 *     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":327
 *     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(1, 327, __pyx_L1_error)
  __pyx_v_buf->kind = __pyx_t_3;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":328
 *         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":320
 *     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":330
 *     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;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  void *__pyx_t_6;
  Py_ssize_t __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("asbuffer", 0);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":332
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_buffer));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/asbuffer.pxi":333
 *     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":334
 *     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":335
 *         buf = <buffer> ob
 *         if buf.view.readonly and not ro:
 *             raise BufferError("Object is not writable")             # <<<<<<<<<<<<<<
 *     else:
 *         buf = getbuffer(ob, ro, 0)
*/
      __pyx_t_4 = NULL;
      __pyx_t_5 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Object_is_not_writable};
        __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_BufferError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 335, __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, 335, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/asbuffer.pxi":334
 *     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":332
 * 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":337
 *             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(1, 337, __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":338
 *     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_6 = __pyx_v_buf->view.buf;
    (__pyx_v_base[0]) = __pyx_t_6;
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":339
 *         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_7 = __pyx_v_buf->view.len;
    (__pyx_v_size[0]) = __pyx_t_7;
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":340
 *     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":330
 *     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_XDECREF(__pyx_t_4);
  __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":342
 *     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", 0);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":343
 * 
 * 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(1, 343, __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":342
 *     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":345
 *     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", 0);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":346
 * 
 * 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(1, 346, __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":345
 *     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":348
 *     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;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("tobuffer", 0);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":349
 * 
 * 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_3 = NULL;
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_expecting_non_negative_buffer_le};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 349, __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, 349, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":350
 * 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(1, 350, __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":351
 *     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_5 = PyBuffer_FillInfo((&__pyx_v_buf->view), __pyx_v_ob, __pyx_v_base, __pyx_v_size, __pyx_v_ro, PyBUF_SIMPLE); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 351, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asbuffer.pxi":352
 *     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":348
 *     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_XDECREF(__pyx_t_3);
  __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":354
 *     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;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mpibuf", 0);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":355
 * 
 * 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":356
 * 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":357
 *     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_3 = NULL;
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_length_count_does_not_fit_in_MPI};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_OverflowError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 357, __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, 357, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":358
 *     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(1, 358, __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":354
 *     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_XDECREF(__pyx_t_3);
  __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":360
 *     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;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10[4];
  size_t __pyx_t_11;
  void *__pyx_t_12;
  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":367
 *     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":368
 * ):
 *     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(1, 368, __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":370
 *     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":371
 *     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":372
 *     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":371
 *     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":373
 *     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":374
 *         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":373
 *     if not readonly:
 *         flags |= PyBUF_WRITABLE
 *     if format != NULL:             # <<<<<<<<<<<<<<
 *         flags |= PyBUF_FORMAT
 *     PyObject_GetBuffer(obj, &view, flags)
*/
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":375
 *     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(1, 375, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asbuffer.pxi":376
 *         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":377
 *     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":378
 *     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":379
 *         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_6 = NULL;

      /* "src/mpi4py/MPI.src/asbuffer.pxi":380
 *             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_7 = __pyx_f_6mpi4py_3MPI_pystr(__pyx_v_format); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 380, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_7), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 380, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "src/mpi4py/MPI.src/asbuffer.pxi":381
 *             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_7 = __pyx_f_6mpi4py_3MPI_pystr(__pyx_v_view.format); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 381, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_9 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_7), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 381, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_10[0] = __pyx_mstate_global->__pyx_kp_u_expecting_buffer_with_format;
      __pyx_t_10[1] = __pyx_t_8;
      __pyx_t_10[2] = __pyx_mstate_global->__pyx_kp_u_got;
      __pyx_t_10[3] = __pyx_t_9;

      /* "src/mpi4py/MPI.src/asbuffer.pxi":380
 *             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_7 = __Pyx_PyUnicode_Join(__pyx_t_10, 4, 29 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8) + 6 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9));
      if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 380, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_11 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_7};
        __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 379, __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, 379, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/asbuffer.pxi":377
 *     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":376
 *         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":382
 *                 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_12 = __pyx_v_view.buf;
    (__pyx_v_base[0]) = __pyx_t_12;
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":383
 *                 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":384
 *     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":385
 *     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":360
 *     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_6);
  __Pyx_XDECREF(__pyx_t_7);
  __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;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("is_integral", 0);

  /* "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_L13_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_L16_except_return;
    }
    __pyx_L13_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_ErrRestore(0,0,0);
      __pyx_r = 0;
      goto __pyx_L16_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_L16_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_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;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("chklength", 0);

  /* "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_3 = NULL;
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_length_size_larger_than_INT_MAX};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_OverflowError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      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_XDECREF(__pyx_t_3);
  __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", 0);

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

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

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

  /* "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, PyLong_FromSsize_t, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); 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_PyLong_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", 0);

  /* "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, PyLong_FromSsize_t, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); 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_PyLong_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", 0);

  /* "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, PyLong_FromSsize_t, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); 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_PyLong_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", 0);

  /* "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, PyLong_FromSsize_t, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); 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_PyLong_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", 0);

  /* "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, PyLong_FromSsize_t, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); 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_PyLong_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", 0);

  /* "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, PyLong_FromSsize_t, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); 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_PyLong_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;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6[4];
  PyObject *__pyx_t_7 = NULL;
  size_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_0_0chkarray", 0);

  /* "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_3 = NULL;
    __pyx_t_4 = __Pyx_PyUnicode_From_int(__pyx_v_n, 0, ' ', 'd'); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __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_6[0] = __pyx_mstate_global->__pyx_kp_u_expecting;
    __pyx_t_6[1] = __pyx_t_4;
    __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u_items_got;
    __pyx_t_6[3] = __pyx_t_5;
    __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_6, 4, 10 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 12 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5), 127);
    if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_8 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_7};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 56, __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(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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __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;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6[4];
  PyObject *__pyx_t_7 = NULL;
  size_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_0_1chkarray", 0);

  /* "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_3 = NULL;
    __pyx_t_4 = __Pyx_PyUnicode_From_int(__pyx_v_n, 0, ' ', 'd'); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __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_6[0] = __pyx_mstate_global->__pyx_kp_u_expecting;
    __pyx_t_6[1] = __pyx_t_4;
    __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u_items_got;
    __pyx_t_6[3] = __pyx_t_5;
    __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_6, 4, 10 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 12 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5), 127);
    if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_8 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_7};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 56, __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(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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __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;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6[4];
  PyObject *__pyx_t_7 = NULL;
  size_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_0_2chkarray", 0);

  /* "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_3 = NULL;
    __pyx_t_4 = __Pyx_PyUnicode_From_int(__pyx_v_n, 0, ' ', 'd'); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __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_6[0] = __pyx_mstate_global->__pyx_kp_u_expecting;
    __pyx_t_6[1] = __pyx_t_4;
    __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u_items_got;
    __pyx_t_6[3] = __pyx_t_5;
    __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_6, 4, 10 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 12 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5), 127);
    if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_8 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_7};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 56, __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(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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __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;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6[4];
  PyObject *__pyx_t_7 = NULL;
  size_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_1_2chkarray", 0);

  /* "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_3 = NULL;
    __pyx_t_4 = __Pyx_PyUnicode_From_MPI_Count(__pyx_v_n, 0, ' ', 'd'); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyUnicode_From_MPI_Count(__pyx_v_size, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u_expecting;
    __pyx_t_6[1] = __pyx_t_4;
    __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u_items_got;
    __pyx_t_6[3] = __pyx_t_5;
    __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_6, 4, 10 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 12 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5), 127);
    if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_8 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_7};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 56, __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(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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __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;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7[4];
  PyObject *__pyx_t_8 = NULL;
  size_t __pyx_t_9;
  MPI_Count __pyx_t_10;
  MPI_Count __pyx_t_11;
  MPI_Count __pyx_t_12;
  MPI_Datatype __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("asarray_Datatype", 0);

  /* "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_4 = NULL;
    __pyx_t_5 = __Pyx_PyUnicode_From_MPI_Count(__pyx_v_size, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = PyObject_Length(__pyx_v_sequence); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(10, 66, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_1, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7[0] = __pyx_mstate_global->__pyx_kp_u_expecting;
    __pyx_t_7[1] = __pyx_t_5;
    __pyx_t_7[2] = __pyx_mstate_global->__pyx_kp_u_items_got;
    __pyx_t_7[3] = __pyx_t_6;
    __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_7, 4, 10 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 12 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6), 127);
    if (unlikely(!__pyx_t_8)) __PYX_ERR(10, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_9 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_8};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 66, __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, 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_10 = __pyx_v_size;
  __pyx_t_11 = __pyx_t_10;
  for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) {
    __pyx_v_i = __pyx_t_12;

    /* "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_PyLong_From_MPI_Count, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype)))) __PYX_ERR(10, 69, __pyx_L1_error)
    __pyx_t_13 = ((struct PyMPIDatatypeObject *)__pyx_t_3)->ob_mpi;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    (__pyx_v_array[__pyx_v_i]) = __pyx_t_13;
  }

  /* "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_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __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;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12[4];
  PyObject *__pyx_t_13 = NULL;
  size_t __pyx_t_14;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("asarray_Info", 0);

  /* "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_mstate_global->__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_mstate_global->__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_9 = NULL;
      __pyx_t_10 = __Pyx_PyUnicode_From_MPI_Count(__pyx_v_size, 0, ' ', 'd'); if (unlikely(!__pyx_t_10)) __PYX_ERR(10, 87, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_8 = PyObject_Length(__pyx_v_sequence); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(10, 87, __pyx_L1_error)
      __pyx_t_11 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_8, 0, ' ', 'd'); if (unlikely(!__pyx_t_11)) __PYX_ERR(10, 87, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __pyx_t_12[0] = __pyx_mstate_global->__pyx_kp_u_expecting;
      __pyx_t_12[1] = __pyx_t_10;
      __pyx_t_12[2] = __pyx_mstate_global->__pyx_kp_u_items_got;
      __pyx_t_12[3] = __pyx_t_11;
      __pyx_t_13 = __Pyx_PyUnicode_Join(__pyx_t_12, 4, 10 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_10) + 12 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11), 127);
      if (unlikely(!__pyx_t_13)) __PYX_ERR(10, 87, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __pyx_t_14 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_13};
        __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_14, (2-__pyx_t_14) | (__pyx_t_14*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 87, __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(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_PyLong_From_MPI_Count, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); 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_mstate_global->__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_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_13);
  __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 int is_fspath(object obj):
*/
  __pyx_t_2 = PyUnicode_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 int is_fspath(object obj):             # <<<<<<<<<<<<<<
 *     return hasattr(obj, "__fspath__")
 * 
*/

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_is_fspath(PyObject *__pyx_v_obj) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/asarray.pxi":100
 * 
 * cdef inline int is_fspath(object obj):
 *     return hasattr(obj, "__fspath__")             # <<<<<<<<<<<<<<
 * 
 * cdef inline object asstring(object ob, char *s[]):
*/
  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_fspath); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(10, 100, __pyx_L1_error)
  __pyx_r = __pyx_t_1;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asarray.pxi":99
 *     return isinstance(obj, str) or isinstance(obj, bytes)
 * 
 * cdef inline int is_fspath(object obj):             # <<<<<<<<<<<<<<
 *     return hasattr(obj, "__fspath__")
 * 
*/

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

/* "src/mpi4py/MPI.src/asarray.pxi":102
 *     return hasattr(obj, "__fspath__")
 * 
 * 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":103
 * 
 * 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":104
 * 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":105
 *     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, 105, __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":106
 *     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, 106, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asarray.pxi":107
 *     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, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_mem = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/asarray.pxi":108
 *     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":109
 *     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":110
 *     <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":111
 *     q[n] = 0
 *     s[0] = q
 *     return mem             # <<<<<<<<<<<<<<
 * 
 * cdef inline object asfspath(object ob, char *s[]):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_mem);
  __pyx_r = __pyx_v_mem;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asarray.pxi":102
 *     return hasattr(obj, "__fspath__")
 * 
 * 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":113
 *     return mem
 * 
 * cdef inline object asfspath(object ob, char *s[]):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t n = 0
 *     cdef char *p = NULL, *q = NULL
*/

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asfspath(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("asfspath", 0);
  __Pyx_INCREF(__pyx_v_ob);

  /* "src/mpi4py/MPI.src/asarray.pxi":114
 * 
 * cdef inline object asfspath(object ob, char *s[]):
 *     cdef Py_ssize_t n = 0             # <<<<<<<<<<<<<<
 *     cdef char *p = NULL, *q = NULL
 *     ob = asmpifspath(ob, &p)
*/
  __pyx_v_n = 0;

  /* "src/mpi4py/MPI.src/asarray.pxi":115
 * cdef inline object asfspath(object ob, char *s[]):
 *     cdef Py_ssize_t n = 0
 *     cdef char *p = NULL, *q = NULL             # <<<<<<<<<<<<<<
 *     ob = asmpifspath(ob, &p)
 *     PyBytes_AsStringAndSize(ob, &p, &n)
*/
  __pyx_v_p = NULL;
  __pyx_v_q = NULL;

  /* "src/mpi4py/MPI.src/asarray.pxi":116
 *     cdef Py_ssize_t n = 0
 *     cdef char *p = NULL, *q = NULL
 *     ob = asmpifspath(ob, &p)             # <<<<<<<<<<<<<<
 *     PyBytes_AsStringAndSize(ob, &p, &n)
 *     cdef object mem = allocate(n+1, sizeof(char), &q)
*/
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpifspath(__pyx_v_ob, (&__pyx_v_p)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 116, __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":117
 *     cdef char *p = NULL, *q = NULL
 *     ob = asmpifspath(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, 117, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asarray.pxi":118
 *     ob = asmpifspath(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, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_mem = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/asarray.pxi":119
 *     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":120
 *     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":121
 *     <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":122
 *     q[n] = 0
 *     s[0] = q
 *     return mem             # <<<<<<<<<<<<<<
 * 
 * cdef inline object asarray_string(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":113
 *     return mem
 * 
 * cdef inline object asfspath(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.asfspath", __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":124
 *     return mem
 * 
 * cdef inline object asarray_string(object sequence, char ***p):             # <<<<<<<<<<<<<<
 *     cdef char** array = NULL
 *     cdef Py_ssize_t size = len(sequence)
*/

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_string(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_string", 0);

  /* "src/mpi4py/MPI.src/asarray.pxi":125
 * 
 * cdef inline object asarray_string(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":126
 * cdef inline object asarray_string(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, 126, __pyx_L1_error)
  __pyx_v_size = __pyx_t_1;

  /* "src/mpi4py/MPI.src/asarray.pxi":127
 *     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, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_ob = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/asarray.pxi":128
 *     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":129
 *     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, PyLong_FromSsize_t, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 129, __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, 129, __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, PyLong_FromSsize_t, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument) < 0))) __PYX_ERR(10, 129, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }

  /* "src/mpi4py/MPI.src/asarray.pxi":130
 *     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":131
 *         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":132
 *     array[size] = NULL
 *     p[0] = array
 *     return (sequence, ob)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object asarray_fspath(object sequence, char ***p):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 132, __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) != (0)) __PYX_ERR(10, 132, __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) != (0)) __PYX_ERR(10, 132, __pyx_L1_error);
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asarray.pxi":124
 *     return mem
 * 
 * cdef inline object asarray_string(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_string", __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":134
 *     return (sequence, ob)
 * 
 * cdef inline object asarray_fspath(object sequence, char ***p):             # <<<<<<<<<<<<<<
 *     cdef char** array = NULL
 *     cdef Py_ssize_t size = len(sequence)
*/

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_fspath(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_fspath", 0);

  /* "src/mpi4py/MPI.src/asarray.pxi":135
 * 
 * cdef inline object asarray_fspath(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":136
 * cdef inline object asarray_fspath(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, 136, __pyx_L1_error)
  __pyx_v_size = __pyx_t_1;

  /* "src/mpi4py/MPI.src/asarray.pxi":137
 *     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] = asfspath(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, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_ob = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/asarray.pxi":138
 *     cdef Py_ssize_t size = len(sequence)
 *     cdef object ob = allocate(size+1, sizeof(char*), &array)
 *     for i in range(size):             # <<<<<<<<<<<<<<
 *         sequence[i] = asfspath(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":139
 *     cdef object ob = allocate(size+1, sizeof(char*), &array)
 *     for i in range(size):
 *         sequence[i] = asfspath(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, PyLong_FromSsize_t, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 139, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __pyx_f_6mpi4py_3MPI_asfspath(__pyx_t_2, (&(__pyx_v_array[__pyx_v_i]))); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 139, __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, PyLong_FromSsize_t, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument) < 0))) __PYX_ERR(10, 139, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }

  /* "src/mpi4py/MPI.src/asarray.pxi":140
 *     for i in range(size):
 *         sequence[i] = asfspath(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":141
 *         sequence[i] = asfspath(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":142
 *     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, 142, __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) != (0)) __PYX_ERR(10, 142, __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) != (0)) __PYX_ERR(10, 142, __pyx_L1_error);
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asarray.pxi":134
 *     return (sequence, ob)
 * 
 * cdef inline object asarray_fspath(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_fspath", __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":144
 *     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":145
 * 
 * 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":146
 * 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":147
 *     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":145
 * 
 * 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":148
 *         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, 148, __pyx_L1_error)
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/asarray.pxi":149
 *         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, 149, __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) != (0)) __PYX_ERR(10, 149, __pyx_L1_error);
    __Pyx_DECREF_SET(__pyx_v_sequence, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/asarray.pxi":148
 *         p[0] = MPI_ARGV_NULL
 *         return None
 *     if is_string(sequence):             # <<<<<<<<<<<<<<
 *         sequence = [sequence]
 *     else:
*/
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/asarray.pxi":151
 *         sequence = [sequence]
 *     else:
 *         sequence = list(sequence)             # <<<<<<<<<<<<<<
 *     return asarray_string(sequence, p)
 * 
*/
  /*else*/ {
    __pyx_t_3 = PySequence_List(__pyx_v_sequence); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 151, __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":152
 *     else:
 *         sequence = list(sequence)
 *     return asarray_string(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_string(__pyx_v_sequence, __pyx_v_p); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 152, __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":144
 *     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":154
 *     return asarray_string(sequence, p)
 * 
 * cdef inline object asarray_cmds(object sequence, int *count, char ***p):             # <<<<<<<<<<<<<<
 *     if is_string(sequence) or is_fspath(sequence):
 *         raise ValueError("expecting a sequence of path-like")
*/

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;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  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":155
 * 
 * cdef inline object asarray_cmds(object sequence, int *count, char ***p):
 *     if is_string(sequence) or is_fspath(sequence):             # <<<<<<<<<<<<<<
 *         raise ValueError("expecting a sequence of path-like")
 *     sequence = list(sequence)
*/
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_is_string(__pyx_v_sequence); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(10, 155, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_is_fspath(__pyx_v_sequence); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(10, 155, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_2 != 0);
  __pyx_t_1 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (unlikely(__pyx_t_1)) {

    /* "src/mpi4py/MPI.src/asarray.pxi":156
 * cdef inline object asarray_cmds(object sequence, int *count, char ***p):
 *     if is_string(sequence) or is_fspath(sequence):
 *         raise ValueError("expecting a sequence of path-like")             # <<<<<<<<<<<<<<
 *     sequence = list(sequence)
 *     count[0] = <int>len(sequence)
*/
    __pyx_t_5 = NULL;
    __pyx_t_6 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_expecting_a_sequence_of_path_lik};
      __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 156, __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(10, 156, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/asarray.pxi":155
 * 
 * cdef inline object asarray_cmds(object sequence, int *count, char ***p):
 *     if is_string(sequence) or is_fspath(sequence):             # <<<<<<<<<<<<<<
 *         raise ValueError("expecting a sequence of path-like")
 *     sequence = list(sequence)
*/
  }

  /* "src/mpi4py/MPI.src/asarray.pxi":157
 *     if is_string(sequence) or is_fspath(sequence):
 *         raise ValueError("expecting a sequence of path-like")
 *     sequence = list(sequence)             # <<<<<<<<<<<<<<
 *     count[0] = <int>len(sequence)
 *     return asarray_fspath(sequence, p)
*/
  __pyx_t_4 = PySequence_List(__pyx_v_sequence); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF_SET(__pyx_v_sequence, __pyx_t_4);
  __pyx_t_4 = 0;

  /* "src/mpi4py/MPI.src/asarray.pxi":158
 *         raise ValueError("expecting a sequence of path-like")
 *     sequence = list(sequence)
 *     count[0] = <int>len(sequence)             # <<<<<<<<<<<<<<
 *     return asarray_fspath(sequence, p)
 * 
*/
  __pyx_t_7 = PyObject_Length(__pyx_v_sequence); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(10, 158, __pyx_L1_error)
  (__pyx_v_count[0]) = ((int)__pyx_t_7);

  /* "src/mpi4py/MPI.src/asarray.pxi":159
 *     sequence = list(sequence)
 *     count[0] = <int>len(sequence)
 *     return asarray_fspath(sequence, p)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object asarray_argvs(object sequence, int size, char ****p):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_asarray_fspath(__pyx_v_sequence, __pyx_v_p); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asarray.pxi":154
 *     return asarray_string(sequence, p)
 * 
 * cdef inline object asarray_cmds(object sequence, int *count, char ***p):             # <<<<<<<<<<<<<<
 *     if is_string(sequence) or is_fspath(sequence):
 *         raise ValueError("expecting a sequence of path-like")
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __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":161
 *     return asarray_fspath(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;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8[4];
  PyObject *__pyx_t_9 = NULL;
  size_t __pyx_t_10;
  int __pyx_t_11;
  int __pyx_t_12;
  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":162
 * 
 * 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":163
 * 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":164
 *     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":162
 * 
 * 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":165
 *         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, 165, __pyx_L1_error)
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/asarray.pxi":166
 *         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, 166, __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) != (0)) __PYX_ERR(10, 166, __pyx_L1_error);
      }
    }
    __Pyx_DECREF_SET(__pyx_v_sequence, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/asarray.pxi":165
 *         p[0] = MPI_ARGVS_NULL
 *         return None
 *     if is_string(sequence):             # <<<<<<<<<<<<<<
 *         sequence = [sequence] * size
 *     else:
*/
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/asarray.pxi":168
 *         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, 168, __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":169
 *     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, 169, __pyx_L1_error)
    __pyx_t_1 = (__pyx_v_size != __pyx_t_4);
    if (unlikely(__pyx_t_1)) {

      /* "src/mpi4py/MPI.src/asarray.pxi":170
 *         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_5 = NULL;
      __pyx_t_6 = __Pyx_PyUnicode_From_int(__pyx_v_size, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 170, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_4 = PyObject_Length(__pyx_v_sequence); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(10, 170, __pyx_L1_error)
      __pyx_t_7 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_4, 0, ' ', 'd'); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 170, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8[0] = __pyx_mstate_global->__pyx_kp_u_expecting;
      __pyx_t_8[1] = __pyx_t_6;
      __pyx_t_8[2] = __pyx_mstate_global->__pyx_kp_u_items_got;
      __pyx_t_8[3] = __pyx_t_7;
      __pyx_t_9 = __Pyx_PyUnicode_Join(__pyx_t_8, 4, 10 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6) + 12 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7), 127);
      if (unlikely(!__pyx_t_9)) __PYX_ERR(10, 170, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_10 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_9};
        __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 170, __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, 170, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/asarray.pxi":169
 *     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":171
 *         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":172
 *             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, 172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_ob = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/asarray.pxi":174
 *     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_11 = __pyx_t_2;
  for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) {
    __pyx_v_i = __pyx_t_12;

    /* "src/mpi4py/MPI.src/asarray.pxi":175
 *     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_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 175, __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":176
 *     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, 176, __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":177
 *         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, 177, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely((__Pyx_SetItemInt(__pyx_v_sequence, __pyx_v_i, __pyx_t_3, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument) < 0))) __PYX_ERR(10, 177, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }

  /* "src/mpi4py/MPI.src/asarray.pxi":178
 *         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":179
 *         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":180
 *     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, 180, __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) != (0)) __PYX_ERR(10, 180, __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) != (0)) __PYX_ERR(10, 180, __pyx_L1_error);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asarray.pxi":161
 *     return asarray_fspath(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_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __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":182
 *     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", 0);

  /* "src/mpi4py/MPI.src/asarray.pxi":184
 * 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":185
 *     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":186
 *     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":187
 *     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":188
 *     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_PyLong_As_int(__pyx_v_sequence); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(10, 188, __pyx_L1_error)
      __pyx_v_value = __pyx_t_3;

      /* "src/mpi4py/MPI.src/asarray.pxi":187
 *     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":189
 *         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, 189, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_v_ob = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/asarray.pxi":190
 *             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":191
 *         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":186
 *     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":193
 *             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, 193, __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":194
 *     else:
 *         ob = chkarray(sequence, size, &array)
 *     p[0] = array             # <<<<<<<<<<<<<<
 *     return ob
 * 
*/
  (__pyx_v_p[0]) = __pyx_v_array;

  /* "src/mpi4py/MPI.src/asarray.pxi":195
 *         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":182
 *     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/constant.pxi":10
 *     """
 * 
 *     cdef inline str as_str(self):             # <<<<<<<<<<<<<<
 *         return 'BOTTOM'
 *     cdef inline void* as_buf(self) noexcept nogil:
*/

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_10BottomType_as_str(CYTHON_UNUSED struct __pyx_obj_6mpi4py_3MPI_BottomType *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("as_str", 0);

  /* "src/mpi4py/MPI.src/constant.pxi":11
 * 
 *     cdef inline str as_str(self):
 *         return 'BOTTOM'             # <<<<<<<<<<<<<<
 *     cdef inline void* as_buf(self) noexcept nogil:
 *         return MPI_BOTTOM
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_BOTTOM);
  __pyx_r = __pyx_mstate_global->__pyx_n_u_BOTTOM;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/constant.pxi":10
 *     """
 * 
 *     cdef inline str as_str(self):             # <<<<<<<<<<<<<<
 *         return 'BOTTOM'
 *     cdef inline void* as_buf(self) noexcept nogil:
*/

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

/* "src/mpi4py/MPI.src/constant.pxi":12
 *     cdef inline str as_str(self):
 *         return 'BOTTOM'
 *     cdef inline void* as_buf(self) noexcept nogil:             # <<<<<<<<<<<<<<
 *         return MPI_BOTTOM
 *     cdef inline MPI_Aint as_int(self) noexcept nogil:
*/

static CYTHON_INLINE void *__pyx_f_6mpi4py_3MPI_10BottomType_as_buf(CYTHON_UNUSED struct __pyx_obj_6mpi4py_3MPI_BottomType *__pyx_v_self) {
  void *__pyx_r;

  /* "src/mpi4py/MPI.src/constant.pxi":13
 *         return 'BOTTOM'
 *     cdef inline void* as_buf(self) noexcept nogil:
 *         return MPI_BOTTOM             # <<<<<<<<<<<<<<
 *     cdef inline MPI_Aint as_int(self) noexcept nogil:
 *         return <MPI_Aint>MPI_BOTTOM
*/
  __pyx_r = MPI_BOTTOM;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/constant.pxi":12
 *     cdef inline str as_str(self):
 *         return 'BOTTOM'
 *     cdef inline void* as_buf(self) noexcept nogil:             # <<<<<<<<<<<<<<
 *         return MPI_BOTTOM
 *     cdef inline MPI_Aint as_int(self) noexcept nogil:
*/

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

/* "src/mpi4py/MPI.src/constant.pxi":14
 *     cdef inline void* as_buf(self) noexcept nogil:
 *         return MPI_BOTTOM
 *     cdef inline MPI_Aint as_int(self) noexcept nogil:             # <<<<<<<<<<<<<<
 *         return <MPI_Aint>MPI_BOTTOM
 * 
*/

static CYTHON_INLINE MPI_Aint __pyx_f_6mpi4py_3MPI_10BottomType_as_int(CYTHON_UNUSED struct __pyx_obj_6mpi4py_3MPI_BottomType *__pyx_v_self) {
  MPI_Aint __pyx_r;

  /* "src/mpi4py/MPI.src/constant.pxi":15
 *         return MPI_BOTTOM
 *     cdef inline MPI_Aint as_int(self) noexcept nogil:
 *         return <MPI_Aint>MPI_BOTTOM             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self) -> bool:
*/
  __pyx_r = ((MPI_Aint)MPI_BOTTOM);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/constant.pxi":14
 *     cdef inline void* as_buf(self) noexcept nogil:
 *         return MPI_BOTTOM
 *     cdef inline MPI_Aint as_int(self) noexcept nogil:             # <<<<<<<<<<<<<<
 *         return <MPI_Aint>MPI_BOTTOM
 * 
*/

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

/* "src/mpi4py/MPI.src/constant.pxi":17
 *         return <MPI_Aint>MPI_BOTTOM
 * 
 *     def __bool__(self) -> bool:             # <<<<<<<<<<<<<<
 *         return self.as_int() != 0
 * 
*/

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_10BottomType_1__bool__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_10BottomType_1__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_10BottomType___bool__(((struct __pyx_obj_6mpi4py_3MPI_BottomType *)__pyx_v_self));

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

static int __pyx_pf_6mpi4py_3MPI_10BottomType___bool__(struct __pyx_obj_6mpi4py_3MPI_BottomType *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/constant.pxi":18
 * 
 *     def __bool__(self) -> bool:
 *         return self.as_int() != 0             # <<<<<<<<<<<<<<
 * 
 *     def __int__(self) -> int:
*/
  __pyx_r = (__pyx_f_6mpi4py_3MPI_10BottomType_as_int(__pyx_v_self) != 0);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/constant.pxi":17
 *         return <MPI_Aint>MPI_BOTTOM
 * 
 *     def __bool__(self) -> bool:             # <<<<<<<<<<<<<<
 *         return self.as_int() != 0
 * 
*/

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

/* "src/mpi4py/MPI.src/constant.pxi":20
 *         return self.as_int() != 0
 * 
 *     def __int__(self) -> int:             # <<<<<<<<<<<<<<
 *         return self.as_int()
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_10BottomType_3__int__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_10BottomType_3__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_10BottomType_2__int__(((struct __pyx_obj_6mpi4py_3MPI_BottomType *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_10BottomType_2__int__(struct __pyx_obj_6mpi4py_3MPI_BottomType *__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__", 0);

  /* "src/mpi4py/MPI.src/constant.pxi":21
 * 
 *     def __int__(self) -> int:
 *         return self.as_int()             # <<<<<<<<<<<<<<
 * 
 *     def __index__(self) -> int:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_MPI_Aint(__pyx_f_6mpi4py_3MPI_10BottomType_as_int(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 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/constant.pxi":20
 *         return self.as_int() != 0
 * 
 *     def __int__(self) -> int:             # <<<<<<<<<<<<<<
 *         return self.as_int()
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.BottomType.__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/constant.pxi":23
 *         return self.as_int()
 * 
 *     def __index__(self) -> int:             # <<<<<<<<<<<<<<
 *         return self.as_int()
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_10BottomType_5__index__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_10BottomType_5__index__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__index__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_10BottomType_4__index__(((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__index__(struct __pyx_obj_6mpi4py_3MPI_BottomType *__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("__index__", 0);

  /* "src/mpi4py/MPI.src/constant.pxi":24
 * 
 *     def __index__(self) -> int:
 *         return self.as_int()             # <<<<<<<<<<<<<<
 * 
 *     def __hash__(self) -> int:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_MPI_Aint(__pyx_f_6mpi4py_3MPI_10BottomType_as_int(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 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/constant.pxi":23
 *         return self.as_int()
 * 
 *     def __index__(self) -> int:             # <<<<<<<<<<<<<<
 *         return self.as_int()
 * 
*/

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

/* "src/mpi4py/MPI.src/constant.pxi":26
 *         return self.as_int()
 * 
 *     def __hash__(self) -> int:             # <<<<<<<<<<<<<<
 *         return <Py_hash_t>self.as_int()
 * 
*/

/* Python wrapper */
static Py_hash_t __pyx_pw_6mpi4py_3MPI_10BottomType_7__hash__(PyObject *__pyx_v_self); /*proto*/
static Py_hash_t __pyx_pw_6mpi4py_3MPI_10BottomType_7__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_10BottomType_6__hash__(((struct __pyx_obj_6mpi4py_3MPI_BottomType *)__pyx_v_self));

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

static Py_hash_t __pyx_pf_6mpi4py_3MPI_10BottomType_6__hash__(struct __pyx_obj_6mpi4py_3MPI_BottomType *__pyx_v_self) {
  Py_hash_t __pyx_r;

  /* "src/mpi4py/MPI.src/constant.pxi":27
 * 
 *     def __hash__(self) -> int:
 *         return <Py_hash_t>self.as_int()             # <<<<<<<<<<<<<<
 * 
 *     def __eq__(self, object value) -> bool:
*/
  __pyx_r = ((Py_hash_t)__pyx_f_6mpi4py_3MPI_10BottomType_as_int(__pyx_v_self));
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/constant.pxi":26
 *         return self.as_int()
 * 
 *     def __hash__(self) -> int:             # <<<<<<<<<<<<<<
 *         return <Py_hash_t>self.as_int()
 * 
*/

  /* function exit code */
  __pyx_L0:;
  if (unlikely(__pyx_r == -1) && !PyErr_Occurred()) __pyx_r = -2;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/constant.pxi":29
 *         return <Py_hash_t>self.as_int()
 * 
 *     def __eq__(self, object value) -> bool:             # <<<<<<<<<<<<<<
 *         if isinstance(value, type(self)): return True
 *         if not is_integral(value): return NotImplemented
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_10BottomType_9__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_10BottomType_9__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__eq__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_10BottomType_8__eq__(((struct __pyx_obj_6mpi4py_3MPI_BottomType *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_10BottomType_8__eq__(struct __pyx_obj_6mpi4py_3MPI_BottomType *__pyx_v_self, PyObject *__pyx_v_value) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  MPI_Aint __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__eq__", 0);

  /* "src/mpi4py/MPI.src/constant.pxi":30
 * 
 *     def __eq__(self, object value) -> bool:
 *         if isinstance(value, type(self)): return True             # <<<<<<<<<<<<<<
 *         if not is_integral(value): return NotImplemented
 *         return self.as_int() == <MPI_Aint>value
*/
  __pyx_t_1 = PyObject_IsInstance(__pyx_v_value, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(3, 30, __pyx_L1_error)
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_True);
    __pyx_r = Py_True;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/constant.pxi":31
 *     def __eq__(self, object value) -> bool:
 *         if isinstance(value, type(self)): return True
 *         if not is_integral(value): return NotImplemented             # <<<<<<<<<<<<<<
 *         return self.as_int() == <MPI_Aint>value
 * 
*/
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_is_integral(__pyx_v_value) != 0));
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/constant.pxi":32
 *         if isinstance(value, type(self)): return True
 *         if not is_integral(value): return NotImplemented
 *         return self.as_int() == <MPI_Aint>value             # <<<<<<<<<<<<<<
 * 
 *     def __ne__(self, object value) -> bool:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_As_MPI_Aint(__pyx_v_value); if (unlikely((__pyx_t_2 == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(3, 32, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_f_6mpi4py_3MPI_10BottomType_as_int(__pyx_v_self) == ((MPI_Aint)__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/constant.pxi":29
 *         return <Py_hash_t>self.as_int()
 * 
 *     def __eq__(self, object value) -> bool:             # <<<<<<<<<<<<<<
 *         if isinstance(value, type(self)): return True
 *         if not is_integral(value): return NotImplemented
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.BottomType.__eq__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/constant.pxi":34
 *         return self.as_int() == <MPI_Aint>value
 * 
 *     def __ne__(self, object value) -> bool:             # <<<<<<<<<<<<<<
 *         if isinstance(value, type(self)): return False
 *         if not is_integral(value): return NotImplemented
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_10BottomType_11__ne__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_10BottomType_11__ne__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__ne__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_10BottomType_10__ne__(((struct __pyx_obj_6mpi4py_3MPI_BottomType *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_10BottomType_10__ne__(struct __pyx_obj_6mpi4py_3MPI_BottomType *__pyx_v_self, PyObject *__pyx_v_value) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  MPI_Aint __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__ne__", 0);

  /* "src/mpi4py/MPI.src/constant.pxi":35
 * 
 *     def __ne__(self, object value) -> bool:
 *         if isinstance(value, type(self)): return False             # <<<<<<<<<<<<<<
 *         if not is_integral(value): return NotImplemented
 *         return self.as_int() != <MPI_Aint>value
*/
  __pyx_t_1 = PyObject_IsInstance(__pyx_v_value, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(3, 35, __pyx_L1_error)
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/constant.pxi":36
 *     def __ne__(self, object value) -> bool:
 *         if isinstance(value, type(self)): return False
 *         if not is_integral(value): return NotImplemented             # <<<<<<<<<<<<<<
 *         return self.as_int() != <MPI_Aint>value
 * 
*/
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_is_integral(__pyx_v_value) != 0));
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/constant.pxi":37
 *         if isinstance(value, type(self)): return False
 *         if not is_integral(value): return NotImplemented
 *         return self.as_int() != <MPI_Aint>value             # <<<<<<<<<<<<<<
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_As_MPI_Aint(__pyx_v_value); if (unlikely((__pyx_t_2 == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(3, 37, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_f_6mpi4py_3MPI_10BottomType_as_int(__pyx_v_self) != ((MPI_Aint)__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/constant.pxi":34
 *         return self.as_int() == <MPI_Aint>value
 * 
 *     def __ne__(self, object value) -> bool:             # <<<<<<<<<<<<<<
 *         if isinstance(value, type(self)): return False
 *         if not is_integral(value): return NotImplemented
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.BottomType.__ne__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/constant.pxi":39
 *         return self.as_int() != <MPI_Aint>value
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):             # <<<<<<<<<<<<<<
 *         PyBuffer_FillInfo(view, <object>NULL, self.as_buf(), 0, 0, flags)
 * 
*/

/* Python wrapper */
CYTHON_UNUSED static int __pyx_pw_6mpi4py_3MPI_10BottomType_13__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_view, int __pyx_v_flags); /*proto*/
CYTHON_UNUSED static int __pyx_pw_6mpi4py_3MPI_10BottomType_13__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_12__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_12__getbuffer__(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/constant.pxi":40
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):
 *         PyBuffer_FillInfo(view, <object>NULL, self.as_buf(), 0, 0, flags)             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self) -> str:
*/
  __pyx_t_1 = PyBuffer_FillInfo(__pyx_v_view, ((PyObject *)NULL), __pyx_f_6mpi4py_3MPI_10BottomType_as_buf(__pyx_v_self), 0, 0, __pyx_v_flags); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(3, 40, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/constant.pxi":39
 *         return self.as_int() != <MPI_Aint>value
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):             # <<<<<<<<<<<<<<
 *         PyBuffer_FillInfo(view, <object>NULL, self.as_buf(), 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/constant.pxi":42
 *         PyBuffer_FillInfo(view, <object>NULL, self.as_buf(), 0, 0, flags)
 * 
 *     def __repr__(self) -> str:             # <<<<<<<<<<<<<<
 *         return self.as_str()
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_10BottomType_15__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_10BottomType_15__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_14__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_14__repr__(struct __pyx_obj_6mpi4py_3MPI_BottomType *__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("__repr__", 0);

  /* "src/mpi4py/MPI.src/constant.pxi":43
 * 
 *     def __repr__(self) -> str:
 *         return self.as_str()             # <<<<<<<<<<<<<<
 * 
 *     def __reduce__(self) -> str:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_10BottomType_as_str(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/constant.pxi":42
 *         PyBuffer_FillInfo(view, <object>NULL, self.as_buf(), 0, 0, flags)
 * 
 *     def __repr__(self) -> str:             # <<<<<<<<<<<<<<
 *         return self.as_str()
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.BottomType.__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/constant.pxi":45
 *         return self.as_str()
 * 
 *     def __reduce__(self) -> str:             # <<<<<<<<<<<<<<
 *         return self.as_str()
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_10BottomType_17__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_16__reduce__, "__reduce__(self) -> str");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_10BottomType_17__reduce__ = {"__reduce__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_10BottomType_17__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_10BottomType_16__reduce__};
static PyObject *__pyx_pw_6mpi4py_3MPI_10BottomType_17__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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_10BottomType_16__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_16__reduce__(struct __pyx_obj_6mpi4py_3MPI_BottomType *__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__", 0);

  /* "src/mpi4py/MPI.src/constant.pxi":46
 * 
 *     def __reduce__(self) -> str:
 *         return self.as_str()             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_10BottomType_as_str(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 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/constant.pxi":45
 *         return self.as_str()
 * 
 *     def __reduce__(self) -> str:             # <<<<<<<<<<<<<<
 *         return self.as_str()
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.BottomType.__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/constant.pxi":51
 * cdef object __BOTTOM__ = BottomType()
 * 
 * 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", 0);

  /* "src/mpi4py/MPI.src/constant.pxi":52
 * 
 * cdef inline bint is_BOTTOM(object obj):
 *     return obj is None or is_constant(obj, __BOTTOM__)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  __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(3, 52, __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/constant.pxi":51
 * cdef object __BOTTOM__ = BottomType()
 * 
 * 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/constant.pxi":63
 *     """
 * 
 *     cdef inline str as_str(self):             # <<<<<<<<<<<<<<
 *         return 'IN_PLACE'
 *     cdef inline void* as_buf(self) noexcept nogil:
*/

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_11InPlaceType_as_str(CYTHON_UNUSED struct __pyx_obj_6mpi4py_3MPI_InPlaceType *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("as_str", 0);

  /* "src/mpi4py/MPI.src/constant.pxi":64
 * 
 *     cdef inline str as_str(self):
 *         return 'IN_PLACE'             # <<<<<<<<<<<<<<
 *     cdef inline void* as_buf(self) noexcept nogil:
 *         return MPI_IN_PLACE
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_IN_PLACE);
  __pyx_r = __pyx_mstate_global->__pyx_n_u_IN_PLACE;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/constant.pxi":63
 *     """
 * 
 *     cdef inline str as_str(self):             # <<<<<<<<<<<<<<
 *         return 'IN_PLACE'
 *     cdef inline void* as_buf(self) noexcept nogil:
*/

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

/* "src/mpi4py/MPI.src/constant.pxi":65
 *     cdef inline str as_str(self):
 *         return 'IN_PLACE'
 *     cdef inline void* as_buf(self) noexcept nogil:             # <<<<<<<<<<<<<<
 *         return MPI_IN_PLACE
 *     cdef inline MPI_Aint as_int(self) noexcept nogil:
*/

static CYTHON_INLINE void *__pyx_f_6mpi4py_3MPI_11InPlaceType_as_buf(CYTHON_UNUSED struct __pyx_obj_6mpi4py_3MPI_InPlaceType *__pyx_v_self) {
  void *__pyx_r;

  /* "src/mpi4py/MPI.src/constant.pxi":66
 *         return 'IN_PLACE'
 *     cdef inline void* as_buf(self) noexcept nogil:
 *         return MPI_IN_PLACE             # <<<<<<<<<<<<<<
 *     cdef inline MPI_Aint as_int(self) noexcept nogil:
 *         return <MPI_Aint>MPI_IN_PLACE
*/
  __pyx_r = MPI_IN_PLACE;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/constant.pxi":65
 *     cdef inline str as_str(self):
 *         return 'IN_PLACE'
 *     cdef inline void* as_buf(self) noexcept nogil:             # <<<<<<<<<<<<<<
 *         return MPI_IN_PLACE
 *     cdef inline MPI_Aint as_int(self) noexcept nogil:
*/

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

/* "src/mpi4py/MPI.src/constant.pxi":67
 *     cdef inline void* as_buf(self) noexcept nogil:
 *         return MPI_IN_PLACE
 *     cdef inline MPI_Aint as_int(self) noexcept nogil:             # <<<<<<<<<<<<<<
 *         return <MPI_Aint>MPI_IN_PLACE
 * 
*/

static CYTHON_INLINE MPI_Aint __pyx_f_6mpi4py_3MPI_11InPlaceType_as_int(CYTHON_UNUSED struct __pyx_obj_6mpi4py_3MPI_InPlaceType *__pyx_v_self) {
  MPI_Aint __pyx_r;

  /* "src/mpi4py/MPI.src/constant.pxi":68
 *         return MPI_IN_PLACE
 *     cdef inline MPI_Aint as_int(self) noexcept nogil:
 *         return <MPI_Aint>MPI_IN_PLACE             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self) -> bool:
*/
  __pyx_r = ((MPI_Aint)MPI_IN_PLACE);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/constant.pxi":67
 *     cdef inline void* as_buf(self) noexcept nogil:
 *         return MPI_IN_PLACE
 *     cdef inline MPI_Aint as_int(self) noexcept nogil:             # <<<<<<<<<<<<<<
 *         return <MPI_Aint>MPI_IN_PLACE
 * 
*/

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

/* "src/mpi4py/MPI.src/constant.pxi":70
 *         return <MPI_Aint>MPI_IN_PLACE
 * 
 *     def __bool__(self) -> bool:             # <<<<<<<<<<<<<<
 *         return self.as_int() != 0
 * 
*/

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_11InPlaceType_1__bool__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_11InPlaceType_1__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_11InPlaceType___bool__(((struct __pyx_obj_6mpi4py_3MPI_InPlaceType *)__pyx_v_self));

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

static int __pyx_pf_6mpi4py_3MPI_11InPlaceType___bool__(struct __pyx_obj_6mpi4py_3MPI_InPlaceType *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/constant.pxi":71
 * 
 *     def __bool__(self) -> bool:
 *         return self.as_int() != 0             # <<<<<<<<<<<<<<
 * 
 *     def __int__(self) -> int:
*/
  __pyx_r = (__pyx_f_6mpi4py_3MPI_11InPlaceType_as_int(__pyx_v_self) != 0);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/constant.pxi":70
 *         return <MPI_Aint>MPI_IN_PLACE
 * 
 *     def __bool__(self) -> bool:             # <<<<<<<<<<<<<<
 *         return self.as_int() != 0
 * 
*/

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

/* "src/mpi4py/MPI.src/constant.pxi":73
 *         return self.as_int() != 0
 * 
 *     def __int__(self) -> int:             # <<<<<<<<<<<<<<
 *         return self.as_int()
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_11InPlaceType_3__int__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_11InPlaceType_3__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_11InPlaceType_2__int__(((struct __pyx_obj_6mpi4py_3MPI_InPlaceType *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_11InPlaceType_2__int__(struct __pyx_obj_6mpi4py_3MPI_InPlaceType *__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__", 0);

  /* "src/mpi4py/MPI.src/constant.pxi":74
 * 
 *     def __int__(self) -> int:
 *         return self.as_int()             # <<<<<<<<<<<<<<
 * 
 *     def __hash__(self) -> int:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_MPI_Aint(__pyx_f_6mpi4py_3MPI_11InPlaceType_as_int(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/constant.pxi":73
 *         return self.as_int() != 0
 * 
 *     def __int__(self) -> int:             # <<<<<<<<<<<<<<
 *         return self.as_int()
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.InPlaceType.__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/constant.pxi":76
 *         return self.as_int()
 * 
 *     def __hash__(self) -> int:             # <<<<<<<<<<<<<<
 *         return <Py_hash_t>self.as_int()
 * 
*/

/* Python wrapper */
static Py_hash_t __pyx_pw_6mpi4py_3MPI_11InPlaceType_5__hash__(PyObject *__pyx_v_self); /*proto*/
static Py_hash_t __pyx_pw_6mpi4py_3MPI_11InPlaceType_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_11InPlaceType_4__hash__(((struct __pyx_obj_6mpi4py_3MPI_InPlaceType *)__pyx_v_self));

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

static Py_hash_t __pyx_pf_6mpi4py_3MPI_11InPlaceType_4__hash__(struct __pyx_obj_6mpi4py_3MPI_InPlaceType *__pyx_v_self) {
  Py_hash_t __pyx_r;

  /* "src/mpi4py/MPI.src/constant.pxi":77
 * 
 *     def __hash__(self) -> int:
 *         return <Py_hash_t>self.as_int()             # <<<<<<<<<<<<<<
 * 
 *     def __eq__(self, object value) -> bool:
*/
  __pyx_r = ((Py_hash_t)__pyx_f_6mpi4py_3MPI_11InPlaceType_as_int(__pyx_v_self));
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/constant.pxi":76
 *         return self.as_int()
 * 
 *     def __hash__(self) -> int:             # <<<<<<<<<<<<<<
 *         return <Py_hash_t>self.as_int()
 * 
*/

  /* function exit code */
  __pyx_L0:;
  if (unlikely(__pyx_r == -1) && !PyErr_Occurred()) __pyx_r = -2;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/constant.pxi":79
 *         return <Py_hash_t>self.as_int()
 * 
 *     def __eq__(self, object value) -> bool:             # <<<<<<<<<<<<<<
 *         if isinstance(value, type(self)): return True
 *         if not is_integral(value): return NotImplemented
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_11InPlaceType_7__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_11InPlaceType_7__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__eq__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_11InPlaceType_6__eq__(((struct __pyx_obj_6mpi4py_3MPI_InPlaceType *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_11InPlaceType_6__eq__(struct __pyx_obj_6mpi4py_3MPI_InPlaceType *__pyx_v_self, PyObject *__pyx_v_value) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  MPI_Aint __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__eq__", 0);

  /* "src/mpi4py/MPI.src/constant.pxi":80
 * 
 *     def __eq__(self, object value) -> bool:
 *         if isinstance(value, type(self)): return True             # <<<<<<<<<<<<<<
 *         if not is_integral(value): return NotImplemented
 *         return self.as_int() == <MPI_Aint>value
*/
  __pyx_t_1 = PyObject_IsInstance(__pyx_v_value, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(3, 80, __pyx_L1_error)
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_True);
    __pyx_r = Py_True;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/constant.pxi":81
 *     def __eq__(self, object value) -> bool:
 *         if isinstance(value, type(self)): return True
 *         if not is_integral(value): return NotImplemented             # <<<<<<<<<<<<<<
 *         return self.as_int() == <MPI_Aint>value
 * 
*/
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_is_integral(__pyx_v_value) != 0));
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/constant.pxi":82
 *         if isinstance(value, type(self)): return True
 *         if not is_integral(value): return NotImplemented
 *         return self.as_int() == <MPI_Aint>value             # <<<<<<<<<<<<<<
 * 
 *     def __ne__(self, object value) -> bool:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_As_MPI_Aint(__pyx_v_value); if (unlikely((__pyx_t_2 == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(3, 82, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_f_6mpi4py_3MPI_11InPlaceType_as_int(__pyx_v_self) == ((MPI_Aint)__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/constant.pxi":79
 *         return <Py_hash_t>self.as_int()
 * 
 *     def __eq__(self, object value) -> bool:             # <<<<<<<<<<<<<<
 *         if isinstance(value, type(self)): return True
 *         if not is_integral(value): return NotImplemented
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.InPlaceType.__eq__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/constant.pxi":84
 *         return self.as_int() == <MPI_Aint>value
 * 
 *     def __ne__(self, object value) -> bool:             # <<<<<<<<<<<<<<
 *         if isinstance(value, type(self)): return False
 *         if not is_integral(value): return NotImplemented
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_11InPlaceType_9__ne__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_11InPlaceType_9__ne__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__ne__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_11InPlaceType_8__ne__(((struct __pyx_obj_6mpi4py_3MPI_InPlaceType *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_11InPlaceType_8__ne__(struct __pyx_obj_6mpi4py_3MPI_InPlaceType *__pyx_v_self, PyObject *__pyx_v_value) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  MPI_Aint __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__ne__", 0);

  /* "src/mpi4py/MPI.src/constant.pxi":85
 * 
 *     def __ne__(self, object value) -> bool:
 *         if isinstance(value, type(self)): return False             # <<<<<<<<<<<<<<
 *         if not is_integral(value): return NotImplemented
 *         return self.as_int() != <MPI_Aint>value
*/
  __pyx_t_1 = PyObject_IsInstance(__pyx_v_value, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(3, 85, __pyx_L1_error)
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/constant.pxi":86
 *     def __ne__(self, object value) -> bool:
 *         if isinstance(value, type(self)): return False
 *         if not is_integral(value): return NotImplemented             # <<<<<<<<<<<<<<
 *         return self.as_int() != <MPI_Aint>value
 * 
*/
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_is_integral(__pyx_v_value) != 0));
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/constant.pxi":87
 *         if isinstance(value, type(self)): return False
 *         if not is_integral(value): return NotImplemented
 *         return self.as_int() != <MPI_Aint>value             # <<<<<<<<<<<<<<
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_As_MPI_Aint(__pyx_v_value); if (unlikely((__pyx_t_2 == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(3, 87, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_f_6mpi4py_3MPI_11InPlaceType_as_int(__pyx_v_self) != ((MPI_Aint)__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/constant.pxi":84
 *         return self.as_int() == <MPI_Aint>value
 * 
 *     def __ne__(self, object value) -> bool:             # <<<<<<<<<<<<<<
 *         if isinstance(value, type(self)): return False
 *         if not is_integral(value): return NotImplemented
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.InPlaceType.__ne__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/constant.pxi":89
 *         return self.as_int() != <MPI_Aint>value
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):             # <<<<<<<<<<<<<<
 *         PyBuffer_FillInfo(view, <object>NULL, self.as_buf(), 0, 0, flags)
 * 
*/

/* Python wrapper */
CYTHON_UNUSED static int __pyx_pw_6mpi4py_3MPI_11InPlaceType_11__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_view, int __pyx_v_flags); /*proto*/
CYTHON_UNUSED static int __pyx_pw_6mpi4py_3MPI_11InPlaceType_11__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_10__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_10__getbuffer__(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/constant.pxi":90
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):
 *         PyBuffer_FillInfo(view, <object>NULL, self.as_buf(), 0, 0, flags)             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self) -> str:
*/
  __pyx_t_1 = PyBuffer_FillInfo(__pyx_v_view, ((PyObject *)NULL), __pyx_f_6mpi4py_3MPI_11InPlaceType_as_buf(__pyx_v_self), 0, 0, __pyx_v_flags); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(3, 90, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/constant.pxi":89
 *         return self.as_int() != <MPI_Aint>value
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):             # <<<<<<<<<<<<<<
 *         PyBuffer_FillInfo(view, <object>NULL, self.as_buf(), 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/constant.pxi":92
 *         PyBuffer_FillInfo(view, <object>NULL, self.as_buf(), 0, 0, flags)
 * 
 *     def __repr__(self) -> str:             # <<<<<<<<<<<<<<
 *         return self.as_str()
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_11InPlaceType_13__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_11InPlaceType_13__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_12__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_12__repr__(struct __pyx_obj_6mpi4py_3MPI_InPlaceType *__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("__repr__", 0);

  /* "src/mpi4py/MPI.src/constant.pxi":93
 * 
 *     def __repr__(self) -> str:
 *         return self.as_str()             # <<<<<<<<<<<<<<
 * 
 *     def __reduce__(self) -> str:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_11InPlaceType_as_str(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/constant.pxi":92
 *         PyBuffer_FillInfo(view, <object>NULL, self.as_buf(), 0, 0, flags)
 * 
 *     def __repr__(self) -> str:             # <<<<<<<<<<<<<<
 *         return self.as_str()
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.InPlaceType.__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/constant.pxi":95
 *         return self.as_str()
 * 
 *     def __reduce__(self) -> str:             # <<<<<<<<<<<<<<
 *         return self.as_str()
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_11InPlaceType_15__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_14__reduce__, "__reduce__(self) -> str");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_11InPlaceType_15__reduce__ = {"__reduce__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_11InPlaceType_15__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_11InPlaceType_14__reduce__};
static PyObject *__pyx_pw_6mpi4py_3MPI_11InPlaceType_15__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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_11InPlaceType_14__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_14__reduce__(struct __pyx_obj_6mpi4py_3MPI_InPlaceType *__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__", 0);

  /* "src/mpi4py/MPI.src/constant.pxi":96
 * 
 *     def __reduce__(self) -> str:
 *         return self.as_str()             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_11InPlaceType_as_str(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/constant.pxi":95
 *         return self.as_str()
 * 
 *     def __reduce__(self) -> str:             # <<<<<<<<<<<<<<
 *         return self.as_str()
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.InPlaceType.__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/constant.pxi":101
 * cdef object __IN_PLACE__ = InPlaceType()
 * 
 * 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", 0);

  /* "src/mpi4py/MPI.src/constant.pxi":102
 * 
 * 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(3, 102, __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/constant.pxi":101
 * cdef object __IN_PLACE__ = InPlaceType()
 * 
 * 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/constant.pxi":113
 *     """
 * 
 *     cdef inline object as_str(self):             # <<<<<<<<<<<<<<
 *         return 'BUFFER_AUTOMATIC'
 *     cdef inline void* as_buf(self) noexcept nogil:
*/

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_19BufferAutomaticType_as_str(CYTHON_UNUSED struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("as_str", 0);

  /* "src/mpi4py/MPI.src/constant.pxi":114
 * 
 *     cdef inline object as_str(self):
 *         return 'BUFFER_AUTOMATIC'             # <<<<<<<<<<<<<<
 *     cdef inline void* as_buf(self) noexcept nogil:
 *         return MPI_BUFFER_AUTOMATIC
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_BUFFER_AUTOMATIC);
  __pyx_r = __pyx_mstate_global->__pyx_n_u_BUFFER_AUTOMATIC;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/constant.pxi":113
 *     """
 * 
 *     cdef inline object as_str(self):             # <<<<<<<<<<<<<<
 *         return 'BUFFER_AUTOMATIC'
 *     cdef inline void* as_buf(self) noexcept nogil:
*/

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

/* "src/mpi4py/MPI.src/constant.pxi":115
 *     cdef inline object as_str(self):
 *         return 'BUFFER_AUTOMATIC'
 *     cdef inline void* as_buf(self) noexcept nogil:             # <<<<<<<<<<<<<<
 *         return MPI_BUFFER_AUTOMATIC
 *     cdef inline MPI_Aint as_int(self) noexcept nogil:
*/

static CYTHON_INLINE void *__pyx_f_6mpi4py_3MPI_19BufferAutomaticType_as_buf(CYTHON_UNUSED struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *__pyx_v_self) {
  void *__pyx_r;

  /* "src/mpi4py/MPI.src/constant.pxi":116
 *         return 'BUFFER_AUTOMATIC'
 *     cdef inline void* as_buf(self) noexcept nogil:
 *         return MPI_BUFFER_AUTOMATIC             # <<<<<<<<<<<<<<
 *     cdef inline MPI_Aint as_int(self) noexcept nogil:
 *         return <MPI_Aint>MPI_BUFFER_AUTOMATIC
*/
  __pyx_r = MPI_BUFFER_AUTOMATIC;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/constant.pxi":115
 *     cdef inline object as_str(self):
 *         return 'BUFFER_AUTOMATIC'
 *     cdef inline void* as_buf(self) noexcept nogil:             # <<<<<<<<<<<<<<
 *         return MPI_BUFFER_AUTOMATIC
 *     cdef inline MPI_Aint as_int(self) noexcept nogil:
*/

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

/* "src/mpi4py/MPI.src/constant.pxi":117
 *     cdef inline void* as_buf(self) noexcept nogil:
 *         return MPI_BUFFER_AUTOMATIC
 *     cdef inline MPI_Aint as_int(self) noexcept nogil:             # <<<<<<<<<<<<<<
 *         return <MPI_Aint>MPI_BUFFER_AUTOMATIC
 * 
*/

static CYTHON_INLINE MPI_Aint __pyx_f_6mpi4py_3MPI_19BufferAutomaticType_as_int(CYTHON_UNUSED struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *__pyx_v_self) {
  MPI_Aint __pyx_r;

  /* "src/mpi4py/MPI.src/constant.pxi":118
 *         return MPI_BUFFER_AUTOMATIC
 *     cdef inline MPI_Aint as_int(self) noexcept nogil:
 *         return <MPI_Aint>MPI_BUFFER_AUTOMATIC             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self) -> bool:
*/
  __pyx_r = ((MPI_Aint)MPI_BUFFER_AUTOMATIC);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/constant.pxi":117
 *     cdef inline void* as_buf(self) noexcept nogil:
 *         return MPI_BUFFER_AUTOMATIC
 *     cdef inline MPI_Aint as_int(self) noexcept nogil:             # <<<<<<<<<<<<<<
 *         return <MPI_Aint>MPI_BUFFER_AUTOMATIC
 * 
*/

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

/* "src/mpi4py/MPI.src/constant.pxi":120
 *         return <MPI_Aint>MPI_BUFFER_AUTOMATIC
 * 
 *     def __bool__(self) -> bool:             # <<<<<<<<<<<<<<
 *         return self.as_int() != 0
 * 
*/

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_1__bool__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_1__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_19BufferAutomaticType___bool__(((struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *)__pyx_v_self));

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

static int __pyx_pf_6mpi4py_3MPI_19BufferAutomaticType___bool__(struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/constant.pxi":121
 * 
 *     def __bool__(self) -> bool:
 *         return self.as_int() != 0             # <<<<<<<<<<<<<<
 * 
 *     def __int__(self) -> int:
*/
  __pyx_r = (__pyx_f_6mpi4py_3MPI_19BufferAutomaticType_as_int(__pyx_v_self) != 0);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/constant.pxi":120
 *         return <MPI_Aint>MPI_BUFFER_AUTOMATIC
 * 
 *     def __bool__(self) -> bool:             # <<<<<<<<<<<<<<
 *         return self.as_int() != 0
 * 
*/

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

/* "src/mpi4py/MPI.src/constant.pxi":123
 *         return self.as_int() != 0
 * 
 *     def __int__(self) -> int:             # <<<<<<<<<<<<<<
 *         return self.as_int()
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_3__int__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_3__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_19BufferAutomaticType_2__int__(((struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_19BufferAutomaticType_2__int__(struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *__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__", 0);

  /* "src/mpi4py/MPI.src/constant.pxi":124
 * 
 *     def __int__(self) -> int:
 *         return self.as_int()             # <<<<<<<<<<<<<<
 * 
 *     def __hash__(self) -> int:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_MPI_Aint(__pyx_f_6mpi4py_3MPI_19BufferAutomaticType_as_int(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/constant.pxi":123
 *         return self.as_int() != 0
 * 
 *     def __int__(self) -> int:             # <<<<<<<<<<<<<<
 *         return self.as_int()
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.BufferAutomaticType.__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/constant.pxi":126
 *         return self.as_int()
 * 
 *     def __hash__(self) -> int:             # <<<<<<<<<<<<<<
 *         return <Py_hash_t>self.as_int()
 * 
*/

/* Python wrapper */
static Py_hash_t __pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_5__hash__(PyObject *__pyx_v_self); /*proto*/
static Py_hash_t __pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_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_19BufferAutomaticType_4__hash__(((struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *)__pyx_v_self));

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

static Py_hash_t __pyx_pf_6mpi4py_3MPI_19BufferAutomaticType_4__hash__(struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *__pyx_v_self) {
  Py_hash_t __pyx_r;

  /* "src/mpi4py/MPI.src/constant.pxi":127
 * 
 *     def __hash__(self) -> int:
 *         return <Py_hash_t>self.as_int()             # <<<<<<<<<<<<<<
 * 
 *     def __eq__(self, object value) -> bool:
*/
  __pyx_r = ((Py_hash_t)__pyx_f_6mpi4py_3MPI_19BufferAutomaticType_as_int(__pyx_v_self));
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/constant.pxi":126
 *         return self.as_int()
 * 
 *     def __hash__(self) -> int:             # <<<<<<<<<<<<<<
 *         return <Py_hash_t>self.as_int()
 * 
*/

  /* function exit code */
  __pyx_L0:;
  if (unlikely(__pyx_r == -1) && !PyErr_Occurred()) __pyx_r = -2;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/constant.pxi":129
 *         return <Py_hash_t>self.as_int()
 * 
 *     def __eq__(self, object value) -> bool:             # <<<<<<<<<<<<<<
 *         if isinstance(value, type(self)): return True
 *         if not is_integral(value): return NotImplemented
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_7__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_7__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__eq__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_19BufferAutomaticType_6__eq__(((struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_19BufferAutomaticType_6__eq__(struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *__pyx_v_self, PyObject *__pyx_v_value) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  MPI_Aint __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__eq__", 0);

  /* "src/mpi4py/MPI.src/constant.pxi":130
 * 
 *     def __eq__(self, object value) -> bool:
 *         if isinstance(value, type(self)): return True             # <<<<<<<<<<<<<<
 *         if not is_integral(value): return NotImplemented
 *         return self.as_int() == <MPI_Aint>value
*/
  __pyx_t_1 = PyObject_IsInstance(__pyx_v_value, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(3, 130, __pyx_L1_error)
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_True);
    __pyx_r = Py_True;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/constant.pxi":131
 *     def __eq__(self, object value) -> bool:
 *         if isinstance(value, type(self)): return True
 *         if not is_integral(value): return NotImplemented             # <<<<<<<<<<<<<<
 *         return self.as_int() == <MPI_Aint>value
 * 
*/
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_is_integral(__pyx_v_value) != 0));
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/constant.pxi":132
 *         if isinstance(value, type(self)): return True
 *         if not is_integral(value): return NotImplemented
 *         return self.as_int() == <MPI_Aint>value             # <<<<<<<<<<<<<<
 * 
 *     def __ne__(self, object value) -> bool:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_As_MPI_Aint(__pyx_v_value); if (unlikely((__pyx_t_2 == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(3, 132, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_f_6mpi4py_3MPI_19BufferAutomaticType_as_int(__pyx_v_self) == ((MPI_Aint)__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/constant.pxi":129
 *         return <Py_hash_t>self.as_int()
 * 
 *     def __eq__(self, object value) -> bool:             # <<<<<<<<<<<<<<
 *         if isinstance(value, type(self)): return True
 *         if not is_integral(value): return NotImplemented
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.BufferAutomaticType.__eq__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/constant.pxi":134
 *         return self.as_int() == <MPI_Aint>value
 * 
 *     def __ne__(self, object value) -> bool:             # <<<<<<<<<<<<<<
 *         if isinstance(value, type(self)): return False
 *         if not is_integral(value): return NotImplemented
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_9__ne__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_9__ne__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__ne__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_19BufferAutomaticType_8__ne__(((struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_19BufferAutomaticType_8__ne__(struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *__pyx_v_self, PyObject *__pyx_v_value) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  MPI_Aint __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__ne__", 0);

  /* "src/mpi4py/MPI.src/constant.pxi":135
 * 
 *     def __ne__(self, object value) -> bool:
 *         if isinstance(value, type(self)): return False             # <<<<<<<<<<<<<<
 *         if not is_integral(value): return NotImplemented
 *         return self.as_int() != <MPI_Aint>value
*/
  __pyx_t_1 = PyObject_IsInstance(__pyx_v_value, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(3, 135, __pyx_L1_error)
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/constant.pxi":136
 *     def __ne__(self, object value) -> bool:
 *         if isinstance(value, type(self)): return False
 *         if not is_integral(value): return NotImplemented             # <<<<<<<<<<<<<<
 *         return self.as_int() != <MPI_Aint>value
 * 
*/
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_is_integral(__pyx_v_value) != 0));
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/constant.pxi":137
 *         if isinstance(value, type(self)): return False
 *         if not is_integral(value): return NotImplemented
 *         return self.as_int() != <MPI_Aint>value             # <<<<<<<<<<<<<<
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_As_MPI_Aint(__pyx_v_value); if (unlikely((__pyx_t_2 == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(3, 137, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_f_6mpi4py_3MPI_19BufferAutomaticType_as_int(__pyx_v_self) != ((MPI_Aint)__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/constant.pxi":134
 *         return self.as_int() == <MPI_Aint>value
 * 
 *     def __ne__(self, object value) -> bool:             # <<<<<<<<<<<<<<
 *         if isinstance(value, type(self)): return False
 *         if not is_integral(value): return NotImplemented
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.BufferAutomaticType.__ne__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/constant.pxi":139
 *         return self.as_int() != <MPI_Aint>value
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):             # <<<<<<<<<<<<<<
 *         PyBuffer_FillInfo(view, <object>NULL, self.as_buf(), 0, 0, flags)
 * 
*/

/* Python wrapper */
CYTHON_UNUSED static int __pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_11__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_view, int __pyx_v_flags); /*proto*/
CYTHON_UNUSED static int __pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_11__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_10__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_10__getbuffer__(struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *__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/constant.pxi":140
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):
 *         PyBuffer_FillInfo(view, <object>NULL, self.as_buf(), 0, 0, flags)             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self) -> str:
*/
  __pyx_t_1 = PyBuffer_FillInfo(__pyx_v_view, ((PyObject *)NULL), __pyx_f_6mpi4py_3MPI_19BufferAutomaticType_as_buf(__pyx_v_self), 0, 0, __pyx_v_flags); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(3, 140, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/constant.pxi":139
 *         return self.as_int() != <MPI_Aint>value
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):             # <<<<<<<<<<<<<<
 *         PyBuffer_FillInfo(view, <object>NULL, self.as_buf(), 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/constant.pxi":142
 *         PyBuffer_FillInfo(view, <object>NULL, self.as_buf(), 0, 0, flags)
 * 
 *     def __repr__(self) -> str:             # <<<<<<<<<<<<<<
 *         return self.as_str()
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_13__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_13__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_12__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_12__repr__(struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *__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("__repr__", 0);

  /* "src/mpi4py/MPI.src/constant.pxi":143
 * 
 *     def __repr__(self) -> str:
 *         return self.as_str()             # <<<<<<<<<<<<<<
 * 
 *     def __reduce__(self) -> str:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_19BufferAutomaticType_as_str(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/constant.pxi":142
 *         PyBuffer_FillInfo(view, <object>NULL, self.as_buf(), 0, 0, flags)
 * 
 *     def __repr__(self) -> str:             # <<<<<<<<<<<<<<
 *         return self.as_str()
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.BufferAutomaticType.__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/constant.pxi":145
 *         return self.as_str()
 * 
 *     def __reduce__(self) -> str:             # <<<<<<<<<<<<<<
 *         return self.as_str()
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_15__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_14__reduce__, "__reduce__(self) -> str");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_19BufferAutomaticType_15__reduce__ = {"__reduce__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_15__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_19BufferAutomaticType_14__reduce__};
static PyObject *__pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_15__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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_19BufferAutomaticType_14__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_14__reduce__(struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *__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__", 0);

  /* "src/mpi4py/MPI.src/constant.pxi":146
 * 
 *     def __reduce__(self) -> str:
 *         return self.as_str()             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_19BufferAutomaticType_as_str(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/constant.pxi":145
 *         return self.as_str()
 * 
 *     def __reduce__(self) -> str:             # <<<<<<<<<<<<<<
 *         return self.as_str()
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.BufferAutomaticType.__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/constant.pxi":151
 * cdef object __BUFFER_AUTOMATIC__ = BufferAutomaticType()
 * 
 * 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", 0);

  /* "src/mpi4py/MPI.src/constant.pxi":152
 * 
 * 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(3, 152, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/constant.pxi":151
 * cdef object __BUFFER_AUTOMATIC__ = BufferAutomaticType()
 * 
 * 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/objmodel.pxi":15
 * # -----------------------------------------------------------------------------
 * 
 * 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":16
 * 
 * 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(11, 16, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_tp_new(((PyObject *)__pyx_v_cls), __pyx_mstate_global->__pyx_empty_tuple); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 16, __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":15
 * # -----------------------------------------------------------------------------
 * 
 * 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":33
 *     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":35
 * 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":46
 *     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":33
 *     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":36
 *     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":46
 *     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":33
 *     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":37
 *     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":46
 *     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":33
 *     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":38
 *     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":46
 *     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":33
 *     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":39
 *     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":46
 *     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":33
 *     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":40
 *     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":46
 *     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":33
 *     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":41
 *     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":46
 *     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":33
 *     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":42
 *     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":46
 *     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":33
 *     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":43
 *     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":46
 *     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":33
 *     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":44
 *     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":46
 *     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":33
 *     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":45
 *     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":46
 *     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":33
 *     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":48
 *     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":49
 * 
 * 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":50
 * 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":51
 *     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":52
 *     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":53
 *     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":54
 *     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":55
 *     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":56
 *     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":57
 *     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":58
 *     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":59
 *     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":60
 *     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":61
 *     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":62
 *     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":63
 *     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":64
 *     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":65
 *     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":66
 *     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":67
 *     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":68
 *     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":69
 *     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":70
 *     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":71
 *     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":72
 *     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":73
 *     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":74
 *     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":75
 *     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":76
 *     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":77
 *     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_FLOAT16_T               : 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":78
 *     if arg == MPI_UINT16_T                : return 1
 *     if arg == MPI_UINT32_T                : return 1
 *     if arg == MPI_UINT64_T                : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_FLOAT16_T               : return 1
 *     if arg == MPI_BFLOAT16_T              : 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":79
 *     if arg == MPI_UINT32_T                : return 1
 *     if arg == MPI_UINT64_T                : return 1
 *     if arg == MPI_FLOAT16_T               : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_BFLOAT16_T              : return 1
 *     if arg == MPI_C_COMPLEX               : return 1
*/
  __pyx_t_1 = (__pyx_v_arg == MPI_FLOAT16_T);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":80
 *     if arg == MPI_UINT64_T                : return 1
 *     if arg == MPI_FLOAT16_T               : return 1
 *     if arg == MPI_BFLOAT16_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_BFLOAT16_T);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":81
 *     if arg == MPI_FLOAT16_T               : return 1
 *     if arg == MPI_BFLOAT16_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":82
 *     if arg == MPI_BFLOAT16_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":83
 *     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":84
 *     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":85
 *     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":86
 *     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":87
 *     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":88
 *     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":89
 *     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":90
 *     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":91
 *     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":92
 *     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":93
 *     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":94
 *     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":95
 *     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":96
 *     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":97
 *     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":98
 *     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":99
 *     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":100
 *     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":101
 *     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":102
 *     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":103
 *     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":104
 *     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_LOGICAL16               : 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":105
 *     if arg == MPI_LOGICAL2                : return 1
 *     if arg == MPI_LOGICAL4                : return 1
 *     if arg == MPI_LOGICAL8                : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_LOGICAL16               : return 1
 *     if arg == MPI_INTEGER1                : 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":106
 *     if arg == MPI_LOGICAL4                : return 1
 *     if arg == MPI_LOGICAL8                : return 1
 *     if arg == MPI_LOGICAL16               : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_INTEGER1                : return 1
 *     if arg == MPI_INTEGER2                : return 1
*/
  __pyx_t_1 = (__pyx_v_arg == MPI_LOGICAL16);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":107
 *     if arg == MPI_LOGICAL8                : return 1
 *     if arg == MPI_LOGICAL16               : 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":108
 *     if arg == MPI_LOGICAL16               : 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":109
 *     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":110
 *     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":111
 *     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":112
 *     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":113
 *     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":114
 *     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":115
 *     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":116
 *     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":117
 *     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":118
 *     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":119
 *     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":120
 *     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":48
 *     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":122
 *     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":123
 * 
 * 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":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
 *     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":125
 *     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":126
 *     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":128
 *     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":130
 *     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":131
 *     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":132
 *         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":133
 *         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":134
 *         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":122
 *     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":137
 *     )
 * 
 * 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":138
 * 
 * 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":139
 * 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":137
 *     )
 * 
 * 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":141
 *     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":142
 * 
 * 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":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_NO_PROC);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":144
 *     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":141
 *     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":146
 *     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":147
 * 
 * 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":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
 *     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":149
 *     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":150
 *     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":151
 *     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":152
 *     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":153
 *     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":154
 *     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":155
 *     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":156
 *     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":157
 *     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":158
 *     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":159
 *     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":160
 *     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":161
 *     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":162
 *     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":146
 *     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":164
 *     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":165
 * 
 * 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":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_EMPTY);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":167
 *     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":164
 *     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":169
 *     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":170
 * 
 * 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":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_ENV);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":172
 *     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":169
 *     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":174
 *     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":175
 * 
 * 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":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
 *     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":177
 *     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":178
 *     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":179
 *     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":174
 *     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":181
 *     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":182
 * 
 * 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":183
 * 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":181
 *     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":185
 *     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":186
 * 
 * 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":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
 *     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":188
 *     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":189
 *     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":185
 *     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":191
 *     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":192
 * 
 * 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":193
 * 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":191
 *     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":195
 *     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":196
 * 
 * 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":197
 * 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":195
 *     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":199
 *     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":200
 * 
 * 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":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)
 *     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":212
 *     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":199
 *     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":200
 * 
 * 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 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":212
 *     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":199
 *     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":200
 * 
 * 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
 *     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":212
 *     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":199
 *     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":200
 * 
 * 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_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":212
 *     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":199
 *     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":200
 * 
 * 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_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":212
 *     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":199
 *     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":200
 * 
 * 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_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":212
 *     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":199
 *     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":200
 * 
 * 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_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":212
 *     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":199
 *     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":200
 * 
 * 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_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":212
 *     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":199
 *     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":200
 * 
 * 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_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":212
 *     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":199
 *     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":200
 * 
 * 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_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":212
 *     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":199
 *     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":200
 * 
 * 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_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":212
 *     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":199
 *     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":214
 *     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":216
 * 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":214
 *     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":218
 *         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":214
 *     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":218
 *         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":214
 *     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":218
 *         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":214
 *     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":218
 *         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":214
 *     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":218
 *         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":214
 *     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":218
 *         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":214
 *     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":218
 *         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":214
 *     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":218
 *         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":214
 *     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":218
 *         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":214
 *     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":218
 *         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":214
 *     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":245
 *     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":246
 * 
 * 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":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
 *     self.ob_mpi = arg.ob_mpi
*/
  __pyx_v_self->flags = (__pyx_v_self->flags | PyMPI_FLAGS_READY);

  /* "src/mpi4py/MPI.src/objmodel.pxi":248
 *     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":249
 *     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
 *     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":245
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":246
 * 
 * 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":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
 *     self.ob_mpi = arg.ob_mpi
*/
  __pyx_v_self->flags = (__pyx_v_self->flags | PyMPI_FLAGS_READY);

  /* "src/mpi4py/MPI.src/objmodel.pxi":248
 *     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":249
 *     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":251
 *     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":258
 *     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":245
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":246
 * 
 * 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":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
 *     self.ob_mpi = arg.ob_mpi
*/
  __pyx_v_self->flags = (__pyx_v_self->flags | PyMPI_FLAGS_READY);

  /* "src/mpi4py/MPI.src/objmodel.pxi":248
 *     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":249
 *     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":253
 *         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":258
 *     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":245
 *     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":246
 * 
 * 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":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
 *     self.ob_mpi = arg.ob_mpi
*/
  __pyx_v_self->flags = (__pyx_v_self->flags | PyMPI_FLAGS_READY);

  /* "src/mpi4py/MPI.src/objmodel.pxi":248
 *     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":249
 *     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":255
 *         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(11, 255, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":258
 *     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":245
 *     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":246
 * 
 * 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":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
 *     self.ob_mpi = arg.ob_mpi
*/
  __pyx_v_self->flags = (__pyx_v_self->flags | PyMPI_FLAGS_READY);

  /* "src/mpi4py/MPI.src/objmodel.pxi":248
 *     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":249
 *     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
 *     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":245
 *     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":246
 * 
 * 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":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
 *     self.ob_mpi = arg.ob_mpi
*/
  __pyx_v_self->flags = (__pyx_v_self->flags | PyMPI_FLAGS_READY);

  /* "src/mpi4py/MPI.src/objmodel.pxi":248
 *     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":249
 *     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
 *     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":245
 *     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":246
 * 
 * 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":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
 *     self.ob_mpi = arg.ob_mpi
*/
  __pyx_v_self->flags = (__pyx_v_self->flags | PyMPI_FLAGS_READY);

  /* "src/mpi4py/MPI.src/objmodel.pxi":248
 *     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":249
 *     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
 *     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":245
 *     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":246
 * 
 * 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":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
 *     self.ob_mpi = arg.ob_mpi
*/
  __pyx_v_self->flags = (__pyx_v_self->flags | PyMPI_FLAGS_READY);

  /* "src/mpi4py/MPI.src/objmodel.pxi":248
 *     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":249
 *     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
 *     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":245
 *     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":246
 * 
 * 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":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
 *     self.ob_mpi = arg.ob_mpi
*/
  __pyx_v_self->flags = (__pyx_v_self->flags | PyMPI_FLAGS_READY);

  /* "src/mpi4py/MPI.src/objmodel.pxi":248
 *     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":249
 *     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
 *     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":245
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":246
 * 
 * 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":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
 *     self.ob_mpi = arg.ob_mpi
*/
  __pyx_v_self->flags = (__pyx_v_self->flags | PyMPI_FLAGS_READY);

  /* "src/mpi4py/MPI.src/objmodel.pxi":248
 *     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":249
 *     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":257
 *         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":258
 *     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":245
 *     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":246
 * 
 * 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":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
 *     self.ob_mpi = arg.ob_mpi
*/
  __pyx_v_self->flags = (__pyx_v_self->flags | PyMPI_FLAGS_READY);

  /* "src/mpi4py/MPI.src/objmodel.pxi":248
 *     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":249
 *     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
 *     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":245
 *     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":260
 *     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":261
 * 
 * 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":262
 * 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":261
 * 
 * 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":263
 *     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":260
 *     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":266
 * 
 * 
 * @cython.linetrace(False)             # <<<<<<<<<<<<<<
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): 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":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
 *     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":269
 * 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":271
 *     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(11, 271, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":272
 *     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":266
 * 
 * 
 * @cython.linetrace(False)             # <<<<<<<<<<<<<<
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): 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":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
 *     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":269
 * 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 PyMPIClass is Datatype:
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":266
 * 
 * 
 * @cython.linetrace(False)             # <<<<<<<<<<<<<<
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): 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":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
 *     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":269
 * 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 PyMPIClass is Datatype:
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":266
 * 
 * 
 * @cython.linetrace(False)             # <<<<<<<<<<<<<<
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): 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":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
 *     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":269
 * 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 PyMPIClass is Datatype:
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":266
 * 
 * 
 * @cython.linetrace(False)             # <<<<<<<<<<<<<<
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): 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":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
 *     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":269
 * 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 PyMPIClass is Datatype:
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":266
 * 
 * 
 * @cython.linetrace(False)             # <<<<<<<<<<<<<<
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): 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":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
 *     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":269
 * 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 PyMPIClass is Datatype:
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":266
 * 
 * 
 * @cython.linetrace(False)             # <<<<<<<<<<<<<<
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): 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":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
 *     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":269
 * 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 PyMPIClass is Datatype:
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":266
 * 
 * 
 * @cython.linetrace(False)             # <<<<<<<<<<<<<<
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): 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":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
 *     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":269
 * 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 PyMPIClass is Datatype:
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":266
 * 
 * 
 * @cython.linetrace(False)             # <<<<<<<<<<<<<<
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): 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":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
 *     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":269
 * 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 PyMPIClass is Datatype:
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":266
 * 
 * 
 * @cython.linetrace(False)             # <<<<<<<<<<<<<<
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): 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":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
 *     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":269
 * 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 PyMPIClass is Datatype:
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":266
 * 
 * 
 * @cython.linetrace(False)             # <<<<<<<<<<<<<<
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): 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":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
 *     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":269
 * 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 PyMPIClass is Datatype:
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":266
 * 
 * 
 * @cython.linetrace(False)             # <<<<<<<<<<<<<<
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): return 0
*/

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

/* "src/mpi4py/MPI.src/objmodel.pxi":275
 * 
 * 
 * @cython.linetrace(False)             # <<<<<<<<<<<<<<
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): 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":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
 *     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":278
 * 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":279
 *     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(11, 279, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":280
 *     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":282
 *     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":283
 * 
 *     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":284
 *     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(((PyObject *)(((PyTypeObject*)PyExc_RuntimeWarning))), 1, ((char *)"collecting object with %.200U handle %p"), ((PyObject *)__pyx_mstate_global->__pyx_n_u_MPI_Datatype), ((void *)((Py_uintptr_t)__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 284, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":275
 * 
 * 
 * @cython.linetrace(False)             # <<<<<<<<<<<<<<
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): 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":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
 *     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":278
 * 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":279
 *     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(11, 279, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":280
 *     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":282
 *     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":283
 * 
 *     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":284
 *     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(((PyObject *)(((PyTypeObject*)PyExc_RuntimeWarning))), 1, ((char *)"collecting object with %.200U handle %p"), ((PyObject *)__pyx_mstate_global->__pyx_n_u_MPI_Request), ((void *)((Py_uintptr_t)__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 284, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":275
 * 
 * 
 * @cython.linetrace(False)             # <<<<<<<<<<<<<<
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): 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":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
 *     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":278
 * 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":279
 *     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(11, 279, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":280
 *     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":282
 *     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":283
 * 
 *     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":284
 *     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(((PyObject *)(((PyTypeObject*)PyExc_RuntimeWarning))), 1, ((char *)"collecting object with %.200U handle %p"), ((PyObject *)__pyx_mstate_global->__pyx_n_u_MPI_Message), ((void *)((Py_uintptr_t)__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 284, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":275
 * 
 * 
 * @cython.linetrace(False)             # <<<<<<<<<<<<<<
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): 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":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
 *     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":278
 * 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":279
 *     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(11, 279, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":280
 *     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":282
 *     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":283
 * 
 *     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":284
 *     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(((PyObject *)(((PyTypeObject*)PyExc_RuntimeWarning))), 1, ((char *)"collecting object with %.200U handle %p"), ((PyObject *)__pyx_mstate_global->__pyx_n_u_MPI_Op), ((void *)((Py_uintptr_t)__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 284, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":275
 * 
 * 
 * @cython.linetrace(False)             # <<<<<<<<<<<<<<
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): 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":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
 *     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":278
 * 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":279
 *     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(11, 279, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":280
 *     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":282
 *     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":283
 * 
 *     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":284
 *     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(((PyObject *)(((PyTypeObject*)PyExc_RuntimeWarning))), 1, ((char *)"collecting object with %.200U handle %p"), ((PyObject *)__pyx_mstate_global->__pyx_n_u_MPI_Group), ((void *)((Py_uintptr_t)__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 284, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":275
 * 
 * 
 * @cython.linetrace(False)             # <<<<<<<<<<<<<<
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): 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":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
 *     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":278
 * 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":279
 *     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(11, 279, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":280
 *     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":282
 *     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":283
 * 
 *     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":284
 *     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(((PyObject *)(((PyTypeObject*)PyExc_RuntimeWarning))), 1, ((char *)"collecting object with %.200U handle %p"), ((PyObject *)__pyx_mstate_global->__pyx_n_u_MPI_Info), ((void *)((Py_uintptr_t)__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 284, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":275
 * 
 * 
 * @cython.linetrace(False)             # <<<<<<<<<<<<<<
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): 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":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
 *     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":278
 * 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":279
 *     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(11, 279, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":280
 *     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":282
 *     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":283
 * 
 *     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":284
 *     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(((PyObject *)(((PyTypeObject*)PyExc_RuntimeWarning))), 1, ((char *)"collecting object with %.200U handle %p"), ((PyObject *)__pyx_mstate_global->__pyx_n_u_MPI_Errhandler), ((void *)((Py_uintptr_t)__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 284, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":275
 * 
 * 
 * @cython.linetrace(False)             # <<<<<<<<<<<<<<
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): 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":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
 *     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":278
 * 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":279
 *     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(11, 279, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":280
 *     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":282
 *     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":283
 * 
 *     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":284
 *     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(((PyObject *)(((PyTypeObject*)PyExc_RuntimeWarning))), 1, ((char *)"collecting object with %.200U handle %p"), ((PyObject *)__pyx_mstate_global->__pyx_n_u_MPI_Session), ((void *)((Py_uintptr_t)__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 284, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":275
 * 
 * 
 * @cython.linetrace(False)             # <<<<<<<<<<<<<<
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): 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":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
 *     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":278
 * 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":279
 *     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(11, 279, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":280
 *     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":282
 *     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":283
 * 
 *     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":284
 *     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(((PyObject *)(((PyTypeObject*)PyExc_RuntimeWarning))), 1, ((char *)"collecting object with %.200U handle %p"), ((PyObject *)__pyx_mstate_global->__pyx_n_u_MPI_Comm), ((void *)((Py_uintptr_t)__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 284, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":275
 * 
 * 
 * @cython.linetrace(False)             # <<<<<<<<<<<<<<
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): 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":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
 *     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":278
 * 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":279
 *     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(11, 279, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":280
 *     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":282
 *     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":283
 * 
 *     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":284
 *     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(((PyObject *)(((PyTypeObject*)PyExc_RuntimeWarning))), 1, ((char *)"collecting object with %.200U handle %p"), ((PyObject *)__pyx_mstate_global->__pyx_n_u_MPI_Win), ((void *)((Py_uintptr_t)__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 284, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":275
 * 
 * 
 * @cython.linetrace(False)             # <<<<<<<<<<<<<<
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): 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":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
 *     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":278
 * 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":279
 *     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(11, 279, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":280
 *     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":282
 *     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":283
 * 
 *     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":284
 *     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(((PyObject *)(((PyTypeObject*)PyExc_RuntimeWarning))), 1, ((char *)"collecting object with %.200U handle %p"), ((PyObject *)__pyx_mstate_global->__pyx_n_u_MPI_File), ((void *)((Py_uintptr_t)__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 284, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":275
 * 
 * 
 * @cython.linetrace(False)             # <<<<<<<<<<<<<<
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): 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":299
 *     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;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6[5];
  PyObject *__pyx_t_7 = NULL;
  size_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_0richcmp", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":300
 * 
 * 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(11, 300, __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":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__
 *     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(11, 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
 *     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_mstate_global->__pyx_n_u_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 302, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 302, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":303
 *     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_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 303, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":304
 *     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_3 = NULL;
  __pyx_t_4 = __Pyx_PyUnicode_Unicode(__pyx_v_mod); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_cls); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u_unorderable_type;
  __pyx_t_6[1] = __pyx_t_4;
  __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u__2;
  __pyx_t_6[3] = __pyx_t_5;
  __pyx_t_6[4] = __pyx_mstate_global->__pyx_kp_u__5;
  __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_6, 5, 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 1 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5));
  if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_8 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_7};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 304, __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(11, 304, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":299
 *     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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __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;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6[5];
  PyObject *__pyx_t_7 = NULL;
  size_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_1richcmp", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":300
 * 
 * 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(11, 300, __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":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__
 *     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(11, 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
 *     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_mstate_global->__pyx_n_u_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 302, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 302, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":303
 *     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_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 303, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":304
 *     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_3 = NULL;
  __pyx_t_4 = __Pyx_PyUnicode_Unicode(__pyx_v_mod); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_cls); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u_unorderable_type;
  __pyx_t_6[1] = __pyx_t_4;
  __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u__2;
  __pyx_t_6[3] = __pyx_t_5;
  __pyx_t_6[4] = __pyx_mstate_global->__pyx_kp_u__5;
  __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_6, 5, 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 1 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5));
  if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_8 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_7};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 304, __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(11, 304, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":299
 *     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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __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;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6[5];
  PyObject *__pyx_t_7 = NULL;
  size_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_2richcmp", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":300
 * 
 * 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(11, 300, __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":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__
 *     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(11, 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
 *     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_mstate_global->__pyx_n_u_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 302, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 302, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":303
 *     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_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 303, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":304
 *     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_3 = NULL;
  __pyx_t_4 = __Pyx_PyUnicode_Unicode(__pyx_v_mod); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_cls); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u_unorderable_type;
  __pyx_t_6[1] = __pyx_t_4;
  __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u__2;
  __pyx_t_6[3] = __pyx_t_5;
  __pyx_t_6[4] = __pyx_mstate_global->__pyx_kp_u__5;
  __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_6, 5, 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 1 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5));
  if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_8 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_7};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 304, __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(11, 304, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":299
 *     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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __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;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6[5];
  PyObject *__pyx_t_7 = NULL;
  size_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_3richcmp", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":300
 * 
 * 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(11, 300, __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":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__
 *     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(11, 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
 *     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_mstate_global->__pyx_n_u_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 302, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 302, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":303
 *     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_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 303, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":304
 *     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_3 = NULL;
  __pyx_t_4 = __Pyx_PyUnicode_Unicode(__pyx_v_mod); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_cls); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u_unorderable_type;
  __pyx_t_6[1] = __pyx_t_4;
  __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u__2;
  __pyx_t_6[3] = __pyx_t_5;
  __pyx_t_6[4] = __pyx_mstate_global->__pyx_kp_u__5;
  __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_6, 5, 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 1 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5));
  if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_8 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_7};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 304, __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(11, 304, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":299
 *     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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __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;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6[5];
  PyObject *__pyx_t_7 = NULL;
  size_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_4richcmp", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":300
 * 
 * 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(11, 300, __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":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__
 *     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(11, 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
 *     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_mstate_global->__pyx_n_u_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 302, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 302, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":303
 *     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_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 303, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":304
 *     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_3 = NULL;
  __pyx_t_4 = __Pyx_PyUnicode_Unicode(__pyx_v_mod); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_cls); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u_unorderable_type;
  __pyx_t_6[1] = __pyx_t_4;
  __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u__2;
  __pyx_t_6[3] = __pyx_t_5;
  __pyx_t_6[4] = __pyx_mstate_global->__pyx_kp_u__5;
  __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_6, 5, 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 1 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5));
  if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_8 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_7};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 304, __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(11, 304, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":299
 *     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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __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;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6[5];
  PyObject *__pyx_t_7 = NULL;
  size_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_5richcmp", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":300
 * 
 * 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(11, 300, __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":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__
 *     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(11, 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
 *     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_mstate_global->__pyx_n_u_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 302, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 302, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":303
 *     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_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 303, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":304
 *     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_3 = NULL;
  __pyx_t_4 = __Pyx_PyUnicode_Unicode(__pyx_v_mod); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_cls); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u_unorderable_type;
  __pyx_t_6[1] = __pyx_t_4;
  __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u__2;
  __pyx_t_6[3] = __pyx_t_5;
  __pyx_t_6[4] = __pyx_mstate_global->__pyx_kp_u__5;
  __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_6, 5, 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 1 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5));
  if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_8 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_7};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 304, __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(11, 304, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":299
 *     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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __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;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6[5];
  PyObject *__pyx_t_7 = NULL;
  size_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_6richcmp", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":300
 * 
 * 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(11, 300, __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":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__
 *     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(11, 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
 *     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_mstate_global->__pyx_n_u_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 302, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 302, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":303
 *     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_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 303, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":304
 *     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_3 = NULL;
  __pyx_t_4 = __Pyx_PyUnicode_Unicode(__pyx_v_mod); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_cls); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u_unorderable_type;
  __pyx_t_6[1] = __pyx_t_4;
  __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u__2;
  __pyx_t_6[3] = __pyx_t_5;
  __pyx_t_6[4] = __pyx_mstate_global->__pyx_kp_u__5;
  __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_6, 5, 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 1 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5));
  if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_8 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_7};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 304, __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(11, 304, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":299
 *     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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __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;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6[5];
  PyObject *__pyx_t_7 = NULL;
  size_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_7richcmp", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":300
 * 
 * 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(11, 300, __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":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__
 *     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(11, 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
 *     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_mstate_global->__pyx_n_u_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 302, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 302, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":303
 *     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_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 303, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":304
 *     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_3 = NULL;
  __pyx_t_4 = __Pyx_PyUnicode_Unicode(__pyx_v_mod); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_cls); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u_unorderable_type;
  __pyx_t_6[1] = __pyx_t_4;
  __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u__2;
  __pyx_t_6[3] = __pyx_t_5;
  __pyx_t_6[4] = __pyx_mstate_global->__pyx_kp_u__5;
  __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_6, 5, 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 1 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5));
  if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_8 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_7};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 304, __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(11, 304, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":299
 *     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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __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;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6[5];
  PyObject *__pyx_t_7 = NULL;
  size_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_8richcmp", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":300
 * 
 * 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(11, 300, __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":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__
 *     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(11, 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
 *     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_mstate_global->__pyx_n_u_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 302, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 302, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":303
 *     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_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 303, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":304
 *     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_3 = NULL;
  __pyx_t_4 = __Pyx_PyUnicode_Unicode(__pyx_v_mod); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_cls); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u_unorderable_type;
  __pyx_t_6[1] = __pyx_t_4;
  __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u__2;
  __pyx_t_6[3] = __pyx_t_5;
  __pyx_t_6[4] = __pyx_mstate_global->__pyx_kp_u__5;
  __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_6, 5, 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 1 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5));
  if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_8 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_7};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 304, __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(11, 304, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":299
 *     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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __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;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6[5];
  PyObject *__pyx_t_7 = NULL;
  size_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_9richcmp", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":300
 * 
 * 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(11, 300, __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":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__
 *     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(11, 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
 *     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_mstate_global->__pyx_n_u_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 302, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 302, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":303
 *     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_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 303, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":304
 *     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_3 = NULL;
  __pyx_t_4 = __Pyx_PyUnicode_Unicode(__pyx_v_mod); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_cls); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u_unorderable_type;
  __pyx_t_6[1] = __pyx_t_4;
  __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u__2;
  __pyx_t_6[3] = __pyx_t_5;
  __pyx_t_6[4] = __pyx_mstate_global->__pyx_kp_u__5;
  __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_6, 5, 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 1 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5));
  if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_8 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_7};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 304, __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(11, 304, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":299
 *     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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __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;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6[5];
  PyObject *__pyx_t_7 = NULL;
  size_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_10richcmp", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":300
 * 
 * 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(11, 300, __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":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__
 *     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(11, 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
 *     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_mstate_global->__pyx_n_u_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 302, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 302, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":303
 *     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_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 303, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":304
 *     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_3 = NULL;
  __pyx_t_4 = __Pyx_PyUnicode_Unicode(__pyx_v_mod); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_cls); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u_unorderable_type;
  __pyx_t_6[1] = __pyx_t_4;
  __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u__2;
  __pyx_t_6[3] = __pyx_t_5;
  __pyx_t_6[4] = __pyx_mstate_global->__pyx_kp_u__5;
  __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_6, 5, 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 1 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5));
  if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_8 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_7};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 304, __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(11, 304, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":299
 *     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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __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":306
 *     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":307
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:
 *     return self.ob_mpi != mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 * cdef inline int constobj(PyMPIClass self) noexcept nogil:
*/
  __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":306
 *     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":307
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:
 *     return self.ob_mpi != mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 * cdef inline int constobj(PyMPIClass self) noexcept nogil:
*/
  __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":306
 *     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":307
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:
 *     return self.ob_mpi != mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 * cdef inline int constobj(PyMPIClass self) noexcept nogil:
*/
  __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":306
 *     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":307
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:
 *     return self.ob_mpi != mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 * cdef inline int constobj(PyMPIClass self) noexcept nogil:
*/
  __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":306
 *     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":307
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:
 *     return self.ob_mpi != mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 * cdef inline int constobj(PyMPIClass self) noexcept nogil:
*/
  __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":306
 *     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":307
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:
 *     return self.ob_mpi != mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 * cdef inline int constobj(PyMPIClass self) noexcept nogil:
*/
  __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":306
 *     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":307
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:
 *     return self.ob_mpi != mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 * cdef inline int constobj(PyMPIClass self) noexcept nogil:
*/
  __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":306
 *     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":307
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:
 *     return self.ob_mpi != mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 * cdef inline int constobj(PyMPIClass self) noexcept nogil:
*/
  __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":306
 *     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":307
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:
 *     return self.ob_mpi != mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 * cdef inline int constobj(PyMPIClass self) noexcept nogil:
*/
  __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":306
 *     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":307
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:
 *     return self.ob_mpi != mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 * cdef inline int constobj(PyMPIClass self) noexcept nogil:
*/
  __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":306
 *     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":307
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:
 *     return self.ob_mpi != mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 * cdef inline int constobj(PyMPIClass self) noexcept nogil:
*/
  __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":306
 *     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":309
 *     return self.ob_mpi != mpinull(self.ob_mpi)
 * 
 * cdef inline int constobj(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return self.flags & PyMPI_FLAGS_CONST
 * 
*/

static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_constobj(struct PyMPIDatatypeObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":310
 * 
 * cdef inline int constobj(PyMPIClass self) noexcept nogil:
 *     return self.flags & PyMPI_FLAGS_CONST             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  __pyx_r = (__pyx_v_self->flags & PyMPI_FLAGS_CONST);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":309
 *     return self.ob_mpi != mpinull(self.ob_mpi)
 * 
 * cdef inline int constobj(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return self.flags & PyMPI_FLAGS_CONST
 * 
*/

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

static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_constobj(struct PyMPIRequestObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":310
 * 
 * cdef inline int constobj(PyMPIClass self) noexcept nogil:
 *     return self.flags & PyMPI_FLAGS_CONST             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  __pyx_r = (__pyx_v_self->flags & PyMPI_FLAGS_CONST);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":309
 *     return self.ob_mpi != mpinull(self.ob_mpi)
 * 
 * cdef inline int constobj(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return self.flags & PyMPI_FLAGS_CONST
 * 
*/

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

static CYTHON_INLINE int __pyx_fuse_3__pyx_f_6mpi4py_3MPI_constobj(struct PyMPIOpObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":310
 * 
 * cdef inline int constobj(PyMPIClass self) noexcept nogil:
 *     return self.flags & PyMPI_FLAGS_CONST             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  __pyx_r = (__pyx_v_self->flags & PyMPI_FLAGS_CONST);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":309
 *     return self.ob_mpi != mpinull(self.ob_mpi)
 * 
 * cdef inline int constobj(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return self.flags & PyMPI_FLAGS_CONST
 * 
*/

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

static CYTHON_INLINE int __pyx_fuse_4__pyx_f_6mpi4py_3MPI_constobj(struct PyMPIGroupObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":310
 * 
 * cdef inline int constobj(PyMPIClass self) noexcept nogil:
 *     return self.flags & PyMPI_FLAGS_CONST             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  __pyx_r = (__pyx_v_self->flags & PyMPI_FLAGS_CONST);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":309
 *     return self.ob_mpi != mpinull(self.ob_mpi)
 * 
 * cdef inline int constobj(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return self.flags & PyMPI_FLAGS_CONST
 * 
*/

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

static CYTHON_INLINE int __pyx_fuse_5__pyx_f_6mpi4py_3MPI_constobj(struct PyMPIInfoObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":310
 * 
 * cdef inline int constobj(PyMPIClass self) noexcept nogil:
 *     return self.flags & PyMPI_FLAGS_CONST             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  __pyx_r = (__pyx_v_self->flags & PyMPI_FLAGS_CONST);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":309
 *     return self.ob_mpi != mpinull(self.ob_mpi)
 * 
 * cdef inline int constobj(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return self.flags & PyMPI_FLAGS_CONST
 * 
*/

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

static CYTHON_INLINE int __pyx_fuse_6__pyx_f_6mpi4py_3MPI_constobj(struct PyMPIErrhandlerObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":310
 * 
 * cdef inline int constobj(PyMPIClass self) noexcept nogil:
 *     return self.flags & PyMPI_FLAGS_CONST             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  __pyx_r = (__pyx_v_self->flags & PyMPI_FLAGS_CONST);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":309
 *     return self.ob_mpi != mpinull(self.ob_mpi)
 * 
 * cdef inline int constobj(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return self.flags & PyMPI_FLAGS_CONST
 * 
*/

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

static CYTHON_INLINE int __pyx_fuse_7__pyx_f_6mpi4py_3MPI_constobj(struct PyMPISessionObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":310
 * 
 * cdef inline int constobj(PyMPIClass self) noexcept nogil:
 *     return self.flags & PyMPI_FLAGS_CONST             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  __pyx_r = (__pyx_v_self->flags & PyMPI_FLAGS_CONST);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":309
 *     return self.ob_mpi != mpinull(self.ob_mpi)
 * 
 * cdef inline int constobj(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return self.flags & PyMPI_FLAGS_CONST
 * 
*/

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

static CYTHON_INLINE int __pyx_fuse_8__pyx_f_6mpi4py_3MPI_constobj(struct PyMPICommObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":310
 * 
 * cdef inline int constobj(PyMPIClass self) noexcept nogil:
 *     return self.flags & PyMPI_FLAGS_CONST             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  __pyx_r = (__pyx_v_self->flags & PyMPI_FLAGS_CONST);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":309
 *     return self.ob_mpi != mpinull(self.ob_mpi)
 * 
 * cdef inline int constobj(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return self.flags & PyMPI_FLAGS_CONST
 * 
*/

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

static CYTHON_INLINE int __pyx_fuse_9__pyx_f_6mpi4py_3MPI_constobj(struct PyMPIWinObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":310
 * 
 * cdef inline int constobj(PyMPIClass self) noexcept nogil:
 *     return self.flags & PyMPI_FLAGS_CONST             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  __pyx_r = (__pyx_v_self->flags & PyMPI_FLAGS_CONST);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":309
 *     return self.ob_mpi != mpinull(self.ob_mpi)
 * 
 * cdef inline int constobj(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return self.flags & PyMPI_FLAGS_CONST
 * 
*/

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

static CYTHON_INLINE int __pyx_fuse_10__pyx_f_6mpi4py_3MPI_constobj(struct PyMPIFileObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":310
 * 
 * cdef inline int constobj(PyMPIClass self) noexcept nogil:
 *     return self.flags & PyMPI_FLAGS_CONST             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  __pyx_r = (__pyx_v_self->flags & PyMPI_FLAGS_CONST);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":309
 *     return self.ob_mpi != mpinull(self.ob_mpi)
 * 
 * cdef inline int constobj(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return self.flags & PyMPI_FLAGS_CONST
 * 
*/

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

/* "src/mpi4py/MPI.src/objmodel.pxi":316
 * 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":317
 * 
 * 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":318
 * 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
 *     <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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype);
  __Pyx_DECREF_SET(__pyx_v_result, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/objmodel.pxi":330
 *     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":316
 * 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":317
 * 
 * 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":318
 * 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
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request);
  __Pyx_DECREF_SET(__pyx_v_result, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/objmodel.pxi":330
 *     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":316
 * 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":317
 * 
 * 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":318
 * 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_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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message);
  __Pyx_DECREF_SET(__pyx_v_result, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message);

  /* "src/mpi4py/MPI.src/objmodel.pxi":330
 *     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":316
 * 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":317
 * 
 * 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":318
 * 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_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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op);
  __Pyx_DECREF_SET(__pyx_v_result, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op);

  /* "src/mpi4py/MPI.src/objmodel.pxi":330
 *     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":316
 * 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":317
 * 
 * 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":318
 * 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_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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group);
  __Pyx_DECREF_SET(__pyx_v_result, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group);

  /* "src/mpi4py/MPI.src/objmodel.pxi":330
 *     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":316
 * 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":317
 * 
 * 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":318
 * 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_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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info);
  __Pyx_DECREF_SET(__pyx_v_result, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info);

  /* "src/mpi4py/MPI.src/objmodel.pxi":330
 *     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":316
 * 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":317
 * 
 * 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":318
 * 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_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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler);
  __Pyx_DECREF_SET(__pyx_v_result, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler);

  /* "src/mpi4py/MPI.src/objmodel.pxi":330
 *     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":316
 * 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":317
 * 
 * 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":318
 * 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_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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session);
  __Pyx_DECREF_SET(__pyx_v_result, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session);

  /* "src/mpi4py/MPI.src/objmodel.pxi":330
 *     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":316
 * 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":317
 * 
 * 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":318
 * 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_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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm);
  __Pyx_DECREF_SET(__pyx_v_result, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/objmodel.pxi":330
 *     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":316
 * 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":317
 * 
 * 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":318
 * 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":328
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win);
  __Pyx_DECREF_SET(__pyx_v_result, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/objmodel.pxi":330
 *     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":316
 * 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":317
 * 
 * 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":318
 * 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":329
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_File);
  __Pyx_DECREF_SET(__pyx_v_result, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/objmodel.pxi":330
 *     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":316
 * 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":332
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":337
 *     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(11, 337, __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":338
 * ) 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(11, 338, __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(11, 338, __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(11, 338, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":339
 *     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_PyLong_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 339, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     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":341
 *     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(11, 341, __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(11, 341, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls), __pyx_t_1) < 0))) __PYX_ERR(11, 341, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     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":342
 *     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(11, 342, __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(11, 342, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":343
 *         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(11, 343, __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) != (0)) __PYX_ERR(11, 343, __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) != (0)) __PYX_ERR(11, 343, __pyx_L1_error);
    if (unlikely(__pyx_v_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(11, 343, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_registry, __pyx_v_key, __pyx_t_1) < 0))) __PYX_ERR(11, 343, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":342
 *     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":344
 *     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":332
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":337
 *     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(11, 337, __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":338
 * ) 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(11, 338, __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(11, 338, __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(11, 338, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":339
 *     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_PyLong_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 339, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     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":341
 *     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(11, 341, __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(11, 341, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls), __pyx_t_1) < 0))) __PYX_ERR(11, 341, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     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":342
 *     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(11, 342, __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(11, 342, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":343
 *         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(11, 343, __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) != (0)) __PYX_ERR(11, 343, __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) != (0)) __PYX_ERR(11, 343, __pyx_L1_error);
    if (unlikely(__pyx_v_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(11, 343, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_registry, __pyx_v_key, __pyx_t_1) < 0))) __PYX_ERR(11, 343, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":342
 *     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":344
 *     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":332
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":337
 *     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(11, 337, __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":338
 * ) 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(11, 338, __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(11, 338, __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(11, 338, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":339
 *     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_PyLong_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 339, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     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":341
 *     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(11, 341, __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(11, 341, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls), __pyx_t_1) < 0))) __PYX_ERR(11, 341, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     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":342
 *     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(11, 342, __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(11, 342, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":343
 *         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(11, 343, __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) != (0)) __PYX_ERR(11, 343, __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) != (0)) __PYX_ERR(11, 343, __pyx_L1_error);
    if (unlikely(__pyx_v_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(11, 343, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_registry, __pyx_v_key, __pyx_t_1) < 0))) __PYX_ERR(11, 343, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":342
 *     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":344
 *     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":332
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":337
 *     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(11, 337, __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":338
 * ) 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(11, 338, __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(11, 338, __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(11, 338, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":339
 *     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_PyLong_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 339, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     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":341
 *     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(11, 341, __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(11, 341, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls), __pyx_t_1) < 0))) __PYX_ERR(11, 341, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     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":342
 *     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(11, 342, __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(11, 342, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":343
 *         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(11, 343, __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) != (0)) __PYX_ERR(11, 343, __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) != (0)) __PYX_ERR(11, 343, __pyx_L1_error);
    if (unlikely(__pyx_v_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(11, 343, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_registry, __pyx_v_key, __pyx_t_1) < 0))) __PYX_ERR(11, 343, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":342
 *     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":344
 *     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":332
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":337
 *     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(11, 337, __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":338
 * ) 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(11, 338, __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(11, 338, __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(11, 338, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":339
 *     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_PyLong_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 339, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     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":341
 *     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(11, 341, __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(11, 341, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls), __pyx_t_1) < 0))) __PYX_ERR(11, 341, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     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":342
 *     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(11, 342, __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(11, 342, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":343
 *         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(11, 343, __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) != (0)) __PYX_ERR(11, 343, __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) != (0)) __PYX_ERR(11, 343, __pyx_L1_error);
    if (unlikely(__pyx_v_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(11, 343, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_registry, __pyx_v_key, __pyx_t_1) < 0))) __PYX_ERR(11, 343, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":342
 *     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":344
 *     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":332
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":337
 *     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(11, 337, __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":338
 * ) 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(11, 338, __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(11, 338, __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(11, 338, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":339
 *     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_PyLong_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 339, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     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":341
 *     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(11, 341, __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(11, 341, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls), __pyx_t_1) < 0))) __PYX_ERR(11, 341, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     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":342
 *     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(11, 342, __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(11, 342, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":343
 *         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(11, 343, __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) != (0)) __PYX_ERR(11, 343, __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) != (0)) __PYX_ERR(11, 343, __pyx_L1_error);
    if (unlikely(__pyx_v_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(11, 343, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_registry, __pyx_v_key, __pyx_t_1) < 0))) __PYX_ERR(11, 343, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":342
 *     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":344
 *     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":332
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":337
 *     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(11, 337, __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":338
 * ) 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(11, 338, __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(11, 338, __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(11, 338, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":339
 *     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_PyLong_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 339, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     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":341
 *     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(11, 341, __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(11, 341, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls), __pyx_t_1) < 0))) __PYX_ERR(11, 341, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     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":342
 *     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(11, 342, __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(11, 342, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":343
 *         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(11, 343, __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) != (0)) __PYX_ERR(11, 343, __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) != (0)) __PYX_ERR(11, 343, __pyx_L1_error);
    if (unlikely(__pyx_v_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(11, 343, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_registry, __pyx_v_key, __pyx_t_1) < 0))) __PYX_ERR(11, 343, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":342
 *     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":344
 *     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":332
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":337
 *     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(11, 337, __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":338
 * ) 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(11, 338, __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(11, 338, __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(11, 338, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":339
 *     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_PyLong_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 339, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     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":341
 *     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(11, 341, __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(11, 341, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls), __pyx_t_1) < 0))) __PYX_ERR(11, 341, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     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":342
 *     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(11, 342, __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(11, 342, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":343
 *         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(11, 343, __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) != (0)) __PYX_ERR(11, 343, __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) != (0)) __PYX_ERR(11, 343, __pyx_L1_error);
    if (unlikely(__pyx_v_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(11, 343, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_registry, __pyx_v_key, __pyx_t_1) < 0))) __PYX_ERR(11, 343, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":342
 *     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":344
 *     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":332
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":337
 *     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(11, 337, __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":338
 * ) 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(11, 338, __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(11, 338, __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(11, 338, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":339
 *     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_PyLong_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 339, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     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":341
 *     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(11, 341, __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(11, 341, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls), __pyx_t_1) < 0))) __PYX_ERR(11, 341, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     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":342
 *     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(11, 342, __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(11, 342, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":343
 *         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(11, 343, __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) != (0)) __PYX_ERR(11, 343, __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) != (0)) __PYX_ERR(11, 343, __pyx_L1_error);
    if (unlikely(__pyx_v_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(11, 343, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_registry, __pyx_v_key, __pyx_t_1) < 0))) __PYX_ERR(11, 343, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":342
 *     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":344
 *     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":332
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":337
 *     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(11, 337, __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":338
 * ) 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(11, 338, __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(11, 338, __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(11, 338, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":339
 *     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_PyLong_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 339, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     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":341
 *     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(11, 341, __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(11, 341, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls), __pyx_t_1) < 0))) __PYX_ERR(11, 341, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     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":342
 *     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(11, 342, __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(11, 342, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":343
 *         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(11, 343, __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) != (0)) __PYX_ERR(11, 343, __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) != (0)) __PYX_ERR(11, 343, __pyx_L1_error);
    if (unlikely(__pyx_v_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(11, 343, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_registry, __pyx_v_key, __pyx_t_1) < 0))) __PYX_ERR(11, 343, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":342
 *     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":344
 *     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":332
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":337
 *     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(11, 337, __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":338
 * ) 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(11, 338, __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(11, 338, __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(11, 338, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":339
 *     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_PyLong_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 339, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     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":341
 *     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(11, 341, __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(11, 341, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls), __pyx_t_1) < 0))) __PYX_ERR(11, 341, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     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":342
 *     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(11, 342, __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(11, 342, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":343
 *         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(11, 343, __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) != (0)) __PYX_ERR(11, 343, __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) != (0)) __PYX_ERR(11, 343, __pyx_L1_error);
    if (unlikely(__pyx_v_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(11, 343, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_registry, __pyx_v_key, __pyx_t_1) < 0))) __PYX_ERR(11, 343, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":342
 *     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":344
 *     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":332
 *     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":346
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":347
 * 
 * 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(11, 347, __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":348
 * 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(11, 348, __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(11, 348, __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(11, 348, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":349
 *     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_PyLong_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":350
 *     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(11, 350, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_registry, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 350, __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":346
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":347
 * 
 * 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(11, 347, __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":348
 * 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(11, 348, __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(11, 348, __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(11, 348, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":349
 *     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_PyLong_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":350
 *     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(11, 350, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_registry, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 350, __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":346
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":347
 * 
 * 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(11, 347, __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":348
 * 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(11, 348, __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(11, 348, __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(11, 348, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":349
 *     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_PyLong_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":350
 *     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(11, 350, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_registry, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 350, __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":346
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":347
 * 
 * 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(11, 347, __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":348
 * 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(11, 348, __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(11, 348, __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(11, 348, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":349
 *     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_PyLong_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":350
 *     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(11, 350, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_registry, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 350, __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":346
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":347
 * 
 * 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(11, 347, __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":348
 * 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(11, 348, __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(11, 348, __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(11, 348, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":349
 *     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_PyLong_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":350
 *     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(11, 350, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_registry, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 350, __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":346
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":347
 * 
 * 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(11, 347, __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":348
 * 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(11, 348, __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(11, 348, __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(11, 348, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":349
 *     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_PyLong_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":350
 *     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(11, 350, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_registry, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 350, __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":346
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":347
 * 
 * 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(11, 347, __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":348
 * 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(11, 348, __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(11, 348, __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(11, 348, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":349
 *     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_PyLong_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":350
 *     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(11, 350, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_registry, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 350, __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":346
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":347
 * 
 * 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(11, 347, __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":348
 * 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(11, 348, __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(11, 348, __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(11, 348, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":349
 *     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_PyLong_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":350
 *     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(11, 350, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_registry, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 350, __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":346
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":347
 * 
 * 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(11, 347, __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":348
 * 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(11, 348, __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(11, 348, __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(11, 348, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":349
 *     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_PyLong_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":350
 *     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(11, 350, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_registry, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 350, __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":346
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":347
 * 
 * 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(11, 347, __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":348
 * 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(11, 348, __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(11, 348, __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(11, 348, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":349
 *     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_PyLong_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":350
 *     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(11, 350, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_registry, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 350, __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":346
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":347
 * 
 * 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(11, 347, __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":348
 * 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(11, 348, __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(11, 348, __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(11, 348, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":349
 *     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_PyLong_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":350
 *     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(11, 350, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_registry, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 350, __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":346
 *     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":355
 * 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":357
 * 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(11, 357, __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(11, 357, __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_INCREF(__pyx_t_2);
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);
      __Pyx_INCREF(__pyx_t_3);
    } else {
      __pyx_t_2 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 357, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 357, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_3);
    }
    #else
    __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 357, __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(11, 357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __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(11, 357, __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(11, 357, __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":358
 *     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":359
 *     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(11, 359, __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)))) != (0)) __PYX_ERR(11, 359, __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) != (0)) __PYX_ERR(11, 359, __pyx_L1_error);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 359, __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__) != (0)) __PYX_ERR(11, 359, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1) != (0)) __PYX_ERR(11, 359, __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":355
 * 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":357
 * 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(11, 357, __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(11, 357, __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_INCREF(__pyx_t_2);
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);
      __Pyx_INCREF(__pyx_t_3);
    } else {
      __pyx_t_2 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 357, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 357, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_3);
    }
    #else
    __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 357, __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(11, 357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __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(11, 357, __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(11, 357, __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":358
 *     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":359
 *     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(11, 359, __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)))) != (0)) __PYX_ERR(11, 359, __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) != (0)) __PYX_ERR(11, 359, __pyx_L1_error);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 359, __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__) != (0)) __PYX_ERR(11, 359, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1) != (0)) __PYX_ERR(11, 359, __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":355
 * 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":357
 * 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(11, 357, __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(11, 357, __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_INCREF(__pyx_t_2);
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);
      __Pyx_INCREF(__pyx_t_3);
    } else {
      __pyx_t_2 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 357, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 357, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_3);
    }
    #else
    __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 357, __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(11, 357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __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(11, 357, __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(11, 357, __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":358
 *     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":359
 *     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(11, 359, __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)))) != (0)) __PYX_ERR(11, 359, __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) != (0)) __PYX_ERR(11, 359, __pyx_L1_error);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 359, __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__) != (0)) __PYX_ERR(11, 359, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1) != (0)) __PYX_ERR(11, 359, __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":355
 * 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":357
 * 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(11, 357, __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(11, 357, __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_INCREF(__pyx_t_2);
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);
      __Pyx_INCREF(__pyx_t_3);
    } else {
      __pyx_t_2 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 357, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 357, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_3);
    }
    #else
    __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 357, __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(11, 357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __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(11, 357, __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(11, 357, __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":358
 *     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":359
 *     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(11, 359, __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)))) != (0)) __PYX_ERR(11, 359, __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) != (0)) __PYX_ERR(11, 359, __pyx_L1_error);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 359, __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__) != (0)) __PYX_ERR(11, 359, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1) != (0)) __PYX_ERR(11, 359, __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":355
 * 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":357
 * 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(11, 357, __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(11, 357, __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_INCREF(__pyx_t_2);
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);
      __Pyx_INCREF(__pyx_t_3);
    } else {
      __pyx_t_2 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 357, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 357, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_3);
    }
    #else
    __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 357, __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(11, 357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __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(11, 357, __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(11, 357, __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":358
 *     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":359
 *     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(11, 359, __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)))) != (0)) __PYX_ERR(11, 359, __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) != (0)) __PYX_ERR(11, 359, __pyx_L1_error);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 359, __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__) != (0)) __PYX_ERR(11, 359, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1) != (0)) __PYX_ERR(11, 359, __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":355
 * 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":357
 * 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(11, 357, __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(11, 357, __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_INCREF(__pyx_t_2);
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);
      __Pyx_INCREF(__pyx_t_3);
    } else {
      __pyx_t_2 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 357, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 357, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_3);
    }
    #else
    __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 357, __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(11, 357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __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(11, 357, __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(11, 357, __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":358
 *     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":359
 *     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(11, 359, __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)))) != (0)) __PYX_ERR(11, 359, __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) != (0)) __PYX_ERR(11, 359, __pyx_L1_error);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 359, __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__) != (0)) __PYX_ERR(11, 359, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1) != (0)) __PYX_ERR(11, 359, __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":355
 * 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":357
 * 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(11, 357, __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(11, 357, __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_INCREF(__pyx_t_2);
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);
      __Pyx_INCREF(__pyx_t_3);
    } else {
      __pyx_t_2 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 357, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 357, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_3);
    }
    #else
    __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 357, __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(11, 357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __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(11, 357, __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(11, 357, __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":358
 *     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":359
 *     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(11, 359, __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)))) != (0)) __PYX_ERR(11, 359, __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) != (0)) __PYX_ERR(11, 359, __pyx_L1_error);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 359, __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__) != (0)) __PYX_ERR(11, 359, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1) != (0)) __PYX_ERR(11, 359, __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":355
 * 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":357
 * 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(11, 357, __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(11, 357, __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_INCREF(__pyx_t_2);
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);
      __Pyx_INCREF(__pyx_t_3);
    } else {
      __pyx_t_2 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 357, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 357, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_3);
    }
    #else
    __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 357, __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(11, 357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __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(11, 357, __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(11, 357, __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":358
 *     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":359
 *     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(11, 359, __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)))) != (0)) __PYX_ERR(11, 359, __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) != (0)) __PYX_ERR(11, 359, __pyx_L1_error);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 359, __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__) != (0)) __PYX_ERR(11, 359, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1) != (0)) __PYX_ERR(11, 359, __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":355
 * 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":357
 * 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(11, 357, __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(11, 357, __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_INCREF(__pyx_t_2);
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);
      __Pyx_INCREF(__pyx_t_3);
    } else {
      __pyx_t_2 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 357, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 357, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_3);
    }
    #else
    __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 357, __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(11, 357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __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(11, 357, __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(11, 357, __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":358
 *     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":359
 *     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(11, 359, __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)))) != (0)) __PYX_ERR(11, 359, __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) != (0)) __PYX_ERR(11, 359, __pyx_L1_error);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 359, __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__) != (0)) __PYX_ERR(11, 359, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1) != (0)) __PYX_ERR(11, 359, __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":355
 * 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":357
 * 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(11, 357, __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(11, 357, __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_INCREF(__pyx_t_2);
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);
      __Pyx_INCREF(__pyx_t_3);
    } else {
      __pyx_t_2 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 357, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 357, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_3);
    }
    #else
    __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 357, __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(11, 357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __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(11, 357, __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(11, 357, __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":358
 *     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":359
 *     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(11, 359, __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)))) != (0)) __PYX_ERR(11, 359, __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) != (0)) __PYX_ERR(11, 359, __pyx_L1_error);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 359, __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__) != (0)) __PYX_ERR(11, 359, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1) != (0)) __PYX_ERR(11, 359, __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":355
 * 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":357
 * 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(11, 357, __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(11, 357, __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_INCREF(__pyx_t_2);
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);
      __Pyx_INCREF(__pyx_t_3);
    } else {
      __pyx_t_2 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 357, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 357, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_3);
    }
    #else
    __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 357, __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(11, 357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __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(11, 357, __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(11, 357, __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":358
 *     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":359
 *     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(11, 359, __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)))) != (0)) __PYX_ERR(11, 359, __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) != (0)) __PYX_ERR(11, 359, __pyx_L1_error);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 359, __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__) != (0)) __PYX_ERR(11, 359, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1) != (0)) __PYX_ERR(11, 359, __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":355
 * 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":361
 *     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;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6[5];
  PyObject *__pyx_t_7 = NULL;
  size_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_1reduce_default", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":362
 * 
 * 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":363
 * 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(11, 363, __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":362
 * 
 * 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":364
 *     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_mstate_global->__pyx_n_u_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 364, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":365
 *         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_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 365, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 365, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":366
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 *     raise ValueError(f"cannot serialize '{mod}.{cls}' instance")             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  __pyx_t_3 = NULL;
  __pyx_t_4 = __Pyx_PyUnicode_Unicode(__pyx_v_mod); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_cls); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u_cannot_serialize;
  __pyx_t_6[1] = __pyx_t_4;
  __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u__2;
  __pyx_t_6[3] = __pyx_t_5;
  __pyx_t_6[4] = __pyx_mstate_global->__pyx_kp_u_instance;
  __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_6, 5, 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 10, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5));
  if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_8 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_7};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 366, __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(11, 366, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":361
 *     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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __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;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6[5];
  PyObject *__pyx_t_7 = NULL;
  size_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_2reduce_default", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":362
 * 
 * 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":363
 * 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(11, 363, __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":362
 * 
 * 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":364
 *     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_mstate_global->__pyx_n_u_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 364, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":365
 *         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_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 365, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 365, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":366
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 *     raise ValueError(f"cannot serialize '{mod}.{cls}' instance")             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  __pyx_t_3 = NULL;
  __pyx_t_4 = __Pyx_PyUnicode_Unicode(__pyx_v_mod); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_cls); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u_cannot_serialize;
  __pyx_t_6[1] = __pyx_t_4;
  __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u__2;
  __pyx_t_6[3] = __pyx_t_5;
  __pyx_t_6[4] = __pyx_mstate_global->__pyx_kp_u_instance;
  __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_6, 5, 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 10, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5));
  if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_8 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_7};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 366, __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(11, 366, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":361
 *     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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __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;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6[5];
  PyObject *__pyx_t_7 = NULL;
  size_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_4reduce_default", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":362
 * 
 * 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":363
 * 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(11, 363, __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":362
 * 
 * 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":364
 *     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_mstate_global->__pyx_n_u_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 364, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":365
 *         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_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 365, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 365, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":366
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 *     raise ValueError(f"cannot serialize '{mod}.{cls}' instance")             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  __pyx_t_3 = NULL;
  __pyx_t_4 = __Pyx_PyUnicode_Unicode(__pyx_v_mod); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_cls); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u_cannot_serialize;
  __pyx_t_6[1] = __pyx_t_4;
  __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u__2;
  __pyx_t_6[3] = __pyx_t_5;
  __pyx_t_6[4] = __pyx_mstate_global->__pyx_kp_u_instance;
  __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_6, 5, 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 10, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5));
  if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_8 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_7};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 366, __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(11, 366, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":361
 *     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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __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;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6[5];
  PyObject *__pyx_t_7 = NULL;
  size_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_6reduce_default", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":362
 * 
 * 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":363
 * 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(11, 363, __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":362
 * 
 * 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":364
 *     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_mstate_global->__pyx_n_u_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 364, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":365
 *         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_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 365, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 365, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":366
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 *     raise ValueError(f"cannot serialize '{mod}.{cls}' instance")             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  __pyx_t_3 = NULL;
  __pyx_t_4 = __Pyx_PyUnicode_Unicode(__pyx_v_mod); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_cls); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u_cannot_serialize;
  __pyx_t_6[1] = __pyx_t_4;
  __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u__2;
  __pyx_t_6[3] = __pyx_t_5;
  __pyx_t_6[4] = __pyx_mstate_global->__pyx_kp_u_instance;
  __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_6, 5, 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 10, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5));
  if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_8 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_7};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 366, __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(11, 366, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":361
 *     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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __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;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6[5];
  PyObject *__pyx_t_7 = NULL;
  size_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_7reduce_default", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":362
 * 
 * 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":363
 * 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(11, 363, __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":362
 * 
 * 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":364
 *     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_mstate_global->__pyx_n_u_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 364, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":365
 *         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_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 365, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 365, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":366
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 *     raise ValueError(f"cannot serialize '{mod}.{cls}' instance")             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  __pyx_t_3 = NULL;
  __pyx_t_4 = __Pyx_PyUnicode_Unicode(__pyx_v_mod); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_cls); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u_cannot_serialize;
  __pyx_t_6[1] = __pyx_t_4;
  __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u__2;
  __pyx_t_6[3] = __pyx_t_5;
  __pyx_t_6[4] = __pyx_mstate_global->__pyx_kp_u_instance;
  __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_6, 5, 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 10, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5));
  if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_8 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_7};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 366, __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(11, 366, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":361
 *     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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __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;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6[5];
  PyObject *__pyx_t_7 = NULL;
  size_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_8reduce_default", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":362
 * 
 * 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":363
 * 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(11, 363, __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":362
 * 
 * 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":364
 *     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_mstate_global->__pyx_n_u_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 364, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":365
 *         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_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 365, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 365, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":366
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 *     raise ValueError(f"cannot serialize '{mod}.{cls}' instance")             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  __pyx_t_3 = NULL;
  __pyx_t_4 = __Pyx_PyUnicode_Unicode(__pyx_v_mod); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_cls); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u_cannot_serialize;
  __pyx_t_6[1] = __pyx_t_4;
  __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u__2;
  __pyx_t_6[3] = __pyx_t_5;
  __pyx_t_6[4] = __pyx_mstate_global->__pyx_kp_u_instance;
  __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_6, 5, 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 10, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5));
  if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_8 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_7};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 366, __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(11, 366, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":361
 *     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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __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;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6[5];
  PyObject *__pyx_t_7 = NULL;
  size_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_9reduce_default", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":362
 * 
 * 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":363
 * 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(11, 363, __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":362
 * 
 * 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":364
 *     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_mstate_global->__pyx_n_u_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 364, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":365
 *         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_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 365, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 365, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":366
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 *     raise ValueError(f"cannot serialize '{mod}.{cls}' instance")             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  __pyx_t_3 = NULL;
  __pyx_t_4 = __Pyx_PyUnicode_Unicode(__pyx_v_mod); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_cls); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u_cannot_serialize;
  __pyx_t_6[1] = __pyx_t_4;
  __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u__2;
  __pyx_t_6[3] = __pyx_t_5;
  __pyx_t_6[4] = __pyx_mstate_global->__pyx_kp_u_instance;
  __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_6, 5, 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 10, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5));
  if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_8 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_7};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 366, __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(11, 366, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":361
 *     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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __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;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6[5];
  PyObject *__pyx_t_7 = NULL;
  size_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_10reduce_default", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":362
 * 
 * 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":363
 * 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(11, 363, __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":362
 * 
 * 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":364
 *     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_mstate_global->__pyx_n_u_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 364, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":365
 *         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_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 365, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(11, 365, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":366
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 *     raise ValueError(f"cannot serialize '{mod}.{cls}' instance")             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  __pyx_t_3 = NULL;
  __pyx_t_4 = __Pyx_PyUnicode_Unicode(__pyx_v_mod); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_cls); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u_cannot_serialize;
  __pyx_t_6[1] = __pyx_t_4;
  __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u__2;
  __pyx_t_6[3] = __pyx_t_5;
  __pyx_t_6[4] = __pyx_mstate_global->__pyx_kp_u_instance;
  __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_6, 5, 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 10, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5));
  if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_8 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_7};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 366, __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(11, 366, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":361
 *     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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __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":370
 * # -----------------------------------------------------------------------------
 * 
 * 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":371
 * 
 * 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":370
 * # -----------------------------------------------------------------------------
 * 
 * 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":371
 * 
 * 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":370
 * # -----------------------------------------------------------------------------
 * 
 * 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":371
 * 
 * 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":370
 * # -----------------------------------------------------------------------------
 * 
 * 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":371
 * 
 * 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":370
 * # -----------------------------------------------------------------------------
 * 
 * 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":371
 * 
 * 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":370
 * # -----------------------------------------------------------------------------
 * 
 * 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":371
 * 
 * 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":370
 * # -----------------------------------------------------------------------------
 * 
 * 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":371
 * 
 * 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":370
 * # -----------------------------------------------------------------------------
 * 
 * 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":371
 * 
 * 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":370
 * # -----------------------------------------------------------------------------
 * 
 * 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":371
 * 
 * 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":370
 * # -----------------------------------------------------------------------------
 * 
 * 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":371
 * 
 * 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":370
 * # -----------------------------------------------------------------------------
 * 
 * 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":371
 * 
 * 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":370
 * # -----------------------------------------------------------------------------
 * 
 * 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":373
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":374
 * 
 * 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
 * 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(11, 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":386
 *     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":373
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":374
 * 
 * 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
 *     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(11, 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":386
 *     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":373
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":374
 * 
 * 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_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(11, 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":386
 *     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":373
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":374
 * 
 * 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_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(11, 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":386
 *     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":373
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":374
 * 
 * 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_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(11, 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":386
 *     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":373
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":374
 * 
 * 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_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(11, 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":386
 *     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":373
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":374
 * 
 * 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_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(11, 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":386
 *     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":373
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":374
 * 
 * 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_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(11, 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":386
 *     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":373
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":374
 * 
 * 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_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(11, 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":386
 *     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":373
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":374
 * 
 * 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":384
 *     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(11, 384, __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":386
 *     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":373
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":374
 * 
 * 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":385
 *     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(11, 385, __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":386
 *     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":373
 *     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":390
 * # -----------------------------------------------------------------------------
 * 
 * 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":391
 * 
 * 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":392
 * 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":390
 * # -----------------------------------------------------------------------------
 * 
 * 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":391
 * 
 * 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":392
 * 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":390
 * # -----------------------------------------------------------------------------
 * 
 * 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":391
 * 
 * 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":392
 * 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":390
 * # -----------------------------------------------------------------------------
 * 
 * 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":391
 * 
 * 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":392
 * 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":390
 * # -----------------------------------------------------------------------------
 * 
 * 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":391
 * 
 * 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":392
 * 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":390
 * # -----------------------------------------------------------------------------
 * 
 * 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":391
 * 
 * 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":392
 * 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":390
 * # -----------------------------------------------------------------------------
 * 
 * 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":391
 * 
 * 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":392
 * 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":390
 * # -----------------------------------------------------------------------------
 * 
 * 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":391
 * 
 * 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":392
 * 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":390
 * # -----------------------------------------------------------------------------
 * 
 * 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":391
 * 
 * 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":392
 * 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":390
 * # -----------------------------------------------------------------------------
 * 
 * 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":391
 * 
 * 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":392
 * 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":390
 * # -----------------------------------------------------------------------------
 * 
 * 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":391
 * 
 * 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":392
 * 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":390
 * # -----------------------------------------------------------------------------
 * 
 * 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":394
 *     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;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_0callfree", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":396
 * 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":397
 *     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(11, 397, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":396
 * 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
 *             return nullify(self)
 *     if PyMPIClass is Datatype:
 *         self.Free()             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Request:
 *         self.Free()
*/
  __pyx_t_4 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Free, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 399, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":420
 *     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":394
 *     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_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;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_1callfree", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":396
 * 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":397
 *     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(11, 397, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":396
 * 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":401
 *         self.Free()
 *     if PyMPIClass is Request:
 *         self.Free()             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Message:
 *         pass
*/
  __pyx_t_4 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Free, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 401, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":420
 *     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":394
 *     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_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":396
 * 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":397
 *     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(11, 397, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":396
 * 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":420
 *     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":394
 *     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;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_3callfree", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":396
 * 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":397
 *     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(11, 397, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":396
 * 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
 *         pass
 *     if PyMPIClass is Op:
 *         self.Free()             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Group:
 *         self.Free()
*/
  __pyx_t_4 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Free, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 405, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":420
 *     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":394
 *     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_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;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_4callfree", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":396
 * 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":397
 *     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(11, 397, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":396
 * 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 Group:
 *         self.Free()             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Info:
 *         self.Free()
*/
  __pyx_t_4 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Free, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 407, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":420
 *     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":394
 *     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_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;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_5callfree", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":396
 * 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":397
 *     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(11, 397, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":396
 * 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":409
 *         self.Free()
 *     if PyMPIClass is Info:
 *         self.Free()             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Errhandler:
 *         self.Free()
*/
  __pyx_t_4 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Free, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 409, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":420
 *     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":394
 *     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_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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_6callfree", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":411
 *         self.Free()
 *     if PyMPIClass is Errhandler:
 *         self.Free()             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Session:
 *         self.Finalize()
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Free, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 411, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":420
 *     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":394
 *     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_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;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_7callfree", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":396
 * 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":397
 *     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(11, 397, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":396
 * 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.Free()
 *     if PyMPIClass is Session:
 *         self.Finalize()             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Comm:
 *         self.Free()
*/
  __pyx_t_4 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Finalize, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 413, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":420
 *     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":394
 *     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_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;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_8callfree", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":396
 * 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":397
 *     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(11, 397, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":396
 * 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.Finalize()
 *     if PyMPIClass is Comm:
 *         self.Free()             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Win:
 *         self.Free()
*/
  __pyx_t_4 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Free, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 415, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":420
 *     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":394
 *     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_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;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_9callfree", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":396
 * 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":397
 *     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(11, 397, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":396
 * 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 Win:
 *         self.Free()             # <<<<<<<<<<<<<<
 *     if PyMPIClass is File:
 *         self.Close()
*/
  __pyx_t_4 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Free, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 417, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":420
 *     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":394
 *     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_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;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_10callfree", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":396
 * 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":397
 *     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(11, 397, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":396
 * 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":419
 *         self.Free()
 *     if PyMPIClass is File:
 *         self.Close()             # <<<<<<<<<<<<<<
 *     return 0
 * 
*/
  __pyx_t_4 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Close, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 419, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":420
 *     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":394
 *     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_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":422
 *     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":424
 * 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":425
 *     # 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":424
 * 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":427
 *         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":428
 *     # 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":427
 *         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":438
 *         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":439
 *     # 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(11, 439, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":438
 *         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":441
 *         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(11, 441, __pyx_L1_error)
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":422
 *     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":424
 * 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":425
 *     # 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":424
 * 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":427
 *         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":428
 *     # 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":427
 *         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":438
 *         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":439
 *     # 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(11, 439, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":438
 *         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":441
 *         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(11, 441, __pyx_L1_error)
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":422
 *     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":424
 * 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":425
 *     # 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":424
 * 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":427
 *         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":428
 *     # 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":427
 *         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":438
 *         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":439
 *     # 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(11, 439, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":438
 *         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":441
 *         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(11, 441, __pyx_L1_error)
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":422
 *     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":424
 * 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":425
 *     # 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":424
 * 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":427
 *         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":428
 *     # 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":427
 *         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":438
 *         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":439
 *     # 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(11, 439, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":438
 *         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":441
 *         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(11, 441, __pyx_L1_error)
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":422
 *     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":424
 * 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":425
 *     # 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":424
 * 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":427
 *         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":428
 *     # 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":427
 *         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":438
 *         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":439
 *     # 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(11, 439, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":438
 *         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":441
 *         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(11, 441, __pyx_L1_error)
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":422
 *     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":424
 * 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":425
 *     # 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":424
 * 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":427
 *         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":428
 *     # 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":427
 *         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":435
 *         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":431
 *     # 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":436
 *         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(11, 436, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":431
 *     # 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":438
 *         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":439
 *     # 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(11, 439, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":438
 *         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":441
 *         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(11, 441, __pyx_L1_error)
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":422
 *     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":424
 * 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":425
 *     # 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":424
 * 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":427
 *         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":428
 *     # 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":427
 *         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":435
 *         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":431
 *     # 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":436
 *         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(11, 436, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":431
 *     # 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":438
 *         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":439
 *     # 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(11, 439, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":438
 *         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":441
 *         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(11, 441, __pyx_L1_error)
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":422
 *     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":424
 * 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":425
 *     # 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":424
 * 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":427
 *         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":428
 *     # 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":427
 *         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":435
 *         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":431
 *     # 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":436
 *         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(11, 436, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":431
 *     # 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":438
 *         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":439
 *     # 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(11, 439, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":438
 *         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":441
 *         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(11, 441, __pyx_L1_error)
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":422
 *     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":424
 * 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":425
 *     # 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":424
 * 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":427
 *         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":428
 *     # 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":427
 *         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":438
 *         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":439
 *     # 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(11, 439, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":438
 *         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":441
 *         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(11, 441, __pyx_L1_error)
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":422
 *     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":424
 * 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":425
 *     # 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":424
 * 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":427
 *         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":428
 *     # 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":427
 *         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":438
 *         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":439
 *     # 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(11, 439, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":438
 *         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":441
 *         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(11, 441, __pyx_L1_error)
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":422
 *     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":424
 * 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":425
 *     # 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":424
 * 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":427
 *         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":428
 *     # 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":427
 *         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":438
 *         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":439
 *     # 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(11, 439, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":438
 *         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":441
 *         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(11, 441, __pyx_L1_error)
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":422
 *     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":447
 * # 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":448
 * 
 * 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":449
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status)))) __PYX_ERR(11, 449, __pyx_L1_error)
  __pyx_r = (&((struct PyMPIStatusObject *)__pyx_v_status)->ob_mpi);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":447
 * # 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":455
 * # 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":456
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 456, __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":457
 * 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":458
 *     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":459
 *     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(11, 459, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":460
 *     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":455
 * # 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":462
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":463
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 463, __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":464
 * 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":465
 *     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":466
 *     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":465
 *     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":467
 *     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":462
 *     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":469
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":471
 * 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":472
 *     # 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(11, 472, __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":471
 * 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":475
 *     # 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(11, 475, __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_PyTuple_GET_SIZE(sequence);
    if (unlikely(size != 3)) {
      if (size > 3) __Pyx_RaiseTooManyValuesError(3);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(11, 475, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0);
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1);
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_5 = PyTuple_GET_ITEM(sequence, 2);
    __Pyx_INCREF(__pyx_t_5);
    #else
    __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 475, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 475, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 475, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    #endif
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else {
    __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(11, 475, __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":476
 *     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_mstate_global->__pyx_n_u_datatype_create); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 476, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 476, __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) != (0)) __PYX_ERR(11, 476, __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) != (0)) __PYX_ERR(11, 476, __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) != (0)) __PYX_ERR(11, 476, __pyx_L1_error);
  __Pyx_INCREF(Py_True);
  __Pyx_GIVEREF(Py_True);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 3, Py_True) != (0)) __PYX_ERR(11, 476, __pyx_L1_error);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 476, __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) != (0)) __PYX_ERR(11, 476, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_5);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5) != (0)) __PYX_ERR(11, 476, __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":469
 *     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":482
 * # 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":483
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 483, __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":484
 * 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":485
 *     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":486
 *     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(11, 486, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":487
 *     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":482
 * # 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":493
 * # 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":494
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 494, __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":495
 * 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":496
 *     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":497
 *     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(11, 497, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":498
 *     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":493
 * # 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":506
 * 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":507
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 507, __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":508
 * 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":509
 *     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":510
 *     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(11, 510, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":511
 *     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":506
 * 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":513
 *     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;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("reduce_Op", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":515
 * 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":516
 *     # 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(11, 516, __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":515
 * 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":518
 *         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":519
 *     # 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":520
 *     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_3 = NULL;
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_cannot_pickle_user_defined_reduc};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 520, __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(11, 520, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/objmodel.pxi":519
 *     # 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":521
 *     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(11, 521, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_6mpi4py_3MPI_op_user_registry, __pyx_v_index, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_function = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":522
 *         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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Is_commutative, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 522, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_v_commute = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":523
 *     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_mstate_global->__pyx_n_u_Create); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 523, __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) != (0)) __PYX_ERR(11, 523, __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) != (0)) __PYX_ERR(11, 523, __pyx_L1_error);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 523, __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) != (0)) __PYX_ERR(11, 523, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3) != (0)) __PYX_ERR(11, 523, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":513
 *     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_5);
  __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":529
 * # 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":530
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 530, __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":531
 * 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":532
 *     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":533
 *     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(11, 533, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":534
 *     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":529
 * # 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":540
 * # 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":541
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 541, __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":542
 * 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":543
 *     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":544
 *     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(11, 544, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":545
 *     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":540
 * # 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":551
 *     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":552
 * 
 * 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":553
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info)))) __PYX_ERR(11, 553, __pyx_L1_error)
  __pyx_r = ((struct PyMPIInfoObject *)__pyx_v_obj)->ob_mpi;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":551
 *     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":555
 *     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;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("reduce_Info", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":557
 * 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":558
 *     # 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(11, 558, __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":557
 * 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":560
 *         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_mstate_global->__pyx_n_u_Create); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 560, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_items, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 560, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 560, __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) != (0)) __PYX_ERR(11, 560, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 560, __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) != (0)) __PYX_ERR(11, 560, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4) != (0)) __PYX_ERR(11, 560, __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":555
 *     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_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":566
 * # 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":567
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 567, __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":568
 * 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":569
 *     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":570
 *     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(11, 570, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":571
 *     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":566
 * # 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":576
 *     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 MPI_Errhandler errhandler = options_get_errhandler()
*/

static CYTHON_INLINE MPI_Errhandler __pyx_f_6mpi4py_3MPI_arg_Errhandler(PyObject *__pyx_v_obj) {
  MPI_Errhandler __pyx_v_errhandler;
  MPI_Errhandler __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":577
 * 
 * cdef inline MPI_Errhandler arg_Errhandler(object obj) except? _errhandler_null:
 *     if obj is not None: return (<Errhandler?>obj).ob_mpi             # <<<<<<<<<<<<<<
 *     cdef MPI_Errhandler errhandler = options_get_errhandler()
 *     if errhandler == MPI_ERRHANDLER_NULL: errhandler = MPI_ERRORS_ARE_FATAL
*/
  __pyx_t_1 = (__pyx_v_obj != Py_None);
  if (__pyx_t_1) {
    if (!(likely(__Pyx_TypeTest(__pyx_v_obj, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler)))) __PYX_ERR(11, 577, __pyx_L1_error)
    __pyx_r = ((struct PyMPIErrhandlerObject *)__pyx_v_obj)->ob_mpi;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":578
 * cdef inline MPI_Errhandler arg_Errhandler(object obj) except? _errhandler_null:
 *     if obj is not None: return (<Errhandler?>obj).ob_mpi
 *     cdef MPI_Errhandler errhandler = options_get_errhandler()             # <<<<<<<<<<<<<<
 *     if errhandler == MPI_ERRHANDLER_NULL: errhandler = MPI_ERRORS_ARE_FATAL
 *     return errhandler
*/
  __pyx_v_errhandler = __pyx_f_6mpi4py_3MPI_options_get_errhandler();

  /* "src/mpi4py/MPI.src/objmodel.pxi":579
 *     if obj is not None: return (<Errhandler?>obj).ob_mpi
 *     cdef MPI_Errhandler errhandler = options_get_errhandler()
 *     if errhandler == MPI_ERRHANDLER_NULL: errhandler = MPI_ERRORS_ARE_FATAL             # <<<<<<<<<<<<<<
 *     return errhandler
 * 
*/
  __pyx_t_1 = (__pyx_v_errhandler == MPI_ERRHANDLER_NULL);
  if (__pyx_t_1) {
    __pyx_v_errhandler = MPI_ERRORS_ARE_FATAL;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":580
 *     cdef MPI_Errhandler errhandler = options_get_errhandler()
 *     if errhandler == MPI_ERRHANDLER_NULL: errhandler = MPI_ERRORS_ARE_FATAL
 *     return errhandler             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  __pyx_r = __pyx_v_errhandler;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":576
 *     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 MPI_Errhandler errhandler = options_get_errhandler()
*/

  /* 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":586
 * # 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":587
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 587, __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":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
 *     def_register(arg, obj, name)
*/
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "src/mpi4py/MPI.src/objmodel.pxi":589
 *     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":590
 *     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(11, 590, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":591
 *     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":586
 * # 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":597
 * # 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":598
 * 
 * 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":599
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm);
    __pyx_r = __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":598
 * 
 * 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":600
 *     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":601
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm);
    __pyx_r = __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":600
 *     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":602
 *     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":603
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm);
    __pyx_r = __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":602
 *     if arg == MPI_COMM_SELF:
 *         return Intracomm
 *     if arg == MPI_COMM_WORLD:             # <<<<<<<<<<<<<<
 *         return Intracomm
 *     cdef int inter = 0
*/
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":604
 *     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":605
 *         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(11, 605, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":606
 *     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":607
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intercomm);
    __pyx_r = __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intercomm;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":606
 *     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":608
 *     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":609
 *         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(11, 609, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":610
 *     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":611
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm);
    __pyx_r = __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":610
 *     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":612
 *     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":613
 *         return Intracomm
 *     if topo == MPI_CART:
 *         return Cartcomm             # <<<<<<<<<<<<<<
 *     if topo == MPI_GRAPH:
 *         return Graphcomm
*/
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Cartcomm);
    __pyx_r = __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Cartcomm;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":612
 *     if topo == MPI_UNDEFINED:
 *         return Intracomm
 *     if topo == MPI_CART:             # <<<<<<<<<<<<<<
 *         return Cartcomm
 *     if topo == MPI_GRAPH:
*/
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":614
 *     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":615
 *         return Cartcomm
 *     if topo == MPI_GRAPH:
 *         return Graphcomm             # <<<<<<<<<<<<<<
 *     if topo == MPI_DIST_GRAPH:
 *         return Distgraphcomm
*/
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Graphcomm);
    __pyx_r = __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Graphcomm;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":614
 *     if topo == MPI_CART:
 *         return Cartcomm
 *     if topo == MPI_GRAPH:             # <<<<<<<<<<<<<<
 *         return Graphcomm
 *     if topo == MPI_DIST_GRAPH:
*/
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":616
 *     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":617
 *         return Graphcomm
 *     if topo == MPI_DIST_GRAPH:
 *         return Distgraphcomm             # <<<<<<<<<<<<<<
 *     return Comm  # ~> unreachable
 * 
*/
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Distgraphcomm);
    __pyx_r = __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Distgraphcomm;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":616
 *     if topo == MPI_GRAPH:
 *         return Graphcomm
 *     if topo == MPI_DIST_GRAPH:             # <<<<<<<<<<<<<<
 *         return Distgraphcomm
 *     return Comm  # ~> unreachable
*/
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":618
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm);
  __pyx_r = __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":597
 * # 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":620
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":621
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 621, __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":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
 *     def_register(arg, obj, name)
*/
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "src/mpi4py/MPI.src/objmodel.pxi":623
 *     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":624
 *     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(11, 624, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":625
 *     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":620
 *     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":627
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":628
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 628, __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":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
 *     def_register(arg, obj, name)
*/
  __pyx_v_obj->__pyx_base.ob_mpi = __pyx_v_arg;

  /* "src/mpi4py/MPI.src/objmodel.pxi":630
 *     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":631
 *     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(11, 631, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":632
 *     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":627
 *     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":634
 *     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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":635
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intercomm), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 635, __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":636
 * 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":637
 *     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":638
 *     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":634
 *     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":644
 * # 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":645
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 645, __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":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
 *     def_register(arg, obj, name)
*/
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "src/mpi4py/MPI.src/objmodel.pxi":647
 *     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":648
 *     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(11, 648, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":649
 *     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":644
 * # 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":655
 * # 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", 0);

  /* "src/mpi4py/MPI.src/objmodel.pxi":656
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_File), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 656, __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":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
 *     def_register(arg, obj, name)
*/
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "src/mpi4py/MPI.src/objmodel.pxi":658
 *     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":659
 *     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(11, 659, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":660
 *     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":655
 * # 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_SIZE
  __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 ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_copy_fn,&__pyx_mstate_global->__pyx_n_u_delete_fn,&__pyx_mstate_global->__pyx_n_u_nopython,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(12, 20, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(12, 20, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(12, 20, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(12, 20, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < (0)) __PYX_ERR(12, 20, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, i); __PYX_ERR(12, 20, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(12, 20, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(12, 20, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(12, 20, __pyx_L3_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("__cinit__", 1, 3, 3, __pyx_nargs); __PYX_ERR(12, 20, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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;
  size_t __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(12, 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_t_3 = NULL;
  __Pyx_INCREF(__pyx_v_6mpi4py_3MPI_RLock);
  __pyx_t_4 = __pyx_v_6mpi4py_3MPI_RLock; 
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
    __pyx_t_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 28, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __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__", 0);
  __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__", 0);
  __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__", 0);
  __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__", 0);
  __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__", 0);
  __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__", 0);
  __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__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->nopython); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 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(12, 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;
  size_t __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", 0);

  /* "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(12, 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 = NULL;
    __Pyx_INCREF(__pyx_v_function);
    __pyx_t_3 = __pyx_v_function; 
    __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 67, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
      assert(__pyx_t_2);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_2, __pyx_v_handle, __pyx_t_4, __pyx_v_attrval};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_5, (4-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 67, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __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;
       __Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
      if ( 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;
      }
      __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;
  size_t __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", 0);

  /* "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(12, 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 = NULL;
    __Pyx_INCREF(__pyx_v_function);
    __pyx_t_3 = __pyx_v_function; 
    __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 67, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
      assert(__pyx_t_2);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_2, __pyx_v_handle, __pyx_t_4, __pyx_v_attrval};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_5, (4-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 67, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __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;
       __Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
      if ( 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;
      }
      __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;
  size_t __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", 0);

  /* "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(12, 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 = NULL;
    __Pyx_INCREF(__pyx_v_function);
    __pyx_t_3 = __pyx_v_function; 
    __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 67, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
      assert(__pyx_t_2);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_2, __pyx_v_handle, __pyx_t_4, __pyx_v_attrval};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_5, (4-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 67, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __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;
       __Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
      if ( 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;
      }
      __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", 0);

  /* "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 *)(((PyTypeObject*)PyExc_RuntimeError))), 0, 0, 0);
    __PYX_ERR(12, 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(12, 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(12, 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(12, 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", 0);

  /* "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 *)(((PyTypeObject*)PyExc_RuntimeError))), 0, 0, 0);
    __PYX_ERR(12, 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(12, 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(12, 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(12, 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", 0);

  /* "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 *)(((PyTypeObject*)PyExc_RuntimeError))), 0, 0, 0);
    __PYX_ERR(12, 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(12, 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(12, 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(12, 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", 0);

  /* "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 *)(((PyTypeObject*)PyExc_RuntimeError))), 0, 0, 0);
    __PYX_ERR(12, 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(12, 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(12, 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;
       __Pyx_ExceptionSwap(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
      if ( 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));
      }
      __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", 0);

  /* "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 *)(((PyTypeObject*)PyExc_RuntimeError))), 0, 0, 0);
    __PYX_ERR(12, 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(12, 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(12, 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;
       __Pyx_ExceptionSwap(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
      if ( 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));
      }
      __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", 0);

  /* "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 *)(((PyTypeObject*)PyExc_RuntimeError))), 0, 0, 0);
    __PYX_ERR(12, 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(12, 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(12, 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;
       __Pyx_ExceptionSwap(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
      if ( 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));
      }
      __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;
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  __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(12, 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(((PyObject *)(((PyTypeObject*)PyExc_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(12, 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();
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  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;
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  __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(12, 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(((PyObject *)(((PyTypeObject*)PyExc_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(12, 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();
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  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;
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  __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(12, 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(((PyObject *)(((PyTypeObject*)PyExc_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(12, 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();
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  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;
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  __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(12, 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(((PyObject *)(((PyTypeObject*)PyExc_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(12, 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();
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  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;
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  __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(12, 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(((PyObject *)(((PyTypeObject*)PyExc_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(12, 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();
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  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;
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  __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(12, 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(((PyObject *)(((PyTypeObject*)PyExc_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(12, 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();
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/attrimpl.pxi":168
 * 
 * 
 * @cython.callspec("MPIAPI")             # <<<<<<<<<<<<<<
 * cdef int PyMPI_attr_copy_fn(
 *     PyMPI_attr_type hdl,
*/

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":168
 * 
 * 
 * @cython.callspec("MPIAPI")             # <<<<<<<<<<<<<<
 * cdef int PyMPI_attr_copy_fn(
 *     PyMPI_attr_type hdl,
*/

  /* 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":168
 * 
 * 
 * @cython.callspec("MPIAPI")             # <<<<<<<<<<<<<<
 * cdef int PyMPI_attr_copy_fn(
 *     PyMPI_attr_type hdl,
*/

  /* 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":168
 * 
 * 
 * @cython.callspec("MPIAPI")             # <<<<<<<<<<<<<<
 * cdef int PyMPI_attr_copy_fn(
 *     PyMPI_attr_type hdl,
*/

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

/* "src/mpi4py/MPI.src/attrimpl.pxi":188
 * 
 * 
 * @cython.callspec("MPIAPI")             # <<<<<<<<<<<<<<
 * cdef int PyMPI_attr_delete_fn(
 *     PyMPI_attr_type hdl,
*/

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":188
 * 
 * 
 * @cython.callspec("MPIAPI")             # <<<<<<<<<<<<<<
 * cdef int PyMPI_attr_delete_fn(
 *     PyMPI_attr_type hdl,
*/

  /* 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":188
 * 
 * 
 * @cython.callspec("MPIAPI")             # <<<<<<<<<<<<<<
 * cdef int PyMPI_attr_delete_fn(
 *     PyMPI_attr_type hdl,
*/

  /* 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":188
 * 
 * 
 * @cython.callspec("MPIAPI")             # <<<<<<<<<<<<<<
 * cdef int PyMPI_attr_delete_fn(
 *     PyMPI_attr_type hdl,
*/

  /* 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;
  size_t __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", 0);

  /* "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_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 210, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = NULL;
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_keyval_lock_type, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 210, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 210, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __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(12, 211, __pyx_L7_error)
          }
          __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 211, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_2);
          __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_6mpi4py_3MPI_keyval_registry_type, __pyx_t_2, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 211, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_INCREF((PyObject *)((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_4));
          __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_4);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 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_4, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(12, 210, __pyx_L9_except_error)
          __Pyx_XGOTREF(__pyx_t_4);
          __Pyx_XGOTREF(__pyx_t_2);
          __Pyx_XGOTREF(__pyx_t_3);
          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_4, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(12, 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(12, 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(12, 210, __pyx_L9_except_error)
          __pyx_t_12 = (!__pyx_t_11);
          if (unlikely(__pyx_t_12)) {
            __Pyx_GIVEREF(__pyx_t_4);
            __Pyx_GIVEREF(__pyx_t_2);
            __Pyx_XGIVEREF(__pyx_t_3);
            __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_2, __pyx_t_3);
            __pyx_t_4 = 0;  __pyx_t_2 = 0;  __pyx_t_3 = 0; 
            __PYX_ERR(12, 210, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 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_mstate_global->__pyx_tuple[0], NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(12, 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_mstate_global->__pyx_tuple[1], NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(12, 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;
  size_t __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", 0);

  /* "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_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 213, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = NULL;
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_keyval_lock_comm, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 213, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 213, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __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(12, 214, __pyx_L7_error)
          }
          __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 214, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_2);
          __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_6mpi4py_3MPI_keyval_registry_comm, __pyx_t_2, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 214, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_INCREF((PyObject *)((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_4));
          __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_4);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 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_4, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(12, 213, __pyx_L9_except_error)
          __Pyx_XGOTREF(__pyx_t_4);
          __Pyx_XGOTREF(__pyx_t_2);
          __Pyx_XGOTREF(__pyx_t_3);
          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_4, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(12, 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(12, 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(12, 213, __pyx_L9_except_error)
          __pyx_t_12 = (!__pyx_t_11);
          if (unlikely(__pyx_t_12)) {
            __Pyx_GIVEREF(__pyx_t_4);
            __Pyx_GIVEREF(__pyx_t_2);
            __Pyx_XGIVEREF(__pyx_t_3);
            __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_2, __pyx_t_3);
            __pyx_t_4 = 0;  __pyx_t_2 = 0;  __pyx_t_3 = 0; 
            __PYX_ERR(12, 213, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 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_mstate_global->__pyx_tuple[2], NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(12, 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_mstate_global->__pyx_tuple[3], NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(12, 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;
  size_t __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", 0);

  /* "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_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 216, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = NULL;
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_keyval_lock_win, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 216, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 216, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __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(12, 217, __pyx_L7_error)
          }
          __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 217, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_2);
          __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_6mpi4py_3MPI_keyval_registry_win, __pyx_t_2, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 217, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_INCREF((PyObject *)((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_4));
          __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_4);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 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_4, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(12, 216, __pyx_L9_except_error)
          __Pyx_XGOTREF(__pyx_t_4);
          __Pyx_XGOTREF(__pyx_t_2);
          __Pyx_XGOTREF(__pyx_t_3);
          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_4, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(12, 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(12, 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(12, 216, __pyx_L9_except_error)
          __pyx_t_12 = (!__pyx_t_11);
          if (unlikely(__pyx_t_12)) {
            __Pyx_GIVEREF(__pyx_t_4);
            __Pyx_GIVEREF(__pyx_t_2);
            __Pyx_XGIVEREF(__pyx_t_3);
            __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_2, __pyx_t_3);
            __pyx_t_4 = 0;  __pyx_t_2 = 0;  __pyx_t_3 = 0; 
            __PYX_ERR(12, 216, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 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_mstate_global->__pyx_tuple[4], NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(12, 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_mstate_global->__pyx_tuple[5], NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(12, 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;
  size_t __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", 0);

  /* "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_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 227, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = NULL;
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_keyval_lock_type, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 227, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 227, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __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(12, 228, __pyx_L7_error)
          }
          __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 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(12, 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_4, &__pyx_t_3) < 0) __PYX_ERR(12, 227, __pyx_L9_except_error)
          __Pyx_XGOTREF(__pyx_t_2);
          __Pyx_XGOTREF(__pyx_t_4);
          __Pyx_XGOTREF(__pyx_t_3);
          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(12, 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(12, 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(12, 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_4);
            __Pyx_XGIVEREF(__pyx_t_3);
            __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_4, __pyx_t_3);
            __pyx_t_2 = 0;  __pyx_t_4 = 0;  __pyx_t_3 = 0; 
            __PYX_ERR(12, 227, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 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_mstate_global->__pyx_tuple[6], NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(12, 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;
  size_t __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", 0);

  /* "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_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 230, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = NULL;
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_keyval_lock_comm, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 230, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 230, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __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(12, 231, __pyx_L7_error)
          }
          __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 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(12, 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_4, &__pyx_t_3) < 0) __PYX_ERR(12, 230, __pyx_L9_except_error)
          __Pyx_XGOTREF(__pyx_t_2);
          __Pyx_XGOTREF(__pyx_t_4);
          __Pyx_XGOTREF(__pyx_t_3);
          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(12, 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(12, 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(12, 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_4);
            __Pyx_XGIVEREF(__pyx_t_3);
            __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_4, __pyx_t_3);
            __pyx_t_2 = 0;  __pyx_t_4 = 0;  __pyx_t_3 = 0; 
            __PYX_ERR(12, 230, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 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_mstate_global->__pyx_tuple[7], NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(12, 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;
  size_t __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", 0);

  /* "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_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 233, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = NULL;
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_keyval_lock_win, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 233, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 233, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __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(12, 234, __pyx_L7_error)
          }
          __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 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(12, 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_4, &__pyx_t_3) < 0) __PYX_ERR(12, 233, __pyx_L9_except_error)
          __Pyx_XGOTREF(__pyx_t_2);
          __Pyx_XGOTREF(__pyx_t_4);
          __Pyx_XGOTREF(__pyx_t_3);
          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(12, 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(12, 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(12, 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_4);
            __Pyx_XGIVEREF(__pyx_t_3);
            __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_4, __pyx_t_3);
            __pyx_t_2 = 0;  __pyx_t_4 = 0;  __pyx_t_3 = 0; 
            __PYX_ERR(12, 233, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 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_mstate_global->__pyx_tuple[8], NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(12, 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;
  size_t __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", 0);

  /* "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_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 245, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = NULL;
        __pyx_t_7 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_keyval_lock_type, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_7)) __PYX_ERR(12, 245, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = 1;
        #if CYTHON_UNPACK_METHODS
        if (likely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
          assert(__pyx_t_6);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
          __pyx_t_8 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
          __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 245, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_5);
        }
        __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(12, 246, __pyx_L13_error)
              }
              __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 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(12, 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_7, &__pyx_t_6) < 0) __PYX_ERR(12, 245, __pyx_L15_except_error)
              __Pyx_XGOTREF(__pyx_t_5);
              __Pyx_XGOTREF(__pyx_t_7);
              __Pyx_XGOTREF(__pyx_t_6);
              __pyx_t_12 = PyTuple_Pack(3, __pyx_t_5, __pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 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(12, 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(12, 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_7);
                __Pyx_XGIVEREF(__pyx_t_6);
                __Pyx_ErrRestoreWithState(__pyx_t_5, __pyx_t_7, __pyx_t_6);
                __pyx_t_5 = 0;  __pyx_t_7 = 0;  __pyx_t_6 = 0; 
                __PYX_ERR(12, 245, __pyx_L15_except_error)
              }
              __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
              __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
              __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 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_mstate_global->__pyx_tuple[9], NULL);
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
              if (unlikely(!__pyx_t_11)) __PYX_ERR(12, 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(((PyObject *)(((PyTypeObject*)PyExc_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;
  size_t __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", 0);

  /* "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_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 248, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = NULL;
        __pyx_t_7 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_keyval_lock_comm, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_7)) __PYX_ERR(12, 248, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = 1;
        #if CYTHON_UNPACK_METHODS
        if (likely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
          assert(__pyx_t_6);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
          __pyx_t_8 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
          __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 248, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_5);
        }
        __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(12, 249, __pyx_L13_error)
              }
              __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 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(12, 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_7, &__pyx_t_6) < 0) __PYX_ERR(12, 248, __pyx_L15_except_error)
              __Pyx_XGOTREF(__pyx_t_5);
              __Pyx_XGOTREF(__pyx_t_7);
              __Pyx_XGOTREF(__pyx_t_6);
              __pyx_t_12 = PyTuple_Pack(3, __pyx_t_5, __pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 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(12, 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(12, 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_7);
                __Pyx_XGIVEREF(__pyx_t_6);
                __Pyx_ErrRestoreWithState(__pyx_t_5, __pyx_t_7, __pyx_t_6);
                __pyx_t_5 = 0;  __pyx_t_7 = 0;  __pyx_t_6 = 0; 
                __PYX_ERR(12, 248, __pyx_L15_except_error)
              }
              __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
              __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
              __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 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_mstate_global->__pyx_tuple[10], NULL);
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
              if (unlikely(!__pyx_t_11)) __PYX_ERR(12, 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(((PyObject *)(((PyTypeObject*)PyExc_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;
  size_t __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", 0);

  /* "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_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 251, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = NULL;
        __pyx_t_7 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_keyval_lock_win, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_7)) __PYX_ERR(12, 251, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = 1;
        #if CYTHON_UNPACK_METHODS
        if (likely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
          assert(__pyx_t_6);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
          __pyx_t_8 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
          __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 251, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_5);
        }
        __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(12, 252, __pyx_L13_error)
              }
              __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 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(12, 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_7, &__pyx_t_6) < 0) __PYX_ERR(12, 251, __pyx_L15_except_error)
              __Pyx_XGOTREF(__pyx_t_5);
              __Pyx_XGOTREF(__pyx_t_7);
              __Pyx_XGOTREF(__pyx_t_6);
              __pyx_t_12 = PyTuple_Pack(3, __pyx_t_5, __pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 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(12, 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(12, 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_7);
                __Pyx_XGIVEREF(__pyx_t_6);
                __Pyx_ErrRestoreWithState(__pyx_t_5, __pyx_t_7, __pyx_t_6);
                __pyx_t_5 = 0;  __pyx_t_7 = 0;  __pyx_t_6 = 0; 
                __PYX_ERR(12, 251, __pyx_L15_except_error)
              }
              __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
              __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
              __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 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_mstate_global->__pyx_tuple[11], NULL);
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
              if (unlikely(!__pyx_t_11)) __PYX_ERR(12, 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(((PyObject *)(((PyTypeObject*)PyExc_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", 0);

  /* "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(12, 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(12, 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", 0);

  /* "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(12, 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(12, 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", 0);

  /* "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(12, 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(12, 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(12, 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(12, 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(12, 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", 0);

  /* "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(12, 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(12, 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(12, 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", 0);

  /* "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(12, 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(12, 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(12, 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", 0);

  /* "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(12, 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(12, 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(12, 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(12, 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(12, 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(12, 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;
  size_t __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", 0);

  /* "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(12, 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(12, 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_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 321, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_v_state->lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_6)) __PYX_ERR(12, 321, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
      assert(__pyx_t_5);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
      __pyx_t_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 321, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __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(12, 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(12, 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_6, &__pyx_t_5) < 0) __PYX_ERR(12, 321, __pyx_L10_except_error)
          __Pyx_XGOTREF(__pyx_t_1);
          __Pyx_XGOTREF(__pyx_t_6);
          __Pyx_XGOTREF(__pyx_t_5);
          __pyx_t_12 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 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(12, 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(12, 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_6);
            __Pyx_XGIVEREF(__pyx_t_5);
            __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_6, __pyx_t_5);
            __pyx_t_1 = 0;  __pyx_t_6 = 0;  __pyx_t_5 = 0; 
            __PYX_ERR(12, 321, __pyx_L10_except_error)
          }
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 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_mstate_global->__pyx_tuple[12], NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_10)) __PYX_ERR(12, 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;
  size_t __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", 0);

  /* "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(12, 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(12, 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_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 321, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_v_state->lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_6)) __PYX_ERR(12, 321, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
      assert(__pyx_t_5);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
      __pyx_t_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 321, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __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(12, 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(12, 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_6, &__pyx_t_5) < 0) __PYX_ERR(12, 321, __pyx_L10_except_error)
          __Pyx_XGOTREF(__pyx_t_1);
          __Pyx_XGOTREF(__pyx_t_6);
          __Pyx_XGOTREF(__pyx_t_5);
          __pyx_t_12 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 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(12, 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(12, 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_6);
            __Pyx_XGIVEREF(__pyx_t_5);
            __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_6, __pyx_t_5);
            __pyx_t_1 = 0;  __pyx_t_6 = 0;  __pyx_t_5 = 0; 
            __PYX_ERR(12, 321, __pyx_L10_except_error)
          }
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 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_mstate_global->__pyx_tuple[12], NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_10)) __PYX_ERR(12, 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;
  size_t __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", 0);

  /* "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(12, 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(12, 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_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 321, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_v_state->lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_6)) __PYX_ERR(12, 321, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
      assert(__pyx_t_5);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
      __pyx_t_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 321, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __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(12, 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(12, 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_6, &__pyx_t_5) < 0) __PYX_ERR(12, 321, __pyx_L10_except_error)
          __Pyx_XGOTREF(__pyx_t_1);
          __Pyx_XGOTREF(__pyx_t_6);
          __Pyx_XGOTREF(__pyx_t_5);
          __pyx_t_12 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 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(12, 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(12, 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_6);
            __Pyx_XGIVEREF(__pyx_t_5);
            __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_6, __pyx_t_5);
            __pyx_t_1 = 0;  __pyx_t_6 = 0;  __pyx_t_5 = 0; 
            __PYX_ERR(12, 321, __pyx_L10_except_error)
          }
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 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_mstate_global->__pyx_tuple[12], NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_10)) __PYX_ERR(12, 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;
  size_t __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;
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  __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(13, 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(13, 33, __pyx_L3_error)
      }
      __pyx_t_4 = __Pyx_GetItemInt_List(__pyx_v_6mpi4py_3MPI_errhdl_registry, 0, long, 1, __Pyx_PyLong_From_long, 1, 0, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 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 = NULL;
        __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_registry, __pyx_v_index, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 44, __pyx_L10_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = __Pyx_PyLong_From_int(__pyx_v_errcode); if (unlikely(!__pyx_t_7)) __PYX_ERR(13, 44, __pyx_L10_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
          assert(__pyx_t_5);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
          __pyx_t_8 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_pyhandle, __pyx_t_7};
          __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 44, __pyx_L10_error)
          __Pyx_GOTREF(__pyx_t_4);
        }
        __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;
           __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
          if ( 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;
          }
          __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(((PyObject *)(((PyTypeObject*)PyExc_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_6, &__pyx_t_7) < 0) __PYX_ERR(13, 55, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __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/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_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/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();
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
}

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;
  size_t __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;
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  __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(13, 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(13, 36, __pyx_L3_error)
      }
      __pyx_t_4 = __Pyx_GetItemInt_List(__pyx_v_6mpi4py_3MPI_errhdl_registry, 1, long, 1, __Pyx_PyLong_From_long, 1, 0, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 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 = NULL;
        __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_registry, __pyx_v_index, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 44, __pyx_L10_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = __Pyx_PyLong_From_int(__pyx_v_errcode); if (unlikely(!__pyx_t_7)) __PYX_ERR(13, 44, __pyx_L10_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
          assert(__pyx_t_5);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
          __pyx_t_8 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_pyhandle, __pyx_t_7};
          __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 44, __pyx_L10_error)
          __Pyx_GOTREF(__pyx_t_4);
        }
        __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;
           __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
          if ( 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;
          }
          __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(((PyObject *)(((PyTypeObject*)PyExc_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_6, &__pyx_t_7) < 0) __PYX_ERR(13, 55, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __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/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_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/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();
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
}

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;
  size_t __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;
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  __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(13, 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(13, 39, __pyx_L3_error)
      }
      __pyx_t_4 = __Pyx_GetItemInt_List(__pyx_v_6mpi4py_3MPI_errhdl_registry, 2, long, 1, __Pyx_PyLong_From_long, 1, 0, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 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 = NULL;
        __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_registry, __pyx_v_index, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 44, __pyx_L10_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = __Pyx_PyLong_From_int(__pyx_v_errcode); if (unlikely(!__pyx_t_7)) __PYX_ERR(13, 44, __pyx_L10_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
          assert(__pyx_t_5);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
          __pyx_t_8 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_pyhandle, __pyx_t_7};
          __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 44, __pyx_L10_error)
          __Pyx_GOTREF(__pyx_t_4);
        }
        __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;
           __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
          if ( 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;
          }
          __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(((PyObject *)(((PyTypeObject*)PyExc_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_6, &__pyx_t_7) < 0) __PYX_ERR(13, 55, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __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/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_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/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();
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
}

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;
  size_t __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;
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  __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(13, 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(13, 42, __pyx_L3_error)
      }
      __pyx_t_4 = __Pyx_GetItemInt_List(__pyx_v_6mpi4py_3MPI_errhdl_registry, 3, long, 1, __Pyx_PyLong_From_long, 1, 0, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 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 = NULL;
        __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_registry, __pyx_v_index, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 44, __pyx_L10_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = __Pyx_PyLong_From_int(__pyx_v_errcode); if (unlikely(!__pyx_t_7)) __PYX_ERR(13, 44, __pyx_L10_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
          assert(__pyx_t_5);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
          __pyx_t_8 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_pyhandle, __pyx_t_7};
          __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 44, __pyx_L10_error)
          __Pyx_GOTREF(__pyx_t_4);
        }
        __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;
           __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
          if ( 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;
          }
          __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(((PyObject *)(((PyTypeObject*)PyExc_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_6, &__pyx_t_7) < 0) __PYX_ERR(13, 55, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __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/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_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/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();
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
}

/* "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":76
 * 
 * 
 * @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":76
 * 
 * 
 * @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":76
 * 
 * 
 * @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":76
 * 
 * 
 * @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":76
 * 
 * 
 * @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":81
 * 
 * 
 * @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":81
 * 
 * 
 * @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":81
 * 
 * 
 * @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":81
 * 
 * 
 * @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":81
 * 
 * 
 * @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":86
 * 
 * 
 * @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":86
 * 
 * 
 * @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":86
 * 
 * 
 * @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":86
 * 
 * 
 * @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":86
 * 
 * 
 * @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":91
 * 
 * 
 * @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":91
 * 
 * 
 * @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":91
 * 
 * 
 * @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":91
 * 
 * 
 * @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":91
 * 
 * 
 * @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":96
 * 
 * 
 * @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":96
 * 
 * 
 * @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":96
 * 
 * 
 * @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":96
 * 
 * 
 * @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":96
 * 
 * 
 * @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":101
 * 
 * 
 * @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":101
 * 
 * 
 * @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":101
 * 
 * 
 * @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":101
 * 
 * 
 * @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":101
 * 
 * 
 * @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":106
 * 
 * 
 * @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":106
 * 
 * 
 * @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":106
 * 
 * 
 * @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":106
 * 
 * 
 * @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":106
 * 
 * 
 * @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":111
 * 
 * 
 * @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":111
 * 
 * 
 * @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":111
 * 
 * 
 * @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":111
 * 
 * 
 * @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":111
 * 
 * 
 * @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":116
 * 
 * 
 * @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":116
 * 
 * 
 * @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":116
 * 
 * 
 * @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":116
 * 
 * 
 * @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":116
 * 
 * 
 * @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":121
 * 
 * 
 * @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":121
 * 
 * 
 * @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":121
 * 
 * 
 * @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":121
 * 
 * 
 * @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":121
 * 
 * 
 * @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":126
 * 
 * 
 * @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":126
 * 
 * 
 * @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":126
 * 
 * 
 * @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":126
 * 
 * 
 * @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":126
 * 
 * 
 * @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":131
 * 
 * 
 * @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":131
 * 
 * 
 * @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":131
 * 
 * 
 * @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":131
 * 
 * 
 * @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":131
 * 
 * 
 * @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":136
 * 
 * 
 * @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":136
 * 
 * 
 * @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":136
 * 
 * 
 * @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":136
 * 
 * 
 * @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":136
 * 
 * 
 * @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":141
 * 
 * 
 * @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":141
 * 
 * 
 * @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":141
 * 
 * 
 * @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":141
 * 
 * 
 * @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":141
 * 
 * 
 * @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":146
 * 
 * 
 * @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":146
 * 
 * 
 * @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":146
 * 
 * 
 * @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":146
 * 
 * 
 * @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":146
 * 
 * 
 * @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":151
 * 
 * 
 * @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":151
 * 
 * 
 * @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":151
 * 
 * 
 * @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":151
 * 
 * 
 * @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":151
 * 
 * 
 * @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":156
 * 
 * 
 * @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":156
 * 
 * 
 * @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":156
 * 
 * 
 * @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":156
 * 
 * 
 * @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":156
 * 
 * 
 * @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":161
 * 
 * 
 * @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":161
 * 
 * 
 * @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":161
 * 
 * 
 * @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":161
 * 
 * 
 * @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":161
 * 
 * 
 * @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":166
 * 
 * 
 * @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":166
 * 
 * 
 * @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":166
 * 
 * 
 * @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":166
 * 
 * 
 * @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":166
 * 
 * 
 * @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":171
 * 
 * 
 * @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":171
 * 
 * 
 * @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":171
 * 
 * 
 * @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":171
 * 
 * 
 * @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":171
 * 
 * 
 * @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":176
 * 
 * 
 * @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":176
 * 
 * 
 * @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":176
 * 
 * 
 * @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":176
 * 
 * 
 * @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":176
 * 
 * 
 * @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":181
 * 
 * 
 * @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":181
 * 
 * 
 * @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":181
 * 
 * 
 * @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":181
 * 
 * 
 * @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":181
 * 
 * 
 * @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":186
 * 
 * 
 * @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":186
 * 
 * 
 * @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":186
 * 
 * 
 * @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":186
 * 
 * 
 * @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":186
 * 
 * 
 * @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":191
 * 
 * 
 * @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":191
 * 
 * 
 * @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":191
 * 
 * 
 * @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":191
 * 
 * 
 * @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":191
 * 
 * 
 * @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":196
 * 
 * 
 * @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":196
 * 
 * 
 * @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":196
 * 
 * 
 * @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":196
 * 
 * 
 * @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":196
 * 
 * 
 * @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":201
 * 
 * 
 * @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":201
 * 
 * 
 * @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":201
 * 
 * 
 * @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":201
 * 
 * 
 * @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":201
 * 
 * 
 * @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":206
 * 
 * 
 * @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":206
 * 
 * 
 * @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":206
 * 
 * 
 * @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":206
 * 
 * 
 * @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":206
 * 
 * 
 * @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":211
 * 
 * 
 * @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":211
 * 
 * 
 * @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":211
 * 
 * 
 * @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":211
 * 
 * 
 * @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":211
 * 
 * 
 * @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":216
 * 
 * 
 * @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":216
 * 
 * 
 * @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":216
 * 
 * 
 * @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":216
 * 
 * 
 * @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":216
 * 
 * 
 * @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":221
 * 
 * 
 * @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":221
 * 
 * 
 * @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":221
 * 
 * 
 * @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":221
 * 
 * 
 * @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":221
 * 
 * 
 * @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":226
 * 
 * 
 * @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":226
 * 
 * 
 * @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":226
 * 
 * 
 * @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":226
 * 
 * 
 * @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":226
 * 
 * 
 * @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":231
 * 
 * 
 * @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":231
 * 
 * 
 * @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":231
 * 
 * 
 * @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":231
 * 
 * 
 * @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":231
 * 
 * 
 * @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;
  size_t __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;
  PyObject *__pyx_t_17 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_0errhdl_new", 0);

  /* "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_mstate_global->__pyx_n_u_call); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 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(13, 281, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_6mpi4py_3MPI_errhdl_registry, 0, long, 1, __Pyx_PyLong_From_long, 1, 0, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 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(13, 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_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 290, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = NULL;
        __pyx_t_7 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_errhdl_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_7)) __PYX_ERR(13, 290, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = 1;
        #if CYTHON_UNPACK_METHODS
        if (likely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
          assert(__pyx_t_6);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
          __pyx_t_8 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
          __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 290, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_1);
        }
        __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_mstate_global->__pyx_umethod_PyList_Type__index, __pyx_v_registry, Py_None, __pyx_mstate_global->__pyx_int_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 291, __pyx_L13_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_12 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(13, 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(13, 292, __pyx_L13_error)
              }
              if (unlikely((__Pyx_SetItemInt(__pyx_v_registry, __pyx_v_index, __pyx_v_function, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference) < 0))) __PYX_ERR(13, 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_7, &__pyx_t_6) < 0) __PYX_ERR(13, 290, __pyx_L15_except_error)
              __Pyx_XGOTREF(__pyx_t_1);
              __Pyx_XGOTREF(__pyx_t_7);
              __Pyx_XGOTREF(__pyx_t_6);
              __pyx_t_13 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_13)) __PYX_ERR(13, 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(13, 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(13, 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_7);
                __Pyx_XGIVEREF(__pyx_t_6);
                __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_7, __pyx_t_6);
                __pyx_t_1 = 0;  __pyx_t_7 = 0;  __pyx_t_6 = 0; 
                __PYX_ERR(13, 290, __pyx_L15_except_error)
              }
              __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
              __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
              __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 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_mstate_global->__pyx_tuple[12], NULL);
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              if (unlikely(!__pyx_t_11)) __PYX_ERR(13, 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(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
    if (__pyx_t_12) {
      __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_0errhdl_new", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_1) < 0) __PYX_ERR(13, 293, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __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_17 = NULL;
      __pyx_t_8 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_17, __pyx_mstate_global->__pyx_kp_u_cannot_create_too_many_user_defi};
        __pyx_t_13 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
        if (unlikely(!__pyx_t_13)) __PYX_ERR(13, 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(13, 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_XDECREF(__pyx_t_17);
  __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;
  size_t __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;
  PyObject *__pyx_t_17 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_1errhdl_new", 0);

  /* "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_mstate_global->__pyx_n_u_call); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 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(13, 283, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_6mpi4py_3MPI_errhdl_registry, 1, long, 1, __Pyx_PyLong_From_long, 1, 0, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 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(13, 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_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 290, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = NULL;
        __pyx_t_7 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_errhdl_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_7)) __PYX_ERR(13, 290, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = 1;
        #if CYTHON_UNPACK_METHODS
        if (likely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
          assert(__pyx_t_6);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
          __pyx_t_8 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
          __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 290, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_1);
        }
        __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_mstate_global->__pyx_umethod_PyList_Type__index, __pyx_v_registry, Py_None, __pyx_mstate_global->__pyx_int_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 291, __pyx_L13_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_12 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(13, 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(13, 292, __pyx_L13_error)
              }
              if (unlikely((__Pyx_SetItemInt(__pyx_v_registry, __pyx_v_index, __pyx_v_function, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference) < 0))) __PYX_ERR(13, 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_7, &__pyx_t_6) < 0) __PYX_ERR(13, 290, __pyx_L15_except_error)
              __Pyx_XGOTREF(__pyx_t_1);
              __Pyx_XGOTREF(__pyx_t_7);
              __Pyx_XGOTREF(__pyx_t_6);
              __pyx_t_13 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_13)) __PYX_ERR(13, 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(13, 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(13, 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_7);
                __Pyx_XGIVEREF(__pyx_t_6);
                __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_7, __pyx_t_6);
                __pyx_t_1 = 0;  __pyx_t_7 = 0;  __pyx_t_6 = 0; 
                __PYX_ERR(13, 290, __pyx_L15_except_error)
              }
              __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
              __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
              __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 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_mstate_global->__pyx_tuple[12], NULL);
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              if (unlikely(!__pyx_t_11)) __PYX_ERR(13, 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(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
    if (__pyx_t_12) {
      __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_1errhdl_new", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_1) < 0) __PYX_ERR(13, 293, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __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_17 = NULL;
      __pyx_t_8 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_17, __pyx_mstate_global->__pyx_kp_u_cannot_create_too_many_user_defi};
        __pyx_t_13 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
        if (unlikely(!__pyx_t_13)) __PYX_ERR(13, 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(13, 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_XDECREF(__pyx_t_17);
  __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;
  size_t __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;
  PyObject *__pyx_t_17 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_2errhdl_new", 0);

  /* "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_mstate_global->__pyx_n_u_call); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 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(13, 285, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_6mpi4py_3MPI_errhdl_registry, 2, long, 1, __Pyx_PyLong_From_long, 1, 0, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 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(13, 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_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 290, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = NULL;
        __pyx_t_7 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_errhdl_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_7)) __PYX_ERR(13, 290, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = 1;
        #if CYTHON_UNPACK_METHODS
        if (likely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
          assert(__pyx_t_6);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
          __pyx_t_8 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
          __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 290, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_1);
        }
        __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_mstate_global->__pyx_umethod_PyList_Type__index, __pyx_v_registry, Py_None, __pyx_mstate_global->__pyx_int_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 291, __pyx_L13_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_12 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(13, 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(13, 292, __pyx_L13_error)
              }
              if (unlikely((__Pyx_SetItemInt(__pyx_v_registry, __pyx_v_index, __pyx_v_function, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference) < 0))) __PYX_ERR(13, 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_7, &__pyx_t_6) < 0) __PYX_ERR(13, 290, __pyx_L15_except_error)
              __Pyx_XGOTREF(__pyx_t_1);
              __Pyx_XGOTREF(__pyx_t_7);
              __Pyx_XGOTREF(__pyx_t_6);
              __pyx_t_13 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_13)) __PYX_ERR(13, 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(13, 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(13, 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_7);
                __Pyx_XGIVEREF(__pyx_t_6);
                __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_7, __pyx_t_6);
                __pyx_t_1 = 0;  __pyx_t_7 = 0;  __pyx_t_6 = 0; 
                __PYX_ERR(13, 290, __pyx_L15_except_error)
              }
              __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
              __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
              __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 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_mstate_global->__pyx_tuple[12], NULL);
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              if (unlikely(!__pyx_t_11)) __PYX_ERR(13, 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(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
    if (__pyx_t_12) {
      __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_2errhdl_new", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_1) < 0) __PYX_ERR(13, 293, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __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_17 = NULL;
      __pyx_t_8 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_17, __pyx_mstate_global->__pyx_kp_u_cannot_create_too_many_user_defi};
        __pyx_t_13 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
        if (unlikely(!__pyx_t_13)) __PYX_ERR(13, 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(13, 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_XDECREF(__pyx_t_17);
  __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;
  size_t __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;
  PyObject *__pyx_t_17 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_3errhdl_new", 0);

  /* "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_mstate_global->__pyx_n_u_call); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 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(13, 287, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_6mpi4py_3MPI_errhdl_registry, 3, long, 1, __Pyx_PyLong_From_long, 1, 0, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 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(13, 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_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 290, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = NULL;
        __pyx_t_7 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_errhdl_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_7)) __PYX_ERR(13, 290, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = 1;
        #if CYTHON_UNPACK_METHODS
        if (likely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
          assert(__pyx_t_6);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
          __pyx_t_8 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
          __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 290, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_1);
        }
        __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_mstate_global->__pyx_umethod_PyList_Type__index, __pyx_v_registry, Py_None, __pyx_mstate_global->__pyx_int_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 291, __pyx_L13_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_12 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(13, 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(13, 292, __pyx_L13_error)
              }
              if (unlikely((__Pyx_SetItemInt(__pyx_v_registry, __pyx_v_index, __pyx_v_function, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference) < 0))) __PYX_ERR(13, 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_7, &__pyx_t_6) < 0) __PYX_ERR(13, 290, __pyx_L15_except_error)
              __Pyx_XGOTREF(__pyx_t_1);
              __Pyx_XGOTREF(__pyx_t_7);
              __Pyx_XGOTREF(__pyx_t_6);
              __pyx_t_13 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_13)) __PYX_ERR(13, 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(13, 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(13, 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_7);
                __Pyx_XGIVEREF(__pyx_t_6);
                __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_7, __pyx_t_6);
                __pyx_t_1 = 0;  __pyx_t_7 = 0;  __pyx_t_6 = 0; 
                __PYX_ERR(13, 290, __pyx_L15_except_error)
              }
              __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
              __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
              __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 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_mstate_global->__pyx_tuple[12], NULL);
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              if (unlikely(!__pyx_t_11)) __PYX_ERR(13, 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(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
    if (__pyx_t_12) {
      __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_3errhdl_new", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_1) < 0) __PYX_ERR(13, 293, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __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_17 = NULL;
      __pyx_t_8 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_17, __pyx_mstate_global->__pyx_kp_u_cannot_create_too_many_user_defi};
        __pyx_t_13 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
        if (unlikely(!__pyx_t_13)) __PYX_ERR(13, 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(13, 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_XDECREF(__pyx_t_17);
  __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":303
 * 
 * 
 * @cython.linetrace(False)  # ~> TODO             # <<<<<<<<<<<<<<
 * cdef inline int errhdl_del(
 *     int *indexp,
*/

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;
  size_t __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", 0);

  /* "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(13, 315, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_6mpi4py_3MPI_errhdl_registry, 0, long, 1, __Pyx_PyLong_From_long, 1, 0, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 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_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 322, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = NULL;
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_errhdl_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 322, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 322, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __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_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference) < 0))) __PYX_ERR(13, 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_4, &__pyx_t_3) < 0) __PYX_ERR(13, 322, __pyx_L9_except_error)
          __Pyx_XGOTREF(__pyx_t_1);
          __Pyx_XGOTREF(__pyx_t_4);
          __Pyx_XGOTREF(__pyx_t_3);
          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(13, 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(13, 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(13, 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_4);
            __Pyx_XGIVEREF(__pyx_t_3);
            __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_4, __pyx_t_3);
            __pyx_t_1 = 0;  __pyx_t_4 = 0;  __pyx_t_3 = 0; 
            __PYX_ERR(13, 322, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 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_mstate_global->__pyx_tuple[12], NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(13, 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":303
 * 
 * 
 * @cython.linetrace(False)  # ~> TODO             # <<<<<<<<<<<<<<
 * cdef inline int errhdl_del(
 *     int *indexp,
*/

  /* 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;
  size_t __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", 0);

  /* "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(13, 317, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_6mpi4py_3MPI_errhdl_registry, 1, long, 1, __Pyx_PyLong_From_long, 1, 0, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 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_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 322, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = NULL;
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_errhdl_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 322, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 322, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __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_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference) < 0))) __PYX_ERR(13, 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_4, &__pyx_t_3) < 0) __PYX_ERR(13, 322, __pyx_L9_except_error)
          __Pyx_XGOTREF(__pyx_t_1);
          __Pyx_XGOTREF(__pyx_t_4);
          __Pyx_XGOTREF(__pyx_t_3);
          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(13, 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(13, 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(13, 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_4);
            __Pyx_XGIVEREF(__pyx_t_3);
            __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_4, __pyx_t_3);
            __pyx_t_1 = 0;  __pyx_t_4 = 0;  __pyx_t_3 = 0; 
            __PYX_ERR(13, 322, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 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_mstate_global->__pyx_tuple[12], NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(13, 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":303
 * 
 * 
 * @cython.linetrace(False)  # ~> TODO             # <<<<<<<<<<<<<<
 * cdef inline int errhdl_del(
 *     int *indexp,
*/

  /* 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;
  size_t __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", 0);

  /* "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(13, 319, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_6mpi4py_3MPI_errhdl_registry, 2, long, 1, __Pyx_PyLong_From_long, 1, 0, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 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_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 322, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = NULL;
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_errhdl_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 322, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 322, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __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_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference) < 0))) __PYX_ERR(13, 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_4, &__pyx_t_3) < 0) __PYX_ERR(13, 322, __pyx_L9_except_error)
          __Pyx_XGOTREF(__pyx_t_1);
          __Pyx_XGOTREF(__pyx_t_4);
          __Pyx_XGOTREF(__pyx_t_3);
          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(13, 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(13, 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(13, 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_4);
            __Pyx_XGIVEREF(__pyx_t_3);
            __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_4, __pyx_t_3);
            __pyx_t_1 = 0;  __pyx_t_4 = 0;  __pyx_t_3 = 0; 
            __PYX_ERR(13, 322, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 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_mstate_global->__pyx_tuple[12], NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(13, 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":303
 * 
 * 
 * @cython.linetrace(False)  # ~> TODO             # <<<<<<<<<<<<<<
 * cdef inline int errhdl_del(
 *     int *indexp,
*/

  /* 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;
  size_t __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", 0);

  /* "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(13, 321, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_6mpi4py_3MPI_errhdl_registry, 3, long, 1, __Pyx_PyLong_From_long, 1, 0, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 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_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 322, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = NULL;
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_errhdl_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 322, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 322, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __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_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference) < 0))) __PYX_ERR(13, 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_4, &__pyx_t_3) < 0) __PYX_ERR(13, 322, __pyx_L9_except_error)
          __Pyx_XGOTREF(__pyx_t_1);
          __Pyx_XGOTREF(__pyx_t_4);
          __Pyx_XGOTREF(__pyx_t_3);
          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(13, 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(13, 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(13, 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_4);
            __Pyx_XGIVEREF(__pyx_t_3);
            __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_4, __pyx_t_3);
            __pyx_t_1 = 0;  __pyx_t_4 = 0;  __pyx_t_3 = 0; 
            __PYX_ERR(13, 322, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 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_mstate_global->__pyx_tuple[12], NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(13, 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":303
 * 
 * 
 * @cython.linetrace(False)  # ~> TODO             # <<<<<<<<<<<<<<
 * cdef inline int errhdl_del(
 *     int *indexp,
*/

  /* 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 MPI_Errhandler options_get_errhandler() noexcept nogil:             # <<<<<<<<<<<<<<
 *     if options.errors == 0: return MPI_ERRHANDLER_NULL
 *     if options.errors == 1: return MPI_ERRORS_RETURN
*/

static CYTHON_INLINE MPI_Errhandler __pyx_f_6mpi4py_3MPI_options_get_errhandler(void) {
  MPI_Errhandler __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":329
 * 
 * cdef inline MPI_Errhandler options_get_errhandler() noexcept nogil:
 *     if options.errors == 0: return MPI_ERRHANDLER_NULL             # <<<<<<<<<<<<<<
 *     if options.errors == 1: return MPI_ERRORS_RETURN
 *     if options.errors == 2: return MPI_ERRORS_ABORT
*/
  __pyx_t_1 = (__pyx_v_6mpi4py_3MPI_options.errors == 0);
  if (__pyx_t_1) {
    __pyx_r = MPI_ERRHANDLER_NULL;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":330
 * cdef inline MPI_Errhandler options_get_errhandler() noexcept nogil:
 *     if options.errors == 0: return MPI_ERRHANDLER_NULL
 *     if options.errors == 1: return MPI_ERRORS_RETURN             # <<<<<<<<<<<<<<
 *     if options.errors == 2: return MPI_ERRORS_ABORT
 *     if options.errors == 3: return MPI_ERRORS_ARE_FATAL
*/
  __pyx_t_1 = (__pyx_v_6mpi4py_3MPI_options.errors == 1);
  if (__pyx_t_1) {
    __pyx_r = MPI_ERRORS_RETURN;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":331
 *     if options.errors == 0: return MPI_ERRHANDLER_NULL
 *     if options.errors == 1: return MPI_ERRORS_RETURN
 *     if options.errors == 2: return MPI_ERRORS_ABORT             # <<<<<<<<<<<<<<
 *     if options.errors == 3: return MPI_ERRORS_ARE_FATAL
 *     return MPI_ERRHANDLER_NULL  # ~> unreachable
*/
  __pyx_t_1 = (__pyx_v_6mpi4py_3MPI_options.errors == 2);
  if (__pyx_t_1) {
    __pyx_r = MPI_ERRORS_ABORT;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":332
 *     if options.errors == 1: return MPI_ERRORS_RETURN
 *     if options.errors == 2: return MPI_ERRORS_ABORT
 *     if options.errors == 3: return MPI_ERRORS_ARE_FATAL             # <<<<<<<<<<<<<<
 *     return MPI_ERRHANDLER_NULL  # ~> unreachable
 * 
*/
  __pyx_t_1 = (__pyx_v_6mpi4py_3MPI_options.errors == 3);
  if (__pyx_t_1) {
    __pyx_r = MPI_ERRORS_ARE_FATAL;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":333
 *     if options.errors == 2: return MPI_ERRORS_ABORT
 *     if options.errors == 3: return MPI_ERRORS_ARE_FATAL
 *     return MPI_ERRHANDLER_NULL  # ~> unreachable             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_r = MPI_ERRHANDLER_NULL;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":328
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline MPI_Errhandler options_get_errhandler() noexcept nogil:             # <<<<<<<<<<<<<<
 *     if options.errors == 0: return MPI_ERRHANDLER_NULL
 *     if options.errors == 1: return MPI_ERRORS_RETURN
*/

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

/* "src/mpi4py/MPI.src/errhimpl.pxi":336
 * 
 * 
 * cdef inline int options_set_errhandler(mpi_scwf_t handle) except -1 nogil:             # <<<<<<<<<<<<<<
 *     if handle == mpinull(handle): return 0
 *     cdef MPI_Errhandler errhandler = options_get_errhandler()
*/

static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_options_set_errhandler(MPI_Session __pyx_v_handle) {
  MPI_Errhandler __pyx_v_errhandler;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyGILState_STATE __pyx_gilstate_save;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":337
 * 
 * cdef inline int options_set_errhandler(mpi_scwf_t handle) except -1 nogil:
 *     if handle == mpinull(handle): return 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Errhandler errhandler = options_get_errhandler()
 *     if errhandler == MPI_ERRHANDLER_NULL: return 0
*/
  __pyx_t_1 = (__pyx_v_handle == __pyx_fuse_7__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_handle));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":338
 * cdef inline int options_set_errhandler(mpi_scwf_t handle) except -1 nogil:
 *     if handle == mpinull(handle): return 0
 *     cdef MPI_Errhandler errhandler = options_get_errhandler()             # <<<<<<<<<<<<<<
 *     if errhandler == MPI_ERRHANDLER_NULL: return 0
 *     if mpi_scwf_t is MPI_Session:
*/
  __pyx_v_errhandler = __pyx_f_6mpi4py_3MPI_options_get_errhandler();

  /* "src/mpi4py/MPI.src/errhimpl.pxi":339
 *     if handle == mpinull(handle): return 0
 *     cdef MPI_Errhandler errhandler = options_get_errhandler()
 *     if errhandler == MPI_ERRHANDLER_NULL: return 0             # <<<<<<<<<<<<<<
 *     if mpi_scwf_t is MPI_Session:
 *         CHKERR( MPI_Session_set_errhandler(handle, errhandler) )
*/
  __pyx_t_1 = (__pyx_v_errhandler == MPI_ERRHANDLER_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":341
 *     if errhandler == MPI_ERRHANDLER_NULL: return 0
 *     if mpi_scwf_t is MPI_Session:
 *         CHKERR( MPI_Session_set_errhandler(handle, errhandler) )             # <<<<<<<<<<<<<<
 *     if mpi_scwf_t is MPI_Comm:
 *         CHKERR( MPI_Comm_set_errhandler(handle, errhandler) )
*/
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Session_set_errhandler(__pyx_v_handle, __pyx_v_errhandler)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(13, 341, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/errhimpl.pxi":348
 *     if mpi_scwf_t is MPI_File:
 *         CHKERR( MPI_File_set_errhandler(handle, errhandler) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":336
 * 
 * 
 * cdef inline int options_set_errhandler(mpi_scwf_t handle) except -1 nogil:             # <<<<<<<<<<<<<<
 *     if handle == mpinull(handle): return 0
 *     cdef MPI_Errhandler errhandler = options_get_errhandler()
*/

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

static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_options_set_errhandler(MPI_Comm __pyx_v_handle) {
  MPI_Errhandler __pyx_v_errhandler;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyGILState_STATE __pyx_gilstate_save;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":337
 * 
 * cdef inline int options_set_errhandler(mpi_scwf_t handle) except -1 nogil:
 *     if handle == mpinull(handle): return 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Errhandler errhandler = options_get_errhandler()
 *     if errhandler == MPI_ERRHANDLER_NULL: return 0
*/
  __pyx_t_1 = (__pyx_v_handle == __pyx_fuse_8__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_handle));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":338
 * cdef inline int options_set_errhandler(mpi_scwf_t handle) except -1 nogil:
 *     if handle == mpinull(handle): return 0
 *     cdef MPI_Errhandler errhandler = options_get_errhandler()             # <<<<<<<<<<<<<<
 *     if errhandler == MPI_ERRHANDLER_NULL: return 0
 *     if mpi_scwf_t is MPI_Session:
*/
  __pyx_v_errhandler = __pyx_f_6mpi4py_3MPI_options_get_errhandler();

  /* "src/mpi4py/MPI.src/errhimpl.pxi":339
 *     if handle == mpinull(handle): return 0
 *     cdef MPI_Errhandler errhandler = options_get_errhandler()
 *     if errhandler == MPI_ERRHANDLER_NULL: return 0             # <<<<<<<<<<<<<<
 *     if mpi_scwf_t is MPI_Session:
 *         CHKERR( MPI_Session_set_errhandler(handle, errhandler) )
*/
  __pyx_t_1 = (__pyx_v_errhandler == MPI_ERRHANDLER_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":343
 *         CHKERR( MPI_Session_set_errhandler(handle, errhandler) )
 *     if mpi_scwf_t is MPI_Comm:
 *         CHKERR( MPI_Comm_set_errhandler(handle, errhandler) )             # <<<<<<<<<<<<<<
 *     if mpi_scwf_t is MPI_Win:
 *         CHKERR( MPI_Win_set_errhandler(handle, errhandler) )
*/
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_set_errhandler(__pyx_v_handle, __pyx_v_errhandler)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(13, 343, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/errhimpl.pxi":348
 *     if mpi_scwf_t is MPI_File:
 *         CHKERR( MPI_File_set_errhandler(handle, errhandler) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":336
 * 
 * 
 * cdef inline int options_set_errhandler(mpi_scwf_t handle) except -1 nogil:             # <<<<<<<<<<<<<<
 *     if handle == mpinull(handle): return 0
 *     cdef MPI_Errhandler errhandler = options_get_errhandler()
*/

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

static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_options_set_errhandler(MPI_Win __pyx_v_handle) {
  MPI_Errhandler __pyx_v_errhandler;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyGILState_STATE __pyx_gilstate_save;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":337
 * 
 * cdef inline int options_set_errhandler(mpi_scwf_t handle) except -1 nogil:
 *     if handle == mpinull(handle): return 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Errhandler errhandler = options_get_errhandler()
 *     if errhandler == MPI_ERRHANDLER_NULL: return 0
*/
  __pyx_t_1 = (__pyx_v_handle == __pyx_fuse_9__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_handle));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":338
 * cdef inline int options_set_errhandler(mpi_scwf_t handle) except -1 nogil:
 *     if handle == mpinull(handle): return 0
 *     cdef MPI_Errhandler errhandler = options_get_errhandler()             # <<<<<<<<<<<<<<
 *     if errhandler == MPI_ERRHANDLER_NULL: return 0
 *     if mpi_scwf_t is MPI_Session:
*/
  __pyx_v_errhandler = __pyx_f_6mpi4py_3MPI_options_get_errhandler();

  /* "src/mpi4py/MPI.src/errhimpl.pxi":339
 *     if handle == mpinull(handle): return 0
 *     cdef MPI_Errhandler errhandler = options_get_errhandler()
 *     if errhandler == MPI_ERRHANDLER_NULL: return 0             # <<<<<<<<<<<<<<
 *     if mpi_scwf_t is MPI_Session:
 *         CHKERR( MPI_Session_set_errhandler(handle, errhandler) )
*/
  __pyx_t_1 = (__pyx_v_errhandler == MPI_ERRHANDLER_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":345
 *         CHKERR( MPI_Comm_set_errhandler(handle, errhandler) )
 *     if mpi_scwf_t is MPI_Win:
 *         CHKERR( MPI_Win_set_errhandler(handle, errhandler) )             # <<<<<<<<<<<<<<
 *     if mpi_scwf_t is MPI_File:
 *         CHKERR( MPI_File_set_errhandler(handle, errhandler) )
*/
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_set_errhandler(__pyx_v_handle, __pyx_v_errhandler)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(13, 345, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/errhimpl.pxi":348
 *     if mpi_scwf_t is MPI_File:
 *         CHKERR( MPI_File_set_errhandler(handle, errhandler) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":336
 * 
 * 
 * cdef inline int options_set_errhandler(mpi_scwf_t handle) except -1 nogil:             # <<<<<<<<<<<<<<
 *     if handle == mpinull(handle): return 0
 *     cdef MPI_Errhandler errhandler = options_get_errhandler()
*/

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

static CYTHON_INLINE int __pyx_fuse_3__pyx_f_6mpi4py_3MPI_options_set_errhandler(MPI_File __pyx_v_handle) {
  MPI_Errhandler __pyx_v_errhandler;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyGILState_STATE __pyx_gilstate_save;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":337
 * 
 * cdef inline int options_set_errhandler(mpi_scwf_t handle) except -1 nogil:
 *     if handle == mpinull(handle): return 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Errhandler errhandler = options_get_errhandler()
 *     if errhandler == MPI_ERRHANDLER_NULL: return 0
*/
  __pyx_t_1 = (__pyx_v_handle == __pyx_fuse_10__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_handle));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":338
 * cdef inline int options_set_errhandler(mpi_scwf_t handle) except -1 nogil:
 *     if handle == mpinull(handle): return 0
 *     cdef MPI_Errhandler errhandler = options_get_errhandler()             # <<<<<<<<<<<<<<
 *     if errhandler == MPI_ERRHANDLER_NULL: return 0
 *     if mpi_scwf_t is MPI_Session:
*/
  __pyx_v_errhandler = __pyx_f_6mpi4py_3MPI_options_get_errhandler();

  /* "src/mpi4py/MPI.src/errhimpl.pxi":339
 *     if handle == mpinull(handle): return 0
 *     cdef MPI_Errhandler errhandler = options_get_errhandler()
 *     if errhandler == MPI_ERRHANDLER_NULL: return 0             # <<<<<<<<<<<<<<
 *     if mpi_scwf_t is MPI_Session:
 *         CHKERR( MPI_Session_set_errhandler(handle, errhandler) )
*/
  __pyx_t_1 = (__pyx_v_errhandler == MPI_ERRHANDLER_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":347
 *         CHKERR( MPI_Win_set_errhandler(handle, errhandler) )
 *     if mpi_scwf_t is MPI_File:
 *         CHKERR( MPI_File_set_errhandler(handle, errhandler) )             # <<<<<<<<<<<<<<
 *     return 0
 * 
*/
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_set_errhandler(__pyx_v_handle, __pyx_v_errhandler)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(13, 347, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/errhimpl.pxi":348
 *     if mpi_scwf_t is MPI_File:
 *         CHKERR( MPI_File_set_errhandler(handle, errhandler) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":336
 * 
 * 
 * cdef inline int options_set_errhandler(mpi_scwf_t handle) except -1 nogil:             # <<<<<<<<<<<<<<
 *     if handle == mpinull(handle): return 0
 *     cdef MPI_Errhandler errhandler = options_get_errhandler()
*/

  /* function exit code */
  __pyx_L1_error:;
  __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  __Pyx_AddTraceback("mpi4py.MPI.options_set_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  __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_SIZE
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__cinit__", __pyx_kwds); 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__", 0);

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

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

  /* "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(14, 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(14, 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_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 53, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (!(likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request)))) __PYX_ERR(14, 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", 0);

  /* "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(14, 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", 0);

  /* "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(14, 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(14, 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(14, 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, PyLong_FromSsize_t, 0, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 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(14, 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(14, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 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(14, 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(14, 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, PyLong_FromSsize_t, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 101, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (!(likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status)))) __PYX_ERR(14, 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", 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]
*/
  __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, PyLong_FromSsize_t, 0, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 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", 0);

  /* "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(14, 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", 0);

  /* "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(14, 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(14, 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", 0);

  /* "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(14, 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(14, 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(14, 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(14, 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", 0);

  /* "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(14, 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_PyLong_From_int((__pyx_v_self->indices[__pyx_8genexpr2__pyx_v_i])); if (unlikely(!__pyx_t_6)) __PYX_ERR(14, 133, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(14, 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_SIZE
  __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 ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_query_fn,&__pyx_mstate_global->__pyx_n_u_free_fn,&__pyx_mstate_global->__pyx_n_u_cancel_fn,&__pyx_mstate_global->__pyx_n_u_args,&__pyx_mstate_global->__pyx_n_u_kwargs,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(14, 148, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  5:
        values[4] = __Pyx_ArgRef_VARARGS(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(14, 148, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(14, 148, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(14, 148, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(14, 148, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(14, 148, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < (0)) __PYX_ERR(14, 148, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 5, 5, i); __PYX_ERR(14, 148, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 5)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(14, 148, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(14, 148, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(14, 148, __pyx_L3_error)
      values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(14, 148, __pyx_L3_error)
      values[4] = __Pyx_ArgRef_VARARGS(__pyx_args, 4);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(14, 148, __pyx_L3_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("__cinit__", 1, 5, 5, __pyx_nargs); __PYX_ERR(14, 148, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "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(14, 152, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __Pyx_INCREF(__pyx_mstate_global->__pyx_empty_tuple);
    __pyx_t_1 = __pyx_mstate_global->__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_4 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_kwargs};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(&PyDict_Type), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 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(14, 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_XDECREF(__pyx_t_4);
  __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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 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(14, 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)) != (0)) __PYX_ERR(14, 165, __pyx_L1_error);
    if (unlikely(__pyx_v_self->args == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
      __PYX_ERR(14, 165, __pyx_L1_error)
    }
    __pyx_t_2 = PyNumber_Add(__pyx_t_3, __pyx_v_self->args); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 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(14, 165, __pyx_L1_error)
    }
    __pyx_t_3 = PyDict_Copy(__pyx_v_self->kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 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(14, 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", 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
*/
  __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(14, 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(14, 173, __pyx_L1_error)
    }
    __pyx_t_2 = PyDict_Copy(__pyx_v_self->kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 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(14, 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", 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
*/
  __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(14, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 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) != (0)) __PYX_ERR(14, 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(14, 178, __pyx_L1_error)
    }
    __pyx_t_2 = PyNumber_Add(__pyx_t_3, __pyx_v_self->args); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 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(14, 178, __pyx_L1_error)
    }
    __pyx_t_3 = PyDict_Copy(__pyx_v_self->kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 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(14, 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;
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  __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(14, 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(((PyObject *)(((PyTypeObject*)PyExc_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(14, 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();
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  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;
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  __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(14, 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(((PyObject *)(((PyTypeObject*)PyExc_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(14, 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;
       __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      if ( 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));
      }
      __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();
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  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;
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  __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(14, 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(((PyObject *)(((PyTypeObject*)PyExc_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(14, 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();
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/reqimpl.pxi":225
 * 
 * 
 * @cython.callspec("MPIAPI")             # <<<<<<<<<<<<<<
 * cdef int greq_query_fn(
 *     void *extra_state,
*/

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":225
 * 
 * 
 * @cython.callspec("MPIAPI")             # <<<<<<<<<<<<<<
 * cdef int greq_query_fn(
 *     void *extra_state,
*/

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

/* "src/mpi4py/MPI.src/reqimpl.pxi":237
 * 
 * 
 * @cython.callspec("MPIAPI")             # <<<<<<<<<<<<<<
 * cdef int greq_free_fn(
 *     void *extra_state,
*/

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":237
 * 
 * 
 * @cython.callspec("MPIAPI")             # <<<<<<<<<<<<<<
 * cdef int greq_free_fn(
 *     void *extra_state,
*/

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

/* "src/mpi4py/MPI.src/reqimpl.pxi":247
 * 
 * 
 * @cython.callspec("MPIAPI")             # <<<<<<<<<<<<<<
 * cdef int greq_cancel_fn(
 *     void *extra_state,
*/

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":247
 * 
 * 
 * @cython.callspec("MPIAPI")             # <<<<<<<<<<<<<<
 * cdef int greq_cancel_fn(
 *     void *extra_state,
*/

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

  /* "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(15, 5, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(15, 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", 0);

  /* "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(15, 12, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(15, 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", 0);

  /* "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(15, 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", 0);

  /* "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(15, 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", 0);

  /* "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(15, 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", 0);

  /* "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(15, 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", 0);

  /* "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(15, 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", 0);

  /* "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(15, 39, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 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(15, 39, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 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(15, 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", 0);

  /* "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(15, 43, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 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(15, 43, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 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(15, 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", 0);

  /* "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(15, 47, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 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(15, 47, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 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(15, 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", 0);

  /* "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(15, 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_INCREF(__pyx_t_1);
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1);
      __Pyx_INCREF(__pyx_t_2);
    } else {
      __pyx_t_1 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 52, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 52, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_2);
    }
    #else
    __pyx_t_1 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 52, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 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(15, 52, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __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(15, 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(15, 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(15, 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_INCREF(__pyx_t_2);
      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1);
      __Pyx_INCREF(__pyx_t_1);
    } else {
      __pyx_t_2 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 53, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_2);
      __pyx_t_1 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 53, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_1);
    }
    #else
    __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 53, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 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(15, 53, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __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(15, 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(15, 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(15, 54, __pyx_L1_error)
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(15, 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(15, 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) != (0)) __PYX_ERR(15, 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) != (0)) __PYX_ERR(15, 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(15, 56, __pyx_L1_error)
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(15, 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(15, 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) != (0)) __PYX_ERR(15, 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) != (0)) __PYX_ERR(15, 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(15, 58, __pyx_L1_error)
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(15, 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(15, 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) != (0)) __PYX_ERR(15, 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) != (0)) __PYX_ERR(15, 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(15, 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) != (0)) __PYX_ERR(15, 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) != (0)) __PYX_ERR(15, 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", 0);

  /* "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(15, 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_INCREF(__pyx_t_1);
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1);
      __Pyx_INCREF(__pyx_t_2);
    } else {
      __pyx_t_1 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 66, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 66, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_2);
    }
    #else
    __pyx_t_1 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 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(15, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __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(15, 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(15, 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(15, 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_INCREF(__pyx_t_2);
      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1);
      __Pyx_INCREF(__pyx_t_1);
    } else {
      __pyx_t_2 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 67, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_2);
      __pyx_t_1 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 67, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_1);
    }
    #else
    __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 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(15, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __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(15, 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(15, 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(15, 68, __pyx_L1_error)
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(15, 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(15, 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) != (0)) __PYX_ERR(15, 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) != (0)) __PYX_ERR(15, 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(15, 70, __pyx_L1_error)
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(15, 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(15, 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) != (0)) __PYX_ERR(15, 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) != (0)) __PYX_ERR(15, 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(15, 72, __pyx_L1_error)
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(15, 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(15, 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) != (0)) __PYX_ERR(15, 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) != (0)) __PYX_ERR(15, 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(15, 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) != (0)) __PYX_ERR(15, 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) != (0)) __PYX_ERR(15, 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", 0);

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

  /* "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;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("op_user_call_py", 0);

  /* "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);
  __pyx_t_2 = NULL;
  if (unlikely(__pyx_v_6mpi4py_3MPI_op_user_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(15, 102, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_GetItemInt_List(__pyx_v_6mpi4py_3MPI_op_user_registry, __pyx_v_index, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_4 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_2, __pyx_v_x, __pyx_v_y, __pyx_v_dt};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_4, (4-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 102, __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":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;
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  __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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 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(15, 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(15, 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(15, 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;
           __Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
          if ( 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;
          }
          __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(((PyObject *)(((PyTypeObject*)PyExc_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(15, 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();
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
}

/* "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":142
 * 
 * 
 * @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":142
 * 
 * 
 * @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":142
 * 
 * 
 * @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":147
 * 
 * 
 * @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":147
 * 
 * 
 * @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":147
 * 
 * 
 * @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":152
 * 
 * 
 * @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":152
 * 
 * 
 * @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":152
 * 
 * 
 * @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":157
 * 
 * 
 * @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":157
 * 
 * 
 * @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":157
 * 
 * 
 * @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":162
 * 
 * 
 * @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":162
 * 
 * 
 * @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":162
 * 
 * 
 * @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":167
 * 
 * 
 * @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":167
 * 
 * 
 * @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":167
 * 
 * 
 * @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":172
 * 
 * 
 * @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":172
 * 
 * 
 * @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":172
 * 
 * 
 * @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":177
 * 
 * 
 * @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":177
 * 
 * 
 * @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":177
 * 
 * 
 * @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":182
 * 
 * 
 * @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":182
 * 
 * 
 * @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":182
 * 
 * 
 * @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":187
 * 
 * 
 * @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":187
 * 
 * 
 * @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":187
 * 
 * 
 * @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":192
 * 
 * 
 * @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":192
 * 
 * 
 * @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":192
 * 
 * 
 * @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":197
 * 
 * 
 * @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":197
 * 
 * 
 * @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":197
 * 
 * 
 * @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":202
 * 
 * 
 * @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":202
 * 
 * 
 * @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":202
 * 
 * 
 * @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":207
 * 
 * 
 * @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":207
 * 
 * 
 * @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":207
 * 
 * 
 * @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":212
 * 
 * 
 * @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":212
 * 
 * 
 * @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":212
 * 
 * 
 * @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":217
 * 
 * 
 * @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":217
 * 
 * 
 * @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":217
 * 
 * 
 * @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":222
 * 
 * 
 * @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":222
 * 
 * 
 * @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":222
 * 
 * 
 * @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":227
 * 
 * 
 * @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":227
 * 
 * 
 * @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":227
 * 
 * 
 * @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":232
 * 
 * 
 * @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":232
 * 
 * 
 * @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":232
 * 
 * 
 * @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":237
 * 
 * 
 * @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":237
 * 
 * 
 * @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":237
 * 
 * 
 * @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":242
 * 
 * 
 * @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":242
 * 
 * 
 * @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":242
 * 
 * 
 * @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":247
 * 
 * 
 * @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":247
 * 
 * 
 * @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":247
 * 
 * 
 * @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":252
 * 
 * 
 * @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":252
 * 
 * 
 * @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":252
 * 
 * 
 * @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":257
 * 
 * 
 * @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":257
 * 
 * 
 * @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":257
 * 
 * 
 * @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":262
 * 
 * 
 * @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":262
 * 
 * 
 * @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":262
 * 
 * 
 * @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":267
 * 
 * 
 * @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":267
 * 
 * 
 * @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":267
 * 
 * 
 * @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":272
 * 
 * 
 * @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":272
 * 
 * 
 * @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":272
 * 
 * 
 * @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":277
 * 
 * 
 * @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":277
 * 
 * 
 * @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":277
 * 
 * 
 * @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":282
 * 
 * 
 * @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":282
 * 
 * 
 * @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":282
 * 
 * 
 * @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":287
 * 
 * 
 * @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":287
 * 
 * 
 * @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":287
 * 
 * 
 * @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":292
 * 
 * 
 * @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":292
 * 
 * 
 * @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":292
 * 
 * 
 * @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":297
 * 
 * 
 * @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":297
 * 
 * 
 * @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":297
 * 
 * 
 * @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;
  size_t __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;
  PyObject *__pyx_t_17 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("op_user_new", 0);

  /* "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_mstate_global->__pyx_n_u_call); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 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_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 359, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = NULL;
        __pyx_t_7 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_op_user_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_7)) __PYX_ERR(15, 359, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = 1;
        #if CYTHON_UNPACK_METHODS
        if (likely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
          assert(__pyx_t_6);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
          __pyx_t_8 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
          __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 359, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_1);
        }
        __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_mstate_global->__pyx_umethod_PyList_Type__index, __pyx_v_6mpi4py_3MPI_op_user_registry, Py_None, __pyx_mstate_global->__pyx_int_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 360, __pyx_L13_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_12 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(15, 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(15, 361, __pyx_L13_error)
              }
              if (unlikely((__Pyx_SetItemInt(__pyx_v_6mpi4py_3MPI_op_user_registry, __pyx_v_index, __pyx_v_function, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference) < 0))) __PYX_ERR(15, 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_7, &__pyx_t_6) < 0) __PYX_ERR(15, 359, __pyx_L15_except_error)
              __Pyx_XGOTREF(__pyx_t_1);
              __Pyx_XGOTREF(__pyx_t_7);
              __Pyx_XGOTREF(__pyx_t_6);
              __pyx_t_13 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_13)) __PYX_ERR(15, 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(15, 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(15, 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_7);
                __Pyx_XGIVEREF(__pyx_t_6);
                __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_7, __pyx_t_6);
                __pyx_t_1 = 0;  __pyx_t_7 = 0;  __pyx_t_6 = 0; 
                __PYX_ERR(15, 359, __pyx_L15_except_error)
              }
              __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
              __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
              __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 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_mstate_global->__pyx_tuple[12], NULL);
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              if (unlikely(!__pyx_t_11)) __PYX_ERR(15, 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(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
    if (__pyx_t_12) {
      __Pyx_AddTraceback("mpi4py.MPI.op_user_new", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_1) < 0) __PYX_ERR(15, 362, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __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_17 = NULL;
      __pyx_t_8 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_17, __pyx_mstate_global->__pyx_kp_u_cannot_create_too_many_user_defi_2};
        __pyx_t_13 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
        if (unlikely(!__pyx_t_13)) __PYX_ERR(15, 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(15, 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_XDECREF(__pyx_t_17);
  __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;
  size_t __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", 0);

  /* "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_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 387, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = NULL;
      __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_op_user_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 387, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = 1;
      #if CYTHON_UNPACK_METHODS
      if (likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
        assert(__pyx_t_4);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
        __pyx_t_6 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
        __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 387, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_3);
      }
      __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(15, 388, __pyx_L8_error)
            }
            if (unlikely((__Pyx_SetItemInt(__pyx_v_6mpi4py_3MPI_op_user_registry, __pyx_v_index, Py_None, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference) < 0))) __PYX_ERR(15, 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_5, &__pyx_t_4) < 0) __PYX_ERR(15, 387, __pyx_L10_except_error)
            __Pyx_XGOTREF(__pyx_t_3);
            __Pyx_XGOTREF(__pyx_t_5);
            __Pyx_XGOTREF(__pyx_t_4);
            __pyx_t_10 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(15, 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(15, 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(15, 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_5);
              __Pyx_XGIVEREF(__pyx_t_4);
              __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_5, __pyx_t_4);
              __pyx_t_3 = 0;  __pyx_t_5 = 0;  __pyx_t_4 = 0; 
              __PYX_ERR(15, 387, __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_4); __pyx_t_4 = 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_mstate_global->__pyx_tuple[12], NULL);
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            if (unlikely(!__pyx_t_9)) __PYX_ERR(15, 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;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("op_call", 0);

  /* "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(15, 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(15, 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(15, 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(15, 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(15, 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(15, 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(15, 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(15, 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(15, 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(15, 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(15, 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(15, 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(15, 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(15, 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(15, 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_3 = NULL;
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_cannot_call_user_defined_operati};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 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(15, 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_XDECREF(__pyx_t_3);
  __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":12
 * 
 * 
 * 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":17
 *     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":18
 * ):
 *     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":19
 *     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(16, 19, __pyx_L1_error)
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/bufaimpl.pxi":20
 *     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":19
 *     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":22
 *         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(16, 22, __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":23
 *     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":24
 *         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":25
 *     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":12
 * 
 * 
 * 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":27
 *     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":33
 *     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":34
 *     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":35
 *         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(16, 35, __pyx_L1_error)
  }
  if (unlikely((PyDict_SetItem(__pyx_v_6mpi4py_3MPI__mpi_buffer_comm, Py_None, __pyx_v_buf) < 0))) __PYX_ERR(16, 35, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":42
 *         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":27
 *     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", 0);

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":37
 *         _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":38
 *     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(16, 38, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyLong_FromSize_t(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 38, __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(16, 38, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":42
 *         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":27
 *     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", 0);

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":40
 *         _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":41
 *     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(16, 41, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyLong_FromSize_t(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 41, __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(16, 41, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":42
 *         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":27
 *     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":44
 *     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", 0);

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":50
 * ):
 *     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":52
 *     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":53
 *     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":54
 *         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(16, 54, __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(16, 54, __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":61
 *         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":62
 *         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":61
 *         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":63
 *     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":64
 *         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":63
 *     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":65
 *     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(16, 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/bufaimpl.pxi":44
 *     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", 0);

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":50
 * ):
 *     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":56
 *         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":57
 *     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(16, 57, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyLong_FromSize_t(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 57, __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(16, 57, __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":61
 *         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":62
 *         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":61
 *         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":63
 *     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":64
 *         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":63
 *     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":65
 *     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(16, 65, __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":44
 *     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", 0);

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":50
 * ):
 *     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":59
 *         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":60
 *     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(16, 60, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyLong_FromSize_t(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 60, __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(16, 60, __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":61
 *         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":62
 *         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":61
 *         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":63
 *     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":64
 *         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":63
 *     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":65
 *     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(16, 65, __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":44
 *     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", 0);

  /* "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(17, 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", 0);

  /* "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(17, 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;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("asarray_weights", 0);

  /* "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(17, 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(17, 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_3 = NULL;
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_empty_weights_but_nonzero_degree};
        __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 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(17, 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(17, 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_XDECREF(__pyx_t_3);
  __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(17, 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(17, 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(17, 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(17, 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(17, 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(17, 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;
  size_t __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;
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  __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_PyLong_FromSize_t(((Py_uintptr_t)__pyx_v_comm)); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 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_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = NULL;
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_commlock_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 69, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 69, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __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(17, 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(17, 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(17, 71, __pyx_L7_error)
            }
            if (unlikely((PyDict_DelItem(__pyx_v_6mpi4py_3MPI_commlock_registry, __pyx_v_key) < 0))) __PYX_ERR(17, 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_4, &__pyx_t_3) < 0) __PYX_ERR(17, 69, __pyx_L9_except_error)
          __Pyx_XGOTREF(__pyx_t_1);
          __Pyx_XGOTREF(__pyx_t_4);
          __Pyx_XGOTREF(__pyx_t_3);
          __pyx_t_10 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(17, 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(17, 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(17, 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_4);
            __Pyx_XGIVEREF(__pyx_t_3);
            __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_4, __pyx_t_3);
            __pyx_t_1 = 0;  __pyx_t_4 = 0;  __pyx_t_3 = 0; 
            __PYX_ERR(17, 69, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 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_mstate_global->__pyx_tuple[12], NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(17, 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();
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/commimpl.pxi":75
 * 
 * 
 * @cython.linetrace(False)             # <<<<<<<<<<<<<<
 * @cython.callspec("MPIAPI")
 * cdef int commlock_free_fn(
*/

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;
  PyGILState_STATE __pyx_gilstate_save;

  /* "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(17, 89, __pyx_L1_error)
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/commimpl.pxi":75
 * 
 * 
 * @cython.linetrace(False)             # <<<<<<<<<<<<<<
 * @cython.callspec("MPIAPI")
 * cdef int commlock_free_fn(
*/

  /* function exit code */
  __pyx_L1_error:;
  __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  __Pyx_WriteUnraisable("mpi4py.MPI.commlock_free_fn", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  __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", 0);

  /* "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(17, 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(17, 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(17, 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(17, 104, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyLong_FromSize_t(((Py_uintptr_t)MPI_COMM_SELF)); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 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(17, 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(17, 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(17, 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(17, 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(17, 111, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyLong_FromSize_t(((Py_uintptr_t)__pyx_v_comm)); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 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(17, 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(17, 113, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyLong_FromSize_t(((Py_uintptr_t)__pyx_v_comm)); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 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(17, 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(17, 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;
  size_t __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", 0);

  /* "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_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 122, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = NULL;
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_commlock_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 122, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 122, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __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(17, 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(17, 125, __pyx_L13_error)
              }
              __pyx_t_2 = __Pyx_PyDict_GetItem(__pyx_v_table, __pyx_v_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 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(((PyObject *)(((PyTypeObject*)PyExc_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_4, &__pyx_t_3) < 0) __PYX_ERR(17, 126, __pyx_L15_except_error)
              __Pyx_XGOTREF(__pyx_t_2);
              __Pyx_XGOTREF(__pyx_t_4);
              __Pyx_XGOTREF(__pyx_t_3);

              /* "src/mpi4py/MPI.src/commimpl.pxi":127
 *             lock = table[key]
 *         except KeyError:
 *             lock = Lock()             # <<<<<<<<<<<<<<
 *             table[key] = lock
 *         return lock
*/
              __pyx_t_14 = NULL;
              __Pyx_INCREF(__pyx_v_6mpi4py_3MPI_Lock);
              __pyx_t_15 = __pyx_v_6mpi4py_3MPI_Lock; 
              __pyx_t_5 = 1;
              #if CYTHON_UNPACK_METHODS
              if (unlikely(PyMethod_Check(__pyx_t_15))) {
                __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_15);
                assert(__pyx_t_14);
                PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_15);
                __Pyx_INCREF(__pyx_t_14);
                __Pyx_INCREF(__pyx__function);
                __Pyx_DECREF_SET(__pyx_t_15, __pyx__function);
                __pyx_t_5 = 0;
              }
              #endif
              {
                PyObject *__pyx_callargs[2] = {__pyx_t_14, NULL};
                __pyx_t_13 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_15, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
                __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
                __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
                if (unlikely(!__pyx_t_13)) __PYX_ERR(17, 127, __pyx_L15_except_error)
                __Pyx_GOTREF(__pyx_t_13);
              }
              __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(17, 128, __pyx_L15_except_error)
              }
              if (unlikely((PyDict_SetItem(__pyx_v_table, __pyx_v_key, __pyx_v_lock) < 0))) __PYX_ERR(17, 128, __pyx_L15_except_error)
              __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
              __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 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_3, &__pyx_t_4, &__pyx_t_2) < 0) __PYX_ERR(17, 122, __pyx_L9_except_error)
          __Pyx_XGOTREF(__pyx_t_3);
          __Pyx_XGOTREF(__pyx_t_4);
          __Pyx_XGOTREF(__pyx_t_2);
          __pyx_t_13 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_13)) __PYX_ERR(17, 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(17, 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(17, 122, __pyx_L9_except_error)
          __pyx_t_17 = (!__pyx_t_16);
          if (unlikely(__pyx_t_17)) {
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_GIVEREF(__pyx_t_4);
            __Pyx_XGIVEREF(__pyx_t_2);
            __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_4, __pyx_t_2);
            __pyx_t_3 = 0;  __pyx_t_4 = 0;  __pyx_t_2 = 0; 
            __PYX_ERR(17, 122, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 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_mstate_global->__pyx_tuple[12], NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(17, 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_mstate_global->__pyx_tuple[12], NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(17, 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;
  size_t __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", 0);

  /* "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_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 133, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = NULL;
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_commlock_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 133, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 133, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __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(17, 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_4, &__pyx_t_3) < 0) __PYX_ERR(17, 133, __pyx_L9_except_error)
          __Pyx_XGOTREF(__pyx_t_2);
          __Pyx_XGOTREF(__pyx_t_4);
          __Pyx_XGOTREF(__pyx_t_3);
          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(17, 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(17, 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(17, 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_4);
            __Pyx_XGIVEREF(__pyx_t_3);
            __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_4, __pyx_t_3);
            __pyx_t_2 = 0;  __pyx_t_4 = 0;  __pyx_t_3 = 0; 
            __PYX_ERR(17, 133, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 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_mstate_global->__pyx_tuple[12], NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(17, 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_mstate_global->__pyx_tuple[12], NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(17, 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\nCreate/get communicator lock.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3_comm_lock = {"_comm_lock", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_comm,&__pyx_mstate_global->__pyx_n_u_key,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(17, 137, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(17, 137, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(17, 137, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_comm_lock", 0) < (0)) __PYX_ERR(17, 137, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_comm_lock", 0, 1, 2, i); __PYX_ERR(17, 137, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(17, 137, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(17, 137, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __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(17, 137, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, 0, "comm", 0))) __PYX_ERR(17, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(17, 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\nInternal communicator lock table.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5_comm_lock_table = {"_comm_lock_table", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_comm,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(17, 144, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(17, 144, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_comm_lock_table", 0) < (0)) __PYX_ERR(17, 144, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_comm_lock_table", 1, 1, 1, i); __PYX_ERR(17, 144, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(17, 144, __pyx_L3_error)
    }
    __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(17, 144, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, 0, "comm", 0))) __PYX_ERR(17, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(17, 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(18, 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(18, 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(18, 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_SIZE
  __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 ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_read_fn,&__pyx_mstate_global->__pyx_n_u_write_fn,&__pyx_mstate_global->__pyx_n_u_extent_fn,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(19, 16, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(19, 16, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(19, 16, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(19, 16, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < (0)) __PYX_ERR(19, 16, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, i); __PYX_ERR(19, 16, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(19, 16, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(19, 16, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(19, 16, __pyx_L3_error)
    }
    __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(19, 16, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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__", 0);

  /* "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;
  size_t __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", 0);

  /* "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(19, 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(19, 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(19, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 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 = NULL;
    __Pyx_INCREF(__pyx_v_self->read_fn);
    __pyx_t_4 = __pyx_v_self->read_fn; 
    __pyx_t_5 = __Pyx_PyLong_From_MPI_Count(__pyx_v_count); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 38, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyLong_From_MPI_Offset(__pyx_v_position); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 38, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
      assert(__pyx_t_2);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
      __pyx_t_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[6] = {__pyx_t_2, __pyx_v_ubuf, ((PyObject *)__pyx_v_dtype), __pyx_t_5, __pyx_v_fbuf, __pyx_t_6};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_7, (6-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 38, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __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;
       __Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
      if ( 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;
      }
      __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;
  size_t __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", 0);

  /* "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(19, 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(19, 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(19, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 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 = NULL;
    __Pyx_INCREF(__pyx_v_self->write_fn);
    __pyx_t_4 = __pyx_v_self->write_fn; 
    __pyx_t_5 = __Pyx_PyLong_From_MPI_Count(__pyx_v_count); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 60, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyLong_From_MPI_Offset(__pyx_v_position); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 60, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
      assert(__pyx_t_2);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
      __pyx_t_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[6] = {__pyx_t_2, __pyx_v_ubuf, ((PyObject *)__pyx_v_dtype), __pyx_t_5, __pyx_v_fbuf, __pyx_t_6};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_7, (6-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 60, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __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;
       __Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
      if ( 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;
      }
      __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;
  size_t __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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 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_t_1 = NULL;
    __Pyx_INCREF(__pyx_v_self->extent_fn);
    __pyx_t_3 = __pyx_v_self->extent_fn; 
    __pyx_t_4 = 1;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
      assert(__pyx_t_1);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
      __pyx_t_4 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_1, ((PyObject *)__pyx_v_dtype)};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 73, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __pyx_t_5 = __Pyx_PyLong_As_MPI_Aint(__pyx_t_2); if (unlikely((__pyx_t_5 == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(19, 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;
       __Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
      if ( 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;
      }
      __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":82
 * 
 * 
 * @cython.linetrace(False)  # ~> TODO             # <<<<<<<<<<<<<<
 * cdef int datarep_read(
 *     void *userbuf,
*/

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;
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  __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(19, 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(((PyObject *)(((PyTypeObject*)PyExc_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(19, 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":82
 * 
 * 
 * @cython.linetrace(False)  # ~> TODO             # <<<<<<<<<<<<<<
 * cdef int datarep_read(
 *     void *userbuf,
*/

  /* 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();
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/drepimpl.pxi":101
 * 
 * 
 * @cython.linetrace(False)  # ~> TODO             # <<<<<<<<<<<<<<
 * cdef int datarep_write(
 *     void *userbuf,
*/

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;
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  __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(19, 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(((PyObject *)(((PyTypeObject*)PyExc_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(19, 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":101
 * 
 * 
 * @cython.linetrace(False)  # ~> TODO             # <<<<<<<<<<<<<<
 * cdef int datarep_write(
 *     void *userbuf,
*/

  /* 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();
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/drepimpl.pxi":120
 * 
 * 
 * @cython.linetrace(False)  # ~> TODO             # <<<<<<<<<<<<<<
 * cdef int datarep_extent(
 *     MPI_Datatype datatype,
*/

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;
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  __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(19, 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(((PyObject *)(((PyTypeObject*)PyExc_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(19, 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":120
 * 
 * 
 * @cython.linetrace(False)  # ~> TODO             # <<<<<<<<<<<<<<
 * cdef int datarep_extent(
 *     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_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();
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/drepimpl.pxi":139
 * 
 * 
 * @cython.linetrace(False)  # ~> TODO             # <<<<<<<<<<<<<<
 * @cython.callspec("MPIAPI")
 * cdef int datarep_read_fn(
*/

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":139
 * 
 * 
 * @cython.linetrace(False)  # ~> TODO             # <<<<<<<<<<<<<<
 * @cython.callspec("MPIAPI")
 * cdef int datarep_read_fn(
*/

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

/* "src/mpi4py/MPI.src/drepimpl.pxi":158
 * 
 * 
 * @cython.linetrace(False)  # ~> TODO             # <<<<<<<<<<<<<<
 * @cython.callspec("MPIAPI")
 * cdef int datarep_write_fn(
*/

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":158
 * 
 * 
 * @cython.linetrace(False)  # ~> TODO             # <<<<<<<<<<<<<<
 * @cython.callspec("MPIAPI")
 * cdef int datarep_write_fn(
*/

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

/* "src/mpi4py/MPI.src/drepimpl.pxi":177
 * 
 * 
 * @cython.linetrace(False)  # ~> TODO             # <<<<<<<<<<<<<<
 * @cython.callspec("MPIAPI")
 * cdef int datarep_extent_fn(
*/

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":177
 * 
 * 
 * @cython.linetrace(False)  # ~> TODO             # <<<<<<<<<<<<<<
 * @cython.callspec("MPIAPI")
 * cdef int datarep_extent_fn(
*/

  /* 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_mstate_global->__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 = PyUnicode_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", 0);

  /* "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(20, 22, __pyx_L1_error)
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(20, 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":27
 * # -----------------------------------------------------------------------------
 * 
 * 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;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6[3];
  size_t __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getformat", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":28
 * 
 * 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":29
 * 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":30
 *     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":29
 * 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":31
 *     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":32
 *         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":33
 *     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_3 = NULL;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":34
 *         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_4 = __pyx_f_6mpi4py_3MPI_pystr(__pyx_v_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 34, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_4), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 34, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u_format_string;
      __pyx_t_6[1] = __pyx_t_5;
      __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u_with_non_native_byte_order;
      __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_6, 3, 14 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 27, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5));
      if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 34, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_7 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
        __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_BufferError)), __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 33, __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(20, 33, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":32
 *         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":36
 *                 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":31
 *     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":37
 *                 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":38
 *         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":39
 *     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_4 = NULL;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":40
 *         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_3 = __pyx_f_6mpi4py_3MPI_pystr(__pyx_v_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 40, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_3), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 40, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u_format_string;
      __pyx_t_6[1] = __pyx_t_5;
      __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u_with_non_native_byte_order;
      __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_6, 3, 14 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 27, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5));
      if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 40, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_7 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
        __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_BufferError)), __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 39, __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(20, 39, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":38
 *         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":42
 *                 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":37
 *                 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":44
 *         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":27
 * # -----------------------------------------------------------------------------
 * 
 * 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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __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":46
 *     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;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11[3];
  PyObject *__pyx_t_12 = NULL;
  size_t __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("lookup_datatype", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":47
 * 
 * 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":48
 * 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(20, 48, __pyx_L3_error)
      }
      __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_6mpi4py_3MPI_TypeDict, __pyx_v_key); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 48, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (!(likely(__Pyx_TypeTest(__pyx_t_4, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype)))) __PYX_ERR(20, 48, __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":47
 * 
 * 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":49
 *     try:
 *         return <Datatype?> TypeDict[key]
 *     except KeyError:             # <<<<<<<<<<<<<<
 *         raise KeyError(f"cannot map {key!r} to MPI datatype")
 * 
*/
    __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_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(20, 49, __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":50
 *         return <Datatype?> TypeDict[key]
 *     except KeyError:
 *         raise KeyError(f"cannot map {key!r} to MPI datatype")             # <<<<<<<<<<<<<<
 * 
 * cdef inline Datatype asdatatype(object datatype):
*/
      __pyx_t_9 = NULL;
      __pyx_t_10 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_key), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 50, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11[0] = __pyx_mstate_global->__pyx_kp_u_cannot_map;
      __pyx_t_11[1] = __pyx_t_10;
      __pyx_t_11[2] = __pyx_mstate_global->__pyx_kp_u_to_MPI_datatype;
      __pyx_t_12 = __Pyx_PyUnicode_Join(__pyx_t_11, 3, 11 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_10) + 16, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_10));
      if (unlikely(!__pyx_t_12)) __PYX_ERR(20, 50, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_13 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_12};
        __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_KeyError)), __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (__pyx_t_13*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        if (unlikely(!__pyx_t_8)) __PYX_ERR(20, 50, __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(20, 50, __pyx_L5_except_error)
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":47
 * 
 * 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":46
 *     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_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_12);
  __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":52
 *         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", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":53
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":54
 * 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":53
 * 
 * cdef inline Datatype asdatatype(object datatype):
 *     if isinstance(datatype, Datatype):             # <<<<<<<<<<<<<<
 *         return <Datatype> datatype
 *     return lookup_datatype(datatype)
*/
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":55
 *     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(20, 55, __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":52
 *         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":57
 *     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", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":58
 * 
 * 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":59
 * 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 == ((void *)NULL))) __PYX_ERR(20, 59, __pyx_L1_error)
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_pystr(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 59, __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(20, 59, __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":57
 *     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":70
 *     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", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":78
 *                               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_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_message), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 78, __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":81
 *     # 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(20, 81, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":82
 *     # 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(20, 82, __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":83
 *     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(20, 83, __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":84
 *         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":85
 *         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":86
 *         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":87
 *         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":81
 *     # 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":89
 *         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":90
 *     # 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(20, 90, __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":92
 *     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":93
 *     # 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(20, 93, __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":92
 *     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":95
 *         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(20, 95, __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":97
 *         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":98
 *     # 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":99
 *     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":100
 *     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":70
 *     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":102
 *     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;
  size_t __pyx_t_11;
  MPI_Aint __pyx_t_12;
  PyObject *__pyx_t_13[7];
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15[4];
  MPI_Count __pyx_t_16;
  PyObject *__pyx_t_17[9];
  PyObject *__pyx_t_18 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("message_simple", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":112
 *                                ):
 *     # 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":113
 *     # 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":114
 *     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":115
 *         _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":116
 *         _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":112
 *                                ):
 *     # special-case PROC_NULL target rank
 *     if rank == MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *         _addr[0]  = NULL
 *         _count[0] = 0
*/
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":118
 *         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":119
 *     # 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":120
 *     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":121
 *     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":122
 *     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":123
 *     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":124
 *     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":123
 *     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":125
 *     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":126
 *         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(20, 126, __pyx_L1_error)
    __pyx_v_nargs = __pyx_t_3;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":127
 *     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":128
 *         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(20, 128, __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_INCREF(__pyx_t_4);
          __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1);
          __Pyx_INCREF(__pyx_t_5);
        } else {
          __pyx_t_4 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
          if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 128, __pyx_L1_error)
          __Pyx_XGOTREF(__pyx_t_4);
          __pyx_t_5 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
          if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 128, __pyx_L1_error)
          __Pyx_XGOTREF(__pyx_t_5);
        }
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 128, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 128, __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(20, 128, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __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(20, 128, __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(20, 128, __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":129
 *         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(20, 129, __pyx_L1_error)
      __pyx_t_1 = (__pyx_t_8 != 0);
      if (__pyx_t_1) {

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":130
 *             (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":129
 *         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":131
 *             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":132
 *                 (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(20, 132, __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_INCREF(__pyx_t_4);
            __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1);
            __Pyx_INCREF(__pyx_t_5);
          } else {
            __pyx_t_4 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
            if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 132, __pyx_L1_error)
            __Pyx_XGOTREF(__pyx_t_4);
            __pyx_t_5 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
            if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 132, __pyx_L1_error)
            __Pyx_XGOTREF(__pyx_t_5);
          }
          #else
          __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 132, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_5 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 132, __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(20, 132, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __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(20, 132, __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(20, 132, __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":131
 *             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":127
 *     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":133
 *             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":134
 *                 (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(20, 134, __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_INCREF(__pyx_t_5);
          __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1);
          __Pyx_INCREF(__pyx_t_4);
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 2);
          __Pyx_INCREF(__pyx_t_6);
        } else {
          __pyx_t_5 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
          if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 134, __pyx_L1_error)
          __Pyx_XGOTREF(__pyx_t_5);
          __pyx_t_4 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
          if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 134, __pyx_L1_error)
          __Pyx_XGOTREF(__pyx_t_4);
          __pyx_t_6 = __Pyx_PyList_GetItemRefFast(sequence, 2, __Pyx_ReferenceSharing_SharedReference);
          if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 134, __pyx_L1_error)
          __Pyx_XGOTREF(__pyx_t_6);
        }
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 134, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 134, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = __Pyx_PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 134, __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(20, 134, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __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(20, 134, __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(20, 134, __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":135
 *         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":136
 *             (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(20, 136, __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_INCREF(__pyx_t_6);
            __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1);
            __Pyx_INCREF(__pyx_t_4);
          } else {
            __pyx_t_6 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
            if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 136, __pyx_L1_error)
            __Pyx_XGOTREF(__pyx_t_6);
            __pyx_t_4 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
            if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 136, __pyx_L1_error)
            __Pyx_XGOTREF(__pyx_t_4);
          }
          #else
          __pyx_t_6 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 136, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 136, __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(20, 136, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __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(20, 136, __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(20, 136, __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":135
 *         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":133
 *             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":137
 *             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":138
 *                 (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(20, 138, __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_INCREF(__pyx_t_4);
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1);
          __Pyx_INCREF(__pyx_t_6);
          __pyx_t_5 = PyTuple_GET_ITEM(sequence, 2);
          __Pyx_INCREF(__pyx_t_5);
          __pyx_t_9 = PyTuple_GET_ITEM(sequence, 3);
          __Pyx_INCREF(__pyx_t_9);
        } else {
          __pyx_t_4 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
          if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 138, __pyx_L1_error)
          __Pyx_XGOTREF(__pyx_t_4);
          __pyx_t_6 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
          if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 138, __pyx_L1_error)
          __Pyx_XGOTREF(__pyx_t_6);
          __pyx_t_5 = __Pyx_PyList_GetItemRefFast(sequence, 2, __Pyx_ReferenceSharing_SharedReference);
          if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 138, __pyx_L1_error)
          __Pyx_XGOTREF(__pyx_t_5);
          __pyx_t_9 = __Pyx_PyList_GetItemRefFast(sequence, 3, __Pyx_ReferenceSharing_SharedReference);
          if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 138, __pyx_L1_error)
          __Pyx_XGOTREF(__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 = __Pyx_PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(20, 138, __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(20, 138, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __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(20, 138, __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(20, 138, __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":137
 *             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":140
 *             (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_5 = NULL;
      __pyx_t_11 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_message_expecting_2_to_4_items};
        __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 140, __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(20, 140, __pyx_L1_error)
    }
    __pyx_L7:;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":125
 *     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":141
 *         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":142
 *             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":141
 *         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":143
 *     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":144
 *         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":143
 *     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":146
 *         o_buf = msg
 *     else:
 *         raise TypeError("message: expecting buffer or list/tuple")             # <<<<<<<<<<<<<<
 *     # buffer: address, length, and datatype
 *     cdef void *baddr = NULL
*/
  /*else*/ {
    __pyx_t_5 = NULL;
    __pyx_t_11 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_message_expecting_buffer_or_list};
      __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 146, __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(20, 146, __pyx_L1_error)
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":148
 *         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":149
 *     # 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":150
 *     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":151
 *     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(20, 151, __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":154
 *                                       &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":155
 *     # 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":156
 *     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":157
 *     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":158
 *     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":159
 *     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":160
 *     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(20, 160, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_12 = __Pyx_PyLong_As_MPI_Aint(__pyx_t_9); if (unlikely((__pyx_t_12 == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(20, 160, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_v_displ = ((MPI_Aint)__pyx_t_12);

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":161
 *     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":162
 *         displ = <MPI_Aint> PyNumber_Index(o_displ)
 *         if displ < 0:
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 f"message: negative displacement {displ}")
 *         if displ > 0:
*/
      __pyx_t_5 = NULL;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":163
 *         if displ < 0:
 *             raise ValueError(
 *                 f"message: negative displacement {displ}")             # <<<<<<<<<<<<<<
 *         if displ > 0:
 *             if btype == MPI_DATATYPE_NULL:
*/
      __pyx_t_6 = __Pyx_PyUnicode_From_MPI_Aint(__pyx_v_displ, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 163, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_message_negative_displacement, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 163, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_11 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_4};
        __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 162, __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(20, 162, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":161
 *     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":164
 *             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":165
 *                 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":166
 *         if displ > 0:
 *             if btype == MPI_DATATYPE_NULL:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     f"message: cannot handle displacement, "
 *                     f"datatype is null")
*/
        __pyx_t_4 = NULL;
        __pyx_t_11 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_message_cannot_handle_displaceme};
          __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 166, __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(20, 166, __pyx_L1_error)

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":165
 *                 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":169
 *                     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(20, 169, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":170
 *                     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":171
 *             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_4 = NULL;

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":173
 *                 raise ValueError(
 *                     f"message: cannot handle displacement, "
 *                     f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")             # <<<<<<<<<<<<<<
 *             if displ*extent > length:
 *                 raise ValueError(
*/
        __pyx_t_5 = __Pyx_PyUnicode_From_MPI_Count(__pyx_v_extent, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 173, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_PyUnicode_From_MPI_Count(__pyx_v_lb, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 173, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_10 = __Pyx_PyUnicode_From_MPI_Count((__pyx_v_lb + __pyx_v_extent), 0, ' ', 'd'); if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 173, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_13[0] = __pyx_mstate_global->__pyx_kp_u_message_cannot_handle_displaceme_2;
        __pyx_t_13[1] = __pyx_t_5;
        __pyx_t_13[2] = __pyx_mstate_global->__pyx_kp_u_lb;
        __pyx_t_13[3] = __pyx_t_6;
        __pyx_t_13[4] = __pyx_mstate_global->__pyx_kp_u_ub;
        __pyx_t_13[5] = __pyx_t_10;
        __pyx_t_13[6] = __pyx_mstate_global->__pyx_kp_u__4;

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":172
 *             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_14 = __Pyx_PyUnicode_Join(__pyx_t_13, 7, 53 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 5 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_10) + 1, 127);
        if (unlikely(!__pyx_t_14)) __PYX_ERR(20, 172, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_14);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __pyx_t_11 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_14};
          __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 171, __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(20, 171, __pyx_L1_error)

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":170
 *                     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":174
 *                     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":175
 *                     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_14 = NULL;

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":176
 *             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_4 = __Pyx_PyUnicode_From_MPI_Aint(__pyx_v_displ, 0, ' ', 'd'); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 176, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":177
 *                 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_10 = __Pyx_PyUnicode_From_MPI_Count((__pyx_v_length / __pyx_v_extent), 0, ' ', 'd'); if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 177, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_15[0] = __pyx_mstate_global->__pyx_kp_u_message_displacement;
        __pyx_t_15[1] = __pyx_t_4;
        __pyx_t_15[2] = __pyx_mstate_global->__pyx_kp_u_out_of_bounds_number_of_datatyp;
        __pyx_t_15[3] = __pyx_t_10;

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":176
 *             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_15, 4, 22 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 43 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_10), 127);
        if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 176, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __pyx_t_11 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_14, __pyx_t_6};
          __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 175, __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(20, 175, __pyx_L1_error)

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":174
 *                     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":178
 *                     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":179
 *                     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":164
 *             raise ValueError(
 *                 f"message: negative displacement {displ}")
 *         if displ > 0:             # <<<<<<<<<<<<<<
 *             if btype == MPI_DATATYPE_NULL:
 *                 raise ValueError(
*/
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":159
 *     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":180
 *             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":181
 *             length -= offset
 *     if o_count is not None:
 *         count = <MPI_Count> PyNumber_Index(o_count)             # <<<<<<<<<<<<<<
 *         if count < 0:
 *             raise ValueError(
*/
    __pyx_t_9 = PyNumber_Index(__pyx_v_o_count); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 181, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_16 = __Pyx_PyLong_As_MPI_Count(__pyx_t_9); if (unlikely((__pyx_t_16 == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(20, 181, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_v_count = ((MPI_Count)__pyx_t_16);

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":182
 *     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":183
 *         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 = NULL;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":184
 *         if count < 0:
 *             raise ValueError(
 *                 f"message: negative count {count}")             # <<<<<<<<<<<<<<
 *         if count > 0 and o_buf is None:
 *             raise ValueError(
*/
      __pyx_t_14 = __Pyx_PyUnicode_From_MPI_Count(__pyx_v_count, 0, ' ', 'd'); if (unlikely(!__pyx_t_14)) __PYX_ERR(20, 184, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      __pyx_t_10 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_message_negative_count, __pyx_t_14); if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 184, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __pyx_t_11 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_10};
        __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 183, __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(20, 183, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":182
 *     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":185
 *             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":186
 *                 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_10 = NULL;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":187
 *         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_PyUnicode_From_MPI_Count(__pyx_v_count, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 187, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_14 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_message_buffer_is_None_but_count, __pyx_t_6); if (unlikely(!__pyx_t_14)) __PYX_ERR(20, 187, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_11 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_t_14};
        __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 186, __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(20, 186, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":185
 *             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":180
 *             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":188
 *             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":189
 *                 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":190
 *     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":191
 *         if extent == 0:
 *             if btype == MPI_DATATYPE_NULL:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     f"message: cannot infer count, "
 *                     f"datatype is null")
*/
        __pyx_t_14 = NULL;
        __pyx_t_11 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_14, __pyx_mstate_global->__pyx_kp_u_message_cannot_infer_count_datat};
          __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 191, __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(20, 191, __pyx_L1_error)

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":190
 *     elif length > 0:
 *         if extent == 0:
 *             if btype == MPI_DATATYPE_NULL:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     f"message: cannot infer count, "
*/
      }

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":194
 *                     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(20, 194, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":195
 *                     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":196
 *             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_14 = NULL;

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":198
 *                 raise ValueError(
 *                     f"message: cannot infer count, "
 *                     f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")             # <<<<<<<<<<<<<<
 *         if (length % extent) != 0:
 *             raise ValueError(
*/
        __pyx_t_10 = __Pyx_PyUnicode_From_MPI_Count(__pyx_v_extent, 0, ' ', 'd'); if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 198, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_6 = __Pyx_PyUnicode_From_MPI_Count(__pyx_v_lb, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 198, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_4 = __Pyx_PyUnicode_From_MPI_Count((__pyx_v_lb + __pyx_v_extent), 0, ' ', 'd'); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 198, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_13[0] = __pyx_mstate_global->__pyx_kp_u_message_cannot_infer_count_datat_2;
        __pyx_t_13[1] = __pyx_t_10;
        __pyx_t_13[2] = __pyx_mstate_global->__pyx_kp_u_lb;
        __pyx_t_13[3] = __pyx_t_6;
        __pyx_t_13[4] = __pyx_mstate_global->__pyx_kp_u_ub;
        __pyx_t_13[5] = __pyx_t_4;
        __pyx_t_13[6] = __pyx_mstate_global->__pyx_kp_u__4;

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":197
 *             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 = __Pyx_PyUnicode_Join(__pyx_t_13, 7, 45 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_10) + 5 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 1, 127);
        if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 197, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_11 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_14, __pyx_t_5};
          __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 196, __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(20, 196, __pyx_L1_error)

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":195
 *                     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":189
 *                 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":199
 *                     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":200
 *                     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 = NULL;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":202
 *             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_14 = __Pyx_PyUnicode_From_MPI_Count(__pyx_v_length, 0, ' ', 'd'); if (unlikely(!__pyx_t_14)) __PYX_ERR(20, 202, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":203
 *                 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_4 = __Pyx_PyUnicode_From_MPI_Count(__pyx_v_extent, 0, ' ', 'd'); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 203, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_6 = __Pyx_PyUnicode_From_MPI_Count(__pyx_v_lb, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 203, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_10 = __Pyx_PyUnicode_From_MPI_Count((__pyx_v_lb + __pyx_v_extent), 0, ' ', 'd'); if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 203, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_17[0] = __pyx_mstate_global->__pyx_kp_u_message_cannot_infer_count_buffe;
      __pyx_t_17[1] = __pyx_t_14;
      __pyx_t_17[2] = __pyx_mstate_global->__pyx_kp_u_is_not_a_multiple_of_datatype_e;
      __pyx_t_17[3] = __pyx_t_4;
      __pyx_t_17[4] = __pyx_mstate_global->__pyx_kp_u_lb;
      __pyx_t_17[5] = __pyx_t_6;
      __pyx_t_17[6] = __pyx_mstate_global->__pyx_kp_u_ub;
      __pyx_t_17[7] = __pyx_t_10;
      __pyx_t_17[8] = __pyx_mstate_global->__pyx_kp_u__4;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":201
 *         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_18 = __Pyx_PyUnicode_Join(__pyx_t_17, 9, 43 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_14) + 38 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 5 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_10) + 1, 127);
      if (unlikely(!__pyx_t_18)) __PYX_ERR(20, 201, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_18);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_11 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_18};
        __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
        if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 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(20, 200, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":199
 *                     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":204
 *                 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":205
 *                 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":204
 *                 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":207
 *             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":208
 *         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_18 = NULL;

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":210
 *                 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_5 = __Pyx_PyUnicode_From_MPI_Count((__pyx_v_length / __pyx_v_extent), 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 210, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":211
 *                     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_10 = __Pyx_PyUnicode_From_int(__pyx_v_blocks, 0, ' ', 'd'); if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 211, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_15[0] = __pyx_mstate_global->__pyx_kp_u_message_cannot_infer_count_numbe;
        __pyx_t_15[1] = __pyx_t_5;
        __pyx_t_15[2] = __pyx_mstate_global->__pyx_kp_u_is_not_a_multiple_of_required_n;
        __pyx_t_15[3] = __pyx_t_10;

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":209
 *             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_15, 4, 47 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 48 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_10), 127);
        if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 209, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __pyx_t_11 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_18, __pyx_t_6};
          __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 208, __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(20, 208, __pyx_L1_error)

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":207
 *             count = length // extent
 *         else:
 *             if ((length // extent) % blocks) != 0:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     f"message: cannot infer count, "
*/
      }

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":212
 *                     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":188
 *             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":214
 *             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_9 = __pyx_v_o_count;
  } else {
    __pyx_t_6 = __Pyx_PyLong_From_MPI_Count(__pyx_v_count); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 214, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_9 = __pyx_t_6;
    __pyx_t_6 = 0;
  }
  __Pyx_GIVEREF(__pyx_t_9);
  __Pyx_GOTREF(__pyx_v_m->count);
  __Pyx_DECREF(__pyx_v_m->count);
  __pyx_v_m->count = __pyx_t_9;
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":215
 *     # 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_9 = __pyx_v_o_displ;
  } else {
    __pyx_t_6 = __Pyx_PyLong_From_MPI_Aint(__pyx_v_displ); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 215, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_9 = __pyx_t_6;
    __pyx_t_6 = 0;
  }
  __Pyx_GIVEREF(__pyx_t_9);
  __Pyx_GOTREF(__pyx_v_m->displ);
  __Pyx_DECREF(__pyx_v_m->displ);
  __pyx_v_m->displ = __pyx_t_9;
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":216
 *     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":217
 *     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":218
 *     _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":219
 *     _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":102
 *     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_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_18);
  __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":221
 *     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;
  size_t __pyx_t_11;
  PyObject *__pyx_t_12[7];
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14[9];
  PyObject *__pyx_t_15 = NULL;
  int __pyx_t_16;
  int __pyx_t_17;
  MPI_Count __pyx_t_18;
  MPI_Aint __pyx_t_19;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("message_vector", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":232
 *                                ):
 *     # 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":233
 *     # 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":234
 *     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":235
 *         _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":236
 *         _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":237
 *         _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":232
 *                                ):
 *     # special-case PROC_NULL target rank
 *     if rank == MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *         _addr[0]   = NULL
 *         _counts[0] = NULL
*/
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":239
 *         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":240
 *     # 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":241
 *     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":242
 *     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":243
 *     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":244
 *     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":245
 *     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":244
 *     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":246
 *     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":247
 *         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(20, 247, __pyx_L1_error)
    __pyx_v_nargs = __pyx_t_3;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":248
 *     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":249
 *         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(20, 249, __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_INCREF(__pyx_t_4);
          __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1);
          __Pyx_INCREF(__pyx_t_5);
        } else {
          __pyx_t_4 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
          if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 249, __pyx_L1_error)
          __Pyx_XGOTREF(__pyx_t_4);
          __pyx_t_5 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
          if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 249, __pyx_L1_error)
          __Pyx_XGOTREF(__pyx_t_5);
        }
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 249, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 249, __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(20, 249, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __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(20, 249, __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(20, 249, __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":250
 *         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(20, 250, __pyx_L1_error)
      __pyx_t_1 = (__pyx_t_8 != 0);
      if (__pyx_t_1) {

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":251
 *             (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":250
 *         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":252
 *             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":253
 *                 (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(20, 253, __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_INCREF(__pyx_t_4);
            __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1);
            __Pyx_INCREF(__pyx_t_5);
          } else {
            __pyx_t_4 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
            if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 253, __pyx_L1_error)
            __Pyx_XGOTREF(__pyx_t_4);
            __pyx_t_5 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
            if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 253, __pyx_L1_error)
            __Pyx_XGOTREF(__pyx_t_5);
          }
          #else
          __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 253, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_5 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 253, __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(20, 253, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __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(20, 253, __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(20, 253, __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":252
 *             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":248
 *     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":254
 *             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":255
 *                 (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(20, 255, __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_INCREF(__pyx_t_5);
          __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1);
          __Pyx_INCREF(__pyx_t_4);
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 2);
          __Pyx_INCREF(__pyx_t_6);
        } else {
          __pyx_t_5 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
          if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 255, __pyx_L1_error)
          __Pyx_XGOTREF(__pyx_t_5);
          __pyx_t_4 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
          if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 255, __pyx_L1_error)
          __Pyx_XGOTREF(__pyx_t_4);
          __pyx_t_6 = __Pyx_PyList_GetItemRefFast(sequence, 2, __Pyx_ReferenceSharing_SharedReference);
          if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 255, __pyx_L1_error)
          __Pyx_XGOTREF(__pyx_t_6);
        }
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 255, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 255, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = __Pyx_PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 255, __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(20, 255, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __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(20, 255, __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(20, 255, __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":256
 *         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":257
 *             (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(20, 257, __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_INCREF(__pyx_t_6);
            __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1);
            __Pyx_INCREF(__pyx_t_4);
          } else {
            __pyx_t_6 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
            if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 257, __pyx_L1_error)
            __Pyx_XGOTREF(__pyx_t_6);
            __pyx_t_4 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
            if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 257, __pyx_L1_error)
            __Pyx_XGOTREF(__pyx_t_4);
          }
          #else
          __pyx_t_6 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 257, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 257, __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(20, 257, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __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(20, 257, __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(20, 257, __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":256
 *         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":254
 *             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":258
 *             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":259
 *                 (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(20, 259, __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_INCREF(__pyx_t_4);
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1);
          __Pyx_INCREF(__pyx_t_6);
          __pyx_t_5 = PyTuple_GET_ITEM(sequence, 2);
          __Pyx_INCREF(__pyx_t_5);
          __pyx_t_9 = PyTuple_GET_ITEM(sequence, 3);
          __Pyx_INCREF(__pyx_t_9);
        } else {
          __pyx_t_4 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
          if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 259, __pyx_L1_error)
          __Pyx_XGOTREF(__pyx_t_4);
          __pyx_t_6 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
          if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 259, __pyx_L1_error)
          __Pyx_XGOTREF(__pyx_t_6);
          __pyx_t_5 = __Pyx_PyList_GetItemRefFast(sequence, 2, __Pyx_ReferenceSharing_SharedReference);
          if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 259, __pyx_L1_error)
          __Pyx_XGOTREF(__pyx_t_5);
          __pyx_t_9 = __Pyx_PyList_GetItemRefFast(sequence, 3, __Pyx_ReferenceSharing_SharedReference);
          if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 259, __pyx_L1_error)
          __Pyx_XGOTREF(__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 = __Pyx_PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(20, 259, __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(20, 259, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __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(20, 259, __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(20, 259, __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":258
 *             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":261
 *             (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_5 = NULL;
      __pyx_t_11 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_message_expecting_2_to_4_items};
        __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 261, __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(20, 261, __pyx_L1_error)
    }
    __pyx_L7:;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":246
 *     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":262
 *         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":263
 *             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":262
 *         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":264
 *     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":265
 *         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":264
 *     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":267
 *         o_buf = msg
 *     else:
 *         raise TypeError("message: expecting buffer or list/tuple")             # <<<<<<<<<<<<<<
 *     # buffer: address, length, and datatype
 *     cdef void *baddr = NULL
*/
  /*else*/ {
    __pyx_t_5 = NULL;
    __pyx_t_11 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_message_expecting_buffer_or_list};
      __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 267, __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(20, 267, __pyx_L1_error)
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":269
 *         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":270
 *     # 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":271
 *     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":272
 *     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(20, 272, __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":276
 *     # 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":277
 *     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":278
 *     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":279
 *     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":280
 *     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":281
 *     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":282
 *     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":283
 *     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":284
 *         if bsize > 0:
 *             if btype == MPI_DATATYPE_NULL:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     f"message: cannot infer count, "
 *                     f"datatype is null")
*/
        __pyx_t_5 = NULL;
        __pyx_t_11 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_message_cannot_infer_count_datat};
          __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 284, __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(20, 284, __pyx_L1_error)

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":283
 *     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":287
 *                     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(20, 287, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":288
 *                     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":289
 *             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 = NULL;

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":291
 *                 raise ValueError(
 *                     f"message: cannot infer count, "
 *                     f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")             # <<<<<<<<<<<<<<
 *             if (bsize % extent) != 0:
 *                 raise ValueError(
*/
        __pyx_t_6 = __Pyx_PyUnicode_From_MPI_Count(__pyx_v_extent, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 291, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_4 = __Pyx_PyUnicode_From_MPI_Count(__pyx_v_lb, 0, ' ', 'd'); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 291, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_10 = __Pyx_PyUnicode_From_MPI_Count((__pyx_v_lb + __pyx_v_extent), 0, ' ', 'd'); if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 291, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_12[0] = __pyx_mstate_global->__pyx_kp_u_message_cannot_infer_count_datat_2;
        __pyx_t_12[1] = __pyx_t_6;
        __pyx_t_12[2] = __pyx_mstate_global->__pyx_kp_u_lb;
        __pyx_t_12[3] = __pyx_t_4;
        __pyx_t_12[4] = __pyx_mstate_global->__pyx_kp_u_ub;
        __pyx_t_12[5] = __pyx_t_10;
        __pyx_t_12[6] = __pyx_mstate_global->__pyx_kp_u__4;

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":290
 *             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_13 = __Pyx_PyUnicode_Join(__pyx_t_12, 7, 45 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6) + 5 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_10) + 1, 127);
        if (unlikely(!__pyx_t_13)) __PYX_ERR(20, 290, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __pyx_t_11 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_13};
          __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 289, __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(20, 289, __pyx_L1_error)

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":288
 *                     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":292
 *                     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":293
 *                     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_13 = NULL;

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":295
 *                 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_5 = __Pyx_PyUnicode_From_MPI_Count(__pyx_v_bsize, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 295, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":296
 *                     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_10 = __Pyx_PyUnicode_From_MPI_Count(__pyx_v_extent, 0, ' ', 'd'); if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 296, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_4 = __Pyx_PyUnicode_From_MPI_Count(__pyx_v_lb, 0, ' ', 'd'); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 296, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = __Pyx_PyUnicode_From_MPI_Count((__pyx_v_lb + __pyx_v_extent), 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 296, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_14[0] = __pyx_mstate_global->__pyx_kp_u_message_cannot_infer_count_buffe;
        __pyx_t_14[1] = __pyx_t_5;
        __pyx_t_14[2] = __pyx_mstate_global->__pyx_kp_u_is_not_a_multiple_of_datatype_e;
        __pyx_t_14[3] = __pyx_t_10;
        __pyx_t_14[4] = __pyx_mstate_global->__pyx_kp_u_lb;
        __pyx_t_14[5] = __pyx_t_4;
        __pyx_t_14[6] = __pyx_mstate_global->__pyx_kp_u_ub;
        __pyx_t_14[7] = __pyx_t_6;
        __pyx_t_14[8] = __pyx_mstate_global->__pyx_kp_u__4;

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":294
 *             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_15 = __Pyx_PyUnicode_Join(__pyx_t_14, 9, 43 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 38 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_10) + 5 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6) + 1, 127);
        if (unlikely(!__pyx_t_15)) __PYX_ERR(20, 294, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_15);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_11 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_t_15};
          __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
          if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 293, __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(20, 293, __pyx_L1_error)

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":292
 *                     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":297
 *                     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":282
 *     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":298
 *                     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(20, 298, __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":299
 *             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_16 = __pyx_t_8;
    for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) {
      __pyx_v_i = __pyx_t_17;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":300
 *         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":301
 *         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":281
 *     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":302
 *             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":303
 *             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(20, 303, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_18 = __Pyx_PyLong_As_MPI_Count(__pyx_t_9); if (unlikely((__pyx_t_18 == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(20, 303, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_v_cvalue = ((MPI_Count)__pyx_t_18);

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":304
 *     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(20, 304, __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":305
 *         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_16 = __pyx_t_8;
    for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) {
      __pyx_v_i = __pyx_t_17;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":306
 *         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":302
 *             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":308
 *             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(20, 308, __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":309
 *     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":310
 *         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":311
 *     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(20, 311, __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":312
 *         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_16 = __pyx_t_8;
    for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) {
      __pyx_v_i = __pyx_t_17;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":313
 *         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":314
 *         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":309
 *     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":315
 *             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":316
 *             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(20, 316, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_19 = __Pyx_PyLong_As_MPI_Aint(__pyx_t_9); if (unlikely((__pyx_t_19 == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(20, 316, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_v_avalue = ((MPI_Aint)__pyx_t_19);

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":317
 *     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(20, 317, __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":318
 *         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_16 = __pyx_t_8;
    for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) {
      __pyx_v_i = __pyx_t_17;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":319
 *         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":315
 *             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":321
 *             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(20, 321, __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":323
 *         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":324
 *     # 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":325
 *     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":326
 *     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":327
 *     _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":328
 *     _counts[0] = counts
 *     _displs[0] = displs
 *     _type[0]   = btype             # <<<<<<<<<<<<<<
 *     return m
 * 
*/
  (__pyx_v__type[0]) = __pyx_v_btype;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":329
 *     _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":221
 *     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_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_15);
  __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":331
 *     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;
  size_t __pyx_t_10;
  int __pyx_t_11;
  int __pyx_t_12;
  int __pyx_t_13;
  int __pyx_t_14;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("message_vector_w", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":340
 *                             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(20, 340, __pyx_L1_error)
  __pyx_v_nargs = __pyx_t_1;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":342
 *     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":343
 *     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(20, 343, __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_INCREF(__pyx_t_3);
        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1);
        __Pyx_INCREF(__pyx_t_4);
      } else {
        __pyx_t_3 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 343, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_3);
        __pyx_t_4 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 343, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_4);
      }
      #else
      __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 343, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 343, __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(20, 343, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __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(20, 343, __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(20, 343, __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":344
 *     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":342
 *     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":345
 *         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":346
 *         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(20, 346, __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_INCREF(__pyx_t_4);
        __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);
        __Pyx_INCREF(__pyx_t_3);
        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 2);
        __Pyx_INCREF(__pyx_t_5);
      } else {
        __pyx_t_4 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 346, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_4);
        __pyx_t_3 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 346, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_3);
        __pyx_t_5 = __Pyx_PyList_GetItemRefFast(sequence, 2, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 346, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_5);
      }
      #else
      __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 346, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 346, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = __Pyx_PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 346, __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(20, 346, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_6 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __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(20, 346, __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(20, 346, __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(20, 346, __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_INCREF(__pyx_t_7);
        __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1);
        __Pyx_INCREF(__pyx_t_8);
      } else {
        __pyx_t_7 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_7)) __PYX_ERR(20, 346, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_7);
        __pyx_t_8 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_8)) __PYX_ERR(20, 346, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_8);
      }
      #else
      __pyx_t_7 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(20, 346, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(20, 346, __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(20, 346, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_6 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __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(20, 346, __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(20, 346, __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":345
 *         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":347
 *     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":348
 *         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(20, 348, __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_INCREF(__pyx_t_5);
        __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);
        __Pyx_INCREF(__pyx_t_3);
        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2);
        __Pyx_INCREF(__pyx_t_4);
        __pyx_t_8 = PyTuple_GET_ITEM(sequence, 3);
        __Pyx_INCREF(__pyx_t_8);
      } else {
        __pyx_t_5 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 348, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_5);
        __pyx_t_3 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 348, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_3);
        __pyx_t_4 = __Pyx_PyList_GetItemRefFast(sequence, 2, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 348, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_4);
        __pyx_t_8 = __Pyx_PyList_GetItemRefFast(sequence, 3, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_8)) __PYX_ERR(20, 348, __pyx_L1_error)
        __Pyx_XGOTREF(__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 = __Pyx_PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(20, 348, __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(20, 348, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_6 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __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(20, 348, __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(20, 348, __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":347
 *     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":350
 *         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_4 = NULL;
    __pyx_t_10 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_message_expecting_2_to_4_items};
      __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_8)) __PYX_ERR(20, 350, __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(20, 350, __pyx_L1_error)
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":351
 *     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(20, 351, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":352
 *         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":353
 *     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_4 = NULL;
      __pyx_t_10 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_message_BOTTOM_requires_counts};
        __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_8)) __PYX_ERR(20, 353, __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(20, 353, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":352
 *         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":354
 *         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":355
 *             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_4 = NULL;
      __pyx_t_10 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_message_BOTTOM_requires_displs};
        __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_8)) __PYX_ERR(20, 355, __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(20, 355, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":354
 *         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":356
 *         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":351
 *     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":357
 *             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":358
 *         _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(20, 358, __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":357
 *             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":360
 *         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(20, 360, __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":361
 *     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_11 = (__pyx_v_o_counts == Py_None);
  if (__pyx_t_11) {
  } else {
    __pyx_t_2 = __pyx_t_11;
    goto __pyx_L16_bool_binop_done;
  }
  __pyx_t_11 = (__pyx_v_o_displs == Py_None);
  __pyx_t_2 = __pyx_t_11;
  __pyx_L16_bool_binop_done:;
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":362
 *         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(20, 362, __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":363
 *     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(20, 363, __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":364
 *         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_12 = __pyx_v_blocks;
    __pyx_t_13 = __pyx_t_12;
    for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
      __pyx_v_i = __pyx_t_14;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":365
 *         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":366
 *         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":361
 *     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":368
 *             _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(20, 368, __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":369
 *     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(20, 369, __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":370
 *         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(20, 370, __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":371
 *         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(20, 371, __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) != (0)) __PYX_ERR(20, 371, __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) != (0)) __PYX_ERR(20, 371, __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) != (0)) __PYX_ERR(20, 371, __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) != (0)) __PYX_ERR(20, 371, __pyx_L1_error);
  __pyx_r = ((PyObject*)__pyx_t_8);
  __pyx_t_8 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":331
 *     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":387
 *     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_SIZE
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__cinit__", __pyx_kwds); 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":388
 * 
 *     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":389
 *     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":390
 *         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":387
 *     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":392
 *         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", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":393
 * 
 *     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(20, 393, __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":400
 *             &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":392
 *         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":402
 *         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", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":403
 * 
 *     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(20, 403, __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":410
 *             &self.dtype,
 *         )
 *         return 0             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":402
 *         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":413
 * 
 * 
 * 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", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":414
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_msg_p2p), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 414, __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":415
 * 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(20, 415, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":416
 *     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":413
 * 
 * 
 * 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":418
 *     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", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":419
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_msg_p2p), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 419, __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":420
 * 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(20, 420, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":421
 *     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":418
 *     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":423
 *     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", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":424
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_msg_p2p), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 424, __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":425
 * 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(20, 425, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":426
 *     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":423
 *     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":428
 *     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", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":429
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_msg_p2p), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 429, __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":430
 * 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(20, 430, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":431
 *     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":428
 *     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":450
 *     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_SIZE
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__cinit__", __pyx_kwds); 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":451
 * 
 *     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":452
 *     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":453
 *         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":454
 *         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":455
 *         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":450
 *     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":461
 * 
 *     # 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", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":465
 *         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":466
 *     ) 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":467
 *         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(20, 467, __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":466
 *     ) 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":471
 *                 &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":474
 *                 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(20, 471, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":471
 *                 &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":475
 *                 &self.sbuf, &self.scounts,
 *                 &self.sdispls, &self.stype)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     # recvbuf arguments
*/
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":461
 * 
 *     # 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":478
 * 
 *     # 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", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":482
 *         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":483
 *     ) 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":484
 *         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(20, 484, __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":483
 *     ) 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":488
 *                 &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":491
 *                 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(20, 488, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":488
 *                 &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":492
 *                 &self.rbuf, &self.rcounts,
 *                 &self.rdispls, &self.rtype)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     # bcast
*/
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":478
 * 
 *     # 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":495
 * 
 *     # 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":499
 *         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":500
 *     ) 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":501
 *         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(20, 501, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":502
 *         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":503
 *         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(20, 503, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":504
 *         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":505
 *             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(20, 505, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":506
 *             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":504
 *         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":508
 *                 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(20, 508, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":509
 *             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":502
 *         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":511
 *                 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":512
 *         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(20, 512, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":513
 *             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":511
 *                 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":515
 *                 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(20, 515, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":516
 *             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":517
 *                 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":518
 *                 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":519
 *         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":520
 *             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":517
 *                 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":522
 *             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":523
 *         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":524
 *             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":525
 *             self.scount = self.rcount
 *             self.stype  = self.rtype
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     # gather/gatherv
*/
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":495
 * 
 *     # 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":528
 * 
 *     # 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":532
 *         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":533
 *     ) 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":534
 *         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(20, 534, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":535
 *         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":536
 *         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(20, 536, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":537
 *         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(20, 537, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":538
 *             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":539
 *             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(20, 539, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":540
 *             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(20, 540, __pyx_L1_error)
      if (__pyx_t_1) {

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":541
 *                 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":540
 *             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":543
 *                     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(20, 543, __pyx_L1_error)
      }
      __pyx_L6:;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":538
 *             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":545
 *                     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(20, 545, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":546
 *             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(20, 546, __pyx_L1_error)
    }
    __pyx_L5:;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":535
 *         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":548
 *                 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(20, 548, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":549
 *         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":550
 *             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(20, 550, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":551
 *             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(20, 551, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":549
 *         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":553
 *                 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(20, 553, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":554
 *             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(20, 554, __pyx_L1_error)
    }
    __pyx_L7:;
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":555
 *                 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":528
 * 
 *     # 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":558
 * 
 *     # 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":563
 *         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":564
 *     ) 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":565
 *         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(20, 565, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":566
 *         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":567
 *         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(20, 567, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":568
 *         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(20, 568, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":569
 *             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":570
 *             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(20, 570, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":571
 *             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(20, 571, __pyx_L1_error)
      if (__pyx_t_1) {

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":572
 *                 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":571
 *             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":574
 *                     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(20, 574, __pyx_L1_error)
      }
      __pyx_L6:;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":569
 *             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":576
 *                     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(20, 576, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":577
 *             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(20, 577, __pyx_L1_error)
    }
    __pyx_L5:;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":566
 *         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":579
 *                 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(20, 579, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":580
 *         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":581
 *             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(20, 581, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":582
 *             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(20, 582, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":580
 *         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":584
 *                 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(20, 584, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":585
 *             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(20, 585, __pyx_L1_error)
    }
    __pyx_L7:;
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":586
 *                 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":558
 * 
 *     # 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":589
 * 
 *     # 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":593
 *         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":594
 *     ) 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":595
 *         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(20, 595, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":596
 *         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":597
 *         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(20, 597, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":596
 *         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":599
 *             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(20, 599, __pyx_L1_error)
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":601
 *             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(20, 601, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":602
 *         #
 *         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(20, 602, __pyx_L1_error)
  __pyx_t_1 = __pyx_t_3;
  __pyx_L6_bool_binop_done:;
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":603
 *         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":602
 *         #
 *         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":605
 *             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(20, 605, __pyx_L1_error)
  }
  __pyx_L5:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":606
 *         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":589
 * 
 *     # 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":609
 * 
 *     # 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":613
 *         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":614
 *     ) 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":615
 *         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(20, 615, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":616
 *         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":617
 *         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(20, 617, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":616
 *         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":619
 *             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(20, 619, __pyx_L1_error)
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":621
 *             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(20, 621, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":622
 *         #
 *         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(20, 622, __pyx_L1_error)
  __pyx_t_1 = __pyx_t_3;
  __pyx_L6_bool_binop_done:;
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":623
 *         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":622
 *         #
 *         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":625
 *             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(20, 625, __pyx_L1_error)
  }
  __pyx_L5:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":626
 *         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":609
 * 
 *     # 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":632
 * 
 *     # 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":636
 *         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":637
 *     ) 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":638
 *         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(20, 638, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":639
 *         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(20, 639, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":640
 *         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(20, 640, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":641
 *         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":632
 * 
 *     # 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":644
 * 
 *     # 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":648
 *         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":649
 *     ) 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":650
 *         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(20, 650, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":651
 *         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(20, 651, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":652
 *         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(20, 652, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":653
 *         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":644
 * 
 *     # 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":659
 * 
 *     # 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", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":662
 *         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":663
 *     ) 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(20, 663, __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":666
 *             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":659
 * 
 *     # 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":669
 * 
 *     # 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", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":672
 *         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":673
 *     ) 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(20, 673, __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":676
 *             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":669
 * 
 *     # 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":679
 * 
 *     # 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;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7[4];
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("chk_cro_args", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":680
 *     # 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":681
 *     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":682
 *         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_3 = NULL;
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_mismatch_in_send_and_receive_MPI};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 682, __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(20, 682, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":681
 *     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":684
 *             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":685
 *                 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_3 = NULL;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":686
 *         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_From_MPI_Count(__pyx_v_self->scount, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 686, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":687
 *             raise ValueError(
 *                 f"mismatch in send count {self.scount} "
 *                 f"and receive count {self.rcount}")             # <<<<<<<<<<<<<<
 *         return 0
 * 
*/
    __pyx_t_6 = __Pyx_PyUnicode_From_MPI_Count(__pyx_v_self->rcount, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 687, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7[0] = __pyx_mstate_global->__pyx_kp_u_mismatch_in_send_count;
    __pyx_t_7[1] = __pyx_t_5;
    __pyx_t_7[2] = __pyx_mstate_global->__pyx_kp_u_and_receive_count;
    __pyx_t_7[3] = __pyx_t_6;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":686
 *         if self.scount != self.rcount:
 *             raise ValueError(
 *                 f"mismatch in send count {self.scount} "             # <<<<<<<<<<<<<<
 *                 f"and receive count {self.rcount}")
 *         return 0
*/
    __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_7, 4, 23 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 19 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6), 127);
    if (unlikely(!__pyx_t_8)) __PYX_ERR(20, 686, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_8};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 685, __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(20, 685, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":684
 *             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":688
 *                 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":679
 * 
 *     # 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_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __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":690
 *         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":694
 *         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":695
 *     ) 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":696
 *         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(20, 696, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":697
 *         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":698
 *         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(20, 698, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":699
 *         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":700
 *             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(20, 700, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":701
 *             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(20, 701, __pyx_L1_error)
      if (__pyx_t_1) {

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":702
 *                 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":701
 *             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":704
 *                     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(20, 704, __pyx_L1_error)

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":705
 *                 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(20, 705, __pyx_L1_error)
      }
      __pyx_L6:;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":699
 *         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":707
 *                     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(20, 707, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":708
 *             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(20, 708, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":709
 *                 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":710
 *                 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":697
 *         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":712
 *                 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":713
 *         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(20, 713, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":714
 *             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":715
 *                 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":712
 *                 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":717
 *                 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(20, 717, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":718
 *             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":719
 *                 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":720
 *                 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":690
 *         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":722
 *         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":726
 *         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":727
 *     ) 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":728
 *         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(20, 728, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":730
 *         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(20, 730, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":731
 *         # 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(20, 731, __pyx_L1_error)
  __pyx_t_1 = __pyx_t_3;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":732
 *         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":731
 *         # 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":734
 *             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(20, 734, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":735
 *         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(20, 735, __pyx_L1_error)
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":736
 *             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":722
 *         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":738
 *         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":742
 *         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":743
 *     ) 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":744
 *         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(20, 744, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":745
 *         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(20, 745, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":747
 *         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(20, 747, __pyx_L1_error)
  __pyx_t_1 = __pyx_t_3;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":748
 *         # 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(20, 748, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":749
 *         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":747
 *         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":751
 *             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(20, 751, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":752
 *         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(20, 752, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":753
 *             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(20, 753, __pyx_L1_error)
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":754
 *             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":738
 *         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":756
 *         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;
  PyObject *__pyx_t_7 = NULL;
  size_t __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11[4];
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13[6];
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_reduce_scatter", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":760
 *         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":761
 *     ) 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":762
 *         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(20, 762, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":763
 *         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(20, 763, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":764
 *         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(20, 764, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":766
 *         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(20, 766, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":767
 *         # 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(20, 767, __pyx_L1_error)
  __pyx_t_1 = __pyx_t_3;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":768
 *         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":767
 *         # 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":770
 *             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(20, 770, __pyx_L1_error)
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":772
 *             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":773
 *         # 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(20, 773, __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":774
 *         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(20, 774, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":772
 *             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":778
 *                 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(20, 778, __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":780
 *             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":781
 *         # 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":782
 *         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":784
 *             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":785
 *         # 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":786
 *         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_7 = NULL;
      __pyx_t_8 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_mstate_global->__pyx_kp_u_mismatch_in_send_and_receive_MPI};
        __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 786, __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(20, 786, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":785
 *         # 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":788
 *                 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":789
 *                     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_7 = NULL;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":790
 *             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_From_MPI_Count(__pyx_v_self->scount, 0, ' ', 'd'); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 790, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":791
 *                 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_PyUnicode_From_MPI_Count(__pyx_v_sumrcounts, 0, ' ', 'd'); if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 791, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11[0] = __pyx_mstate_global->__pyx_kp_u_mismatch_in_send_count;
      __pyx_t_11[1] = __pyx_t_9;
      __pyx_t_11[2] = __pyx_mstate_global->__pyx_kp_u_and_sum_counts;
      __pyx_t_11[3] = __pyx_t_10;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":790
 *             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_12 = __Pyx_PyUnicode_Join(__pyx_t_11, 4, 23 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9) + 17 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_10), 127);
      if (unlikely(!__pyx_t_12)) __PYX_ERR(20, 790, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_8 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_12};
        __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 789, __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(20, 789, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":788
 *                 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":792
 *                     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":793
 *                     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_12 = NULL;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":794
 *             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_7 = __Pyx_PyUnicode_From_MPI_Count(__pyx_v_self->rcount, 0, ' ', 'd'); if (unlikely(!__pyx_t_7)) __PYX_ERR(20, 794, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":795
 *                 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(20, 795, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_9 = __Pyx_PyUnicode_From_MPI_Count((__pyx_v_self->rcounts[__pyx_v_rank]), 0, ' ', 'd'); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 795, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_13[0] = __pyx_mstate_global->__pyx_kp_u_mismatch_in_receive_count;
      __pyx_t_13[1] = __pyx_t_7;
      __pyx_t_13[2] = __pyx_mstate_global->__pyx_kp_u_and_counts;
      __pyx_t_13[3] = __pyx_t_10;
      __pyx_t_13[4] = __pyx_mstate_global->__pyx_kp_u__6;
      __pyx_t_13[5] = __pyx_t_9;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":794
 *             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_14 = __Pyx_PyUnicode_Join(__pyx_t_13, 6, 26 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7) + 12 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_10) + 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9), 127);
      if (unlikely(!__pyx_t_14)) __PYX_ERR(20, 794, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_8 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_t_14};
        __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 793, __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(20, 793, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":792
 *                     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":784
 *             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":797
 *                     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":798
 *         else:
 *             if self.rcount != sumrcounts:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     f"mismatch in receive count {self.rcount} "
 *                     f"and sum(counts) {sumrcounts}")
*/
      __pyx_t_14 = NULL;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":799
 *             if self.rcount != sumrcounts:
 *                 raise ValueError(
 *                     f"mismatch in receive count {self.rcount} "             # <<<<<<<<<<<<<<
 *                     f"and sum(counts) {sumrcounts}")
 *         return 0
*/
      __pyx_t_12 = __Pyx_PyUnicode_From_MPI_Count(__pyx_v_self->rcount, 0, ' ', 'd'); if (unlikely(!__pyx_t_12)) __PYX_ERR(20, 799, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":800
 *                 raise ValueError(
 *                     f"mismatch in receive count {self.rcount} "
 *                     f"and sum(counts) {sumrcounts}")             # <<<<<<<<<<<<<<
 *         return 0
 * 
*/
      __pyx_t_9 = __Pyx_PyUnicode_From_MPI_Count(__pyx_v_sumrcounts, 0, ' ', 'd'); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 800, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_11[0] = __pyx_mstate_global->__pyx_kp_u_mismatch_in_receive_count;
      __pyx_t_11[1] = __pyx_t_12;
      __pyx_t_11[2] = __pyx_mstate_global->__pyx_kp_u_and_sum_counts;
      __pyx_t_11[3] = __pyx_t_9;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":799
 *             if self.rcount != sumrcounts:
 *                 raise ValueError(
 *                     f"mismatch in receive count {self.rcount} "             # <<<<<<<<<<<<<<
 *                     f"and sum(counts) {sumrcounts}")
 *         return 0
*/
      __pyx_t_10 = __Pyx_PyUnicode_Join(__pyx_t_11, 4, 26 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_12) + 17 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9), 127);
      if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 799, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_8 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_14, __pyx_t_10};
        __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 798, __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(20, 798, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":797
 *                     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":801
 *                     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":756
 *         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_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_14);
  __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":803
 *         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":807
 *         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":809
 *         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(20, 809, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":810
 *         # 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(20, 810, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":811
 *         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":810
 *         # 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":813
 *             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(20, 813, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":814
 *         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(20, 814, __pyx_L1_error)
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":803
 *         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":816
 *             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":820
 *         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":822
 *         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(20, 822, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":823
 *         # 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(20, 823, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":824
 *         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":823
 *         # 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":826
 *             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(20, 826, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":827
 *         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(20, 827, __pyx_L1_error)
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":816
 *             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":830
 * 
 * 
 * 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", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":831
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_msg_cco), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 831, __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":832
 * 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":830
 * 
 * 
 * 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":849
 *     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_SIZE
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__cinit__", __pyx_kwds); 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":850
 * 
 *     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":851
 *     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":852
 *         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":853
 *         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":849
 *     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":856
 * 
 *     # 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", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":860
 *         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":861
 *     ) 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":862
 *         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(20, 862, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":863
 *         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":864
 *         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(20, 864, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":863
 *         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":866
 *             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(20, 866, __pyx_L1_error)
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":868
 *             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(20, 868, __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":872
 *             &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(20, 872, __pyx_L1_error)
  __pyx_t_1 = __pyx_t_4;
  __pyx_L6_bool_binop_done:;
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":873
 *             &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":874
 *         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":872
 *             &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":875
 *             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(20, 875, __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":879
 *             &self.sbuf, &self.scounts,
 *             &self.sdispls, &self.stypes)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     # neighbor alltoallw
*/
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":856
 * 
 *     # 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":882
 * 
 *     # 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", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":886
 *         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":887
 *     ) 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":888
 *         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(20, 888, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":889
 *         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(20, 889, __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":893
 *             &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(20, 893, __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":897
 *             &self.sbuf, &self.scounts,
 *             &self.sdispls, &self.stypes)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":882
 * 
 *     # 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":900
 * 
 * 
 * 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", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":901
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_msg_ccow), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 901, __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":902
 * 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":900
 * 
 * 
 * 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":933
 *     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_SIZE
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__cinit__", __pyx_kwds); 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":934
 * 
 *     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":935
 *     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":936
 *         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":937
 *         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":938
 *         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":939
 *         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":940
 *         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":941
 *         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":942
 *         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":933
 *     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":944
 *         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;
  size_t __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_rma", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":947
 *                      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(20, 947, __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":951
 *             &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":952
 *         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":953
 *             (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":954
 *             (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(20, 954, __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_PyLong_From_long, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 954, __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(20, 954, __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":950
 *             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":956
 *             (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_PyLong_From_long, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 956, __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(20, 956, __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":957
 *         ):
 *             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":950
 *             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":959
 *             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":960
 *         # 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":961
 *         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":962
 *         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":963
 *             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":960
 *         # 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":964
 *             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":965
 *             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(20, 965, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_9 = __Pyx_PyLong_As_MPI_Aint(__pyx_t_6); if (unlikely((__pyx_t_9 == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(20, 965, __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":966
 *         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":967
 *             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":964
 *             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":968
 *             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":969
 *             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":970
 *         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":971
 *             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":972
 *             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(20, 972, __pyx_L1_error)
    __pyx_v_nargs = __pyx_t_4;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":973
 *             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":974
 *             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_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 974, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_1 = PyNumber_Index(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 974, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_9 = __Pyx_PyLong_As_MPI_Aint(__pyx_t_1); if (unlikely((__pyx_t_9 == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(20, 974, __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":973
 *             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":975
 *             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":976
 *                 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_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 976, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_6 = PyNumber_Index(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 976, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_8 = __Pyx_PyLong_As_MPI_Count(__pyx_t_6); if (unlikely((__pyx_t_8 == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(20, 976, __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":975
 *             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":977
 *             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":978
 *                 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_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 978, __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(20, 978, __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":977
 *             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":979
 *             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":980
 *                 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_6 = NULL;
      __pyx_t_10 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_target_expecting_3_items_at_most};
        __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 980, __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(20, 980, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":979
 *             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":968
 *             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":982
 *                 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_6 = NULL;
    __pyx_t_10 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_target_expecting_integral_or_lis};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 982, __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(20, 982, __pyx_L1_error)
  }
  __pyx_L10:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":983
 *         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":984
 *             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":944
 *         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":986
 *         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":987
 * 
 *     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(20, 987, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":988
 *     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":986
 *         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":990
 *         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":991
 * 
 *     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(20, 991, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":992
 *     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":990
 *         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":994
 *         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":995
 * 
 *     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(20, 995, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":996
 *     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":994
 *         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":998
 *         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", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":999
 * 
 *     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(20, 999, __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":1002
 *             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":1003
 *             &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":1004
 *         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":998
 *         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":1006
 *         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", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1007
 * 
 *     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(20, 1007, __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":1006
 *         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":1011
 *             &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", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1012
 * 
 *     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(20, 1012, __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":1011
 *             &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":1016
 *             &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":1018
 *     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(20, 1018, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1019
 *                          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(20, 1019, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1020
 *         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":1016
 *             &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":1022
 *         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;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  size_t __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_fetch_op", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1024
 *     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(20, 1024, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1025
 *                           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(20, 1025, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1026
 *         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":1027
 *         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":1029
 *         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":1030
 *         # Check
 *         if self.ocount != 1:
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 f"origin: expecting a single element, got {self.ocount}")
 *         if self.rcount != 1:
*/
    __pyx_t_4 = NULL;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1031
 *         if self.ocount != 1:
 *             raise ValueError(
 *                 f"origin: expecting a single element, got {self.ocount}")             # <<<<<<<<<<<<<<
 *         if self.rcount != 1:
 *             raise ValueError(
*/
    __pyx_t_5 = __Pyx_PyUnicode_From_MPI_Count(__pyx_v_self->ocount, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1031, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_origin_expecting_a_single_elemen, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 1031, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 1030, __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(20, 1030, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1029
 *         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":1032
 *             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":1033
 *                 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_6 = NULL;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1034
 *         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_PyUnicode_From_MPI_Count(__pyx_v_self->rcount, 0, ' ', 'd'); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1034, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_result_expecting_a_single_elemen, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1034, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_7 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_5};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 1033, __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(20, 1033, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1032
 *             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":1035
 *             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":1036
 *                 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_5 = NULL;
    __pyx_t_7 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_mismatch_in_origin_and_result_MP};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 1036, __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(20, 1036, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1035
 *             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":1038
 *             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":1022
 *         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_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __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":1040
 *         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;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  size_t __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_cmp_swap", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1042
 *     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(20, 1042, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1043
 *                           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(20, 1043, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1044
 *         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(20, 1044, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1045
 *         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":1046
 *         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":1048
 *         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":1049
 *         # Check
 *         if self.ocount != 1:
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 f"origin: expecting a single element, got {self.ocount}")
 *         if self.ccount != 1:
*/
    __pyx_t_4 = NULL;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1050
 *         if self.ocount != 1:
 *             raise ValueError(
 *                 f"origin: expecting a single element, got {self.ocount}")             # <<<<<<<<<<<<<<
 *         if self.ccount != 1:
 *             raise ValueError(
*/
    __pyx_t_5 = __Pyx_PyUnicode_From_MPI_Count(__pyx_v_self->ocount, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1050, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_origin_expecting_a_single_elemen, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 1050, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 1049, __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(20, 1049, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1048
 *         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":1051
 *             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":1052
 *                 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_6 = NULL;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1053
 *         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_PyUnicode_From_MPI_Count(__pyx_v_self->ccount, 0, ' ', 'd'); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1053, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_compare_expecting_a_single_eleme, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1053, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_7 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_5};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 1052, __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(20, 1052, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1051
 *             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":1054
 *             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":1055
 *                 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_5 = NULL;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1056
 *         if self.rcount != 1:
 *             raise ValueError(
 *                 f"result: expecting a single element, got {self.rcount}")             # <<<<<<<<<<<<<<
 *         if self.otype != self.ctype:
 *             raise ValueError(
*/
    __pyx_t_6 = __Pyx_PyUnicode_From_MPI_Count(__pyx_v_self->rcount, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 1056, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_result_expecting_a_single_elemen, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1056, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_7 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_4};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 1055, __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(20, 1055, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1054
 *             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":1057
 *             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":1058
 *                 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 = NULL;
    __pyx_t_7 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_mismatch_in_origin_and_compare_M};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 1058, __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(20, 1058, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1057
 *             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":1060
 *             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":1061
 *                 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 = NULL;
    __pyx_t_7 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_mismatch_in_origin_and_result_MP};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 1061, __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(20, 1061, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1060
 *             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":1063
 *             raise ValueError(
 *                 f"mismatch in origin and result MPI datatypes")
 *         return 0             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1040
 *         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_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __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":1066
 * 
 * 
 * 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", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1067
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_msg_rma), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 1067, __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":1068
 * 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":1066
 * 
 * 
 * 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":1084
 *     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_SIZE
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__cinit__", __pyx_kwds); 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":1085
 * 
 *     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":1086
 *     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":1087
 *         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":1084
 *     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":1089
 *         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", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1090
 * 
 *     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(20, 1090, __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":1097
 *             &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":1089
 *         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":1099
 *         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", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1100
 * 
 *     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(20, 1100, __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":1107
 *             &self.dtype,
 *         )
 *         return 0             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1099
 *         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":1110
 * 
 * 
 * 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", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1111
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_msg_io), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 1111, __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":1112
 * 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(20, 1112, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1113
 *     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":1110
 * 
 * 
 * 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":1115
 *     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", 0);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1116
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_msg_io), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 1116, __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":1117
 * 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(20, 1117, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1118
 *     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":1115
 *     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_SIZE
  __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);
  const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (__pyx_kwds_len > 0) {
    if (unlikely(__Pyx_CheckKeywordStrings("__cinit__", __pyx_kwds) == -1)) return -1;
    __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__", 0);

  /* "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_SIZE
  __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 ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_dumps,&__pyx_mstate_global->__pyx_n_u_loads,&__pyx_mstate_global->__pyx_n_u_protocol,&__pyx_mstate_global->__pyx_n_u_threshold,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(21, 44, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(21, 44, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(21, 44, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(21, 44, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(21, 44, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(21, 44, __pyx_L3_error)

      /* "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,
*/
      if (!values[0]) values[0] = __Pyx_NewRef(((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,
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((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:
*/
      if (!values[2]) values[2] = __Pyx_NewRef(((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:
*/
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(21, 44, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(21, 44, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(21, 44, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(21, 44, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }

      /* "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,
*/
      if (!values[0]) values[0] = __Pyx_NewRef(((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,
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((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:
*/
      if (!values[2]) values[2] = __Pyx_NewRef(((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:
*/
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __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(21, 44, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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\nSerialize object to pickle data stream.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Pickle_5dumps = {"dumps", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_obj,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(21, 65, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(21, 65, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "dumps", 0) < (0)) __PYX_ERR(21, 65, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("dumps", 1, 1, 1, i); __PYX_ERR(21, 65, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(21, 65, __pyx_L3_error)
    }
    __pyx_v_obj = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dumps", 1, 1, 1, __pyx_nargs); __PYX_ERR(21, 65, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(21, 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\nDeserialize object from pickle data stream.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Pickle_7loads = {"loads", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_data,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(21, 74, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(21, 74, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "loads", 0) < (0)) __PYX_ERR(21, 74, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("loads", 1, 1, 1, i); __PYX_ERR(21, 74, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(21, 74, __pyx_L3_error)
    }
    __pyx_v_data = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("loads", 1, 1, 1, __pyx_nargs); __PYX_ERR(21, 74, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(21, 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\nSerialize object to pickle data stream and out-of-band buffers.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Pickle_9dumps_oob = {"dumps_oob", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_obj,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(21, 83, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(21, 83, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "dumps_oob", 0) < (0)) __PYX_ERR(21, 83, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("dumps_oob", 1, 1, 1, i); __PYX_ERR(21, 83, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(21, 83, __pyx_L3_error)
    }
    __pyx_v_obj = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dumps_oob", 1, 1, 1, __pyx_nargs); __PYX_ERR(21, 83, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(21, 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\nDeserialize object from pickle data stream and out-of-band buffers.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Pickle_11loads_oob = {"loads_oob", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_data,&__pyx_mstate_global->__pyx_n_u_buffers,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(21, 92, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(21, 92, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(21, 92, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "loads_oob", 0) < (0)) __PYX_ERR(21, 92, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("loads_oob", 1, 2, 2, i); __PYX_ERR(21, 92, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(21, 92, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(21, 92, __pyx_L3_error)
    }
    __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(21, 92, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(21, 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__", 0);

  /* "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__", 0);

  /* "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":130
 * 
 * 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(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_ob,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(21, 130, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(21, 130, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "buffer_callback", 0) < (0)) __PYX_ERR(21, 130, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("buffer_callback", 1, 1, 1, i); __PYX_ERR(21, 130, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(21, 130, __pyx_L3_error)
    }
    __pyx_v_ob = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("buffer_callback", 1, 1, 1, __pyx_nargs); __PYX_ERR(21, 130, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);
  __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":131
 * 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(21, 131, __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":132
 *     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":133
 *         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(21, 133, __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(21, 133, __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(21, 133, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgpickle.pxi":134
 *         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":132
 *     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":136
 *             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":130
 * 
 * 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":129
 * # -----------------------------------------------------------------------------
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback, __pyx_mstate_global->__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(21, 129, __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":130
 * 
 * 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_mstate_global->__pyx_n_u_get_buffer_callback_locals_buffe, ((PyObject*)__pyx_cur_scope), __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[0])); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 130, __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":137
 *         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":129
 * # -----------------------------------------------------------------------------
 * 
 * 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":139
 *     return buffer_callback
 * 
 * cdef object cdumps_oob(Pickle pkl, object obj):             # <<<<<<<<<<<<<<
 *     cdef object pkl_dumps = pkl.ob_dumps
 *     cdef object protocol = pkl.ob_PROTO
*/

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;
  long __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  size_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cdumps_oob", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":140
 * 
 * cdef object cdumps_oob(Pickle pkl, object obj):
 *     cdef object pkl_dumps = pkl.ob_dumps             # <<<<<<<<<<<<<<
 *     cdef object protocol = pkl.ob_PROTO
 *     if protocol is None:
*/
  __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":141
 * cdef object cdumps_oob(Pickle pkl, object obj):
 *     cdef object pkl_dumps = pkl.ob_dumps
 *     cdef object protocol = pkl.ob_PROTO             # <<<<<<<<<<<<<<
 *     if protocol is None:
 *         protocol = PyPickle_PROTOCOL         # ~> uncovered
*/
  __pyx_t_1 = __pyx_v_pkl->ob_PROTO;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_protocol = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":142
 *     cdef object pkl_dumps = pkl.ob_dumps
 *     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":143
 *     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":142
 *     cdef object pkl_dumps = pkl.ob_dumps
 *     cdef object protocol = pkl.ob_PROTO
 *     if protocol is None:             # <<<<<<<<<<<<<<
 *         protocol = PyPickle_PROTOCOL         # ~> uncovered
 *     protocol = max(protocol, 5)
*/
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":144
 *     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_3 = 5;
  __Pyx_INCREF(__pyx_v_protocol);
  __pyx_t_1 = __pyx_v_protocol;
  __pyx_t_5 = __Pyx_PyLong_From_long(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyObject_RichCompare(__pyx_t_5, __pyx_t_1, Py_GT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 144, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(21, 144, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (__pyx_t_2) {
    __pyx_t_6 = __Pyx_PyLong_From_long(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 144, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_4 = __pyx_t_6;
    __pyx_t_6 = 0;
  } else {
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_4 = __pyx_t_1;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __pyx_t_4;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF_SET(__pyx_v_protocol, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":145
 *         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_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_buffers = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":146
 *     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_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_pkl->ob_THRES); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(21, 146, __pyx_L1_error)
  __pyx_v_threshold = __pyx_t_7;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":147
 *     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_1 = __pyx_f_6mpi4py_3MPI_get_buffer_callback(__pyx_v_buffers, __pyx_v_threshold); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_buf_cb = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":148
 *     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_4 = NULL;
  __Pyx_INCREF(__pyx_v_pkl_dumps);
  __pyx_t_6 = __pyx_v_pkl_dumps; 
  __pyx_t_8 = 1;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
    assert(__pyx_t_4);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
    __Pyx_INCREF(__pyx_t_4);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
    __pyx_t_8 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[3 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_4, __pyx_v_obj, __pyx_v_protocol};
    __pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 148, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_buffer_callback, __pyx_v_buf_cb, __pyx_t_5, __pyx_callargs+3, 0) < (0)) __PYX_ERR(21, 148, __pyx_L1_error)
    __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 148, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_v_data = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":149
 *     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_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 149, __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) != (0)) __PYX_ERR(21, 149, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_buffers);
  __Pyx_GIVEREF(__pyx_v_buffers);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_buffers) != (0)) __PYX_ERR(21, 149, __pyx_L1_error);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":139
 *     return buffer_callback
 * 
 * cdef object cdumps_oob(Pickle pkl, object obj):             # <<<<<<<<<<<<<<
 *     cdef object pkl_dumps = pkl.ob_dumps
 *     cdef object protocol = pkl.ob_PROTO
*/

  /* 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_6);
  __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":151
 *     return data, buffers
 * 
 * cdef object cloads_oob(Pickle pkl, object data, object buffers):             # <<<<<<<<<<<<<<
 *     cdef object pkl_loads = pkl.ob_loads
 *     return pkl_loads(data, buffers=buffers)
*/

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;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cloads_oob", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":152
 * 
 * cdef object cloads_oob(Pickle pkl, object data, object buffers):
 *     cdef object pkl_loads = pkl.ob_loads             # <<<<<<<<<<<<<<
 *     return pkl_loads(data, buffers=buffers)
 * 
*/
  __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":153
 * cdef object cloads_oob(Pickle pkl, object data, object buffers):
 *     cdef object pkl_loads = pkl.ob_loads
 *     return pkl_loads(data, buffers=buffers)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_v_pkl_loads);
  __pyx_t_3 = __pyx_v_pkl_loads; 
  __pyx_t_4 = 1;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_4 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_2, __pyx_v_data};
    __pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 153, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_buffers, __pyx_v_buffers, __pyx_t_5, __pyx_callargs+2, 0) < (0)) __PYX_ERR(21, 153, __pyx_L1_error)
    __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 153, __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":151
 *     return data, buffers
 * 
 * cdef object cloads_oob(Pickle pkl, object data, object buffers):             # <<<<<<<<<<<<<<
 *     cdef object pkl_loads = pkl.ob_loads
 *     return pkl_loads(data, buffers=buffers)
*/

  /* 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_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":157
 * # -----------------------------------------------------------------------------
 * 
 * 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;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cdumps", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":158
 * 
 * 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":159
 * 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_t_3 = NULL;
    __Pyx_INCREF(__pyx_v_pkl->ob_dumps);
    __pyx_t_4 = __pyx_v_pkl->ob_dumps; 
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_obj, __pyx_v_pkl->ob_PROTO};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 159, __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":158
 * 
 * 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":161
 *         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_t_4 = NULL;
    __Pyx_INCREF(__pyx_v_pkl->ob_dumps);
    __pyx_t_3 = __pyx_v_pkl->ob_dumps; 
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      assert(__pyx_t_4);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_obj};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 161, __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":157
 * # -----------------------------------------------------------------------------
 * 
 * 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":163
 *         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;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cloads", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":164
 * 
 * cdef object cloads(Pickle pkl, object buf):
 *     return pkl.ob_loads(buf)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_v_pkl->ob_loads);
  __pyx_t_3 = __pyx_v_pkl->ob_loads; 
  __pyx_t_4 = 1;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_4 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_buf};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 164, __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":163
 *         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":167
 * 
 * 
 * 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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":168
 * 
 * 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(21, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_buf = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":169
 * 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 == ((void *)NULL))) __PYX_ERR(21, 169, __pyx_L1_error)
  (__pyx_v_p[0]) = __pyx_t_2;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":170
 *     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(21, 170, __pyx_L1_error)
  (__pyx_v_n[0]) = __pyx_t_3;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":171
 *     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":167
 * 
 * 
 * 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":173
 *     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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":174
 * 
 * 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":175
 * 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(21, 175, __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(21, 175, __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":173
 *     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":178
 * 
 * 
 * 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;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7[4];
  PyObject *__pyx_t_8 = NULL;
  size_t __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  Py_ssize_t __pyx_t_11;
  char *__pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("pickle_dumpv", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":182
 *     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":184
 *     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(21, 184, __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) != (0)) __PYX_ERR(21, 184, __pyx_L1_error);
      }
    }
    __pyx_v_items = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":185
 *     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(21, 185, __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":186
 *     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(21, 186, __pyx_L1_error)
  __pyx_v_m = __pyx_t_3;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":187
 *     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":188
 *     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_4 = NULL;
    __pyx_t_5 = __Pyx_PyUnicode_From_int(__pyx_v_n, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 188, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_m, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 188, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7[0] = __pyx_mstate_global->__pyx_kp_u_expecting;
    __pyx_t_7[1] = __pyx_t_5;
    __pyx_t_7[2] = __pyx_mstate_global->__pyx_kp_u_items_got;
    __pyx_t_7[3] = __pyx_t_6;
    __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_7, 4, 10 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 12 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6), 127);
    if (unlikely(!__pyx_t_8)) __PYX_ERR(21, 188, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_9 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_8};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 188, __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(21, 188, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgpickle.pxi":187
 *     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":189
 *     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":190
 *         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":191
 *     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_10 = __pyx_t_3;
  for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) {
    __pyx_v_i = __pyx_t_11;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":192
 *     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, PyLong_FromSsize_t, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 192, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_8 = __pyx_f_6mpi4py_3MPI_pickle_dump(__pyx_v_pkl, __pyx_t_2, __pyx_v_p, (&__pyx_v_c)); if (unlikely(!__pyx_t_8)) __PYX_ERR(21, 192, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely((__Pyx_SetItemInt(__pyx_v_items, __pyx_v_i, __pyx_t_8, Py_ssize_t, 1, PyLong_FromSsize_t, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference) < 0))) __PYX_ERR(21, 192, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":193
 *     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":194
 *         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":195
 *         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":196
 *         dsp[i] = d
 *         d = d + <MPI_Aint> c
 *     cdef object buf = b''.join(items)             # <<<<<<<<<<<<<<
 *     p[0] = PyBytes_AsString(buf)
 *     return buf
*/
  __pyx_t_8 = __Pyx_PyBytes_Join(__pyx_mstate_global->__pyx_kp_b_, __pyx_v_items); if (unlikely(!__pyx_t_8)) __PYX_ERR(21, 196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_v_buf = __pyx_t_8;
  __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":197
 *         d = d + <MPI_Aint> c
 *     cdef object buf = b''.join(items)
 *     p[0] = PyBytes_AsString(buf)             # <<<<<<<<<<<<<<
 *     return buf
 * 
*/
  __pyx_t_12 = PyBytes_AsString(__pyx_v_buf); if (unlikely(__pyx_t_12 == ((void *)NULL))) __PYX_ERR(21, 197, __pyx_L1_error)
  (__pyx_v_p[0]) = __pyx_t_12;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":198
 *     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":178
 * 
 * 
 * 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_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __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":200
 *     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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":204
 *     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":205
 * ):
 *     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(21, 205, __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) != (0)) __PYX_ERR(21, 205, __pyx_L1_error);
    }
  }
  __pyx_v_items = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":206
 *     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":207
 *     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":208
 *     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(21, 208, __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, PyLong_FromSsize_t, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference) < 0))) __PYX_ERR(21, 208, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":209
 *     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":200
 *     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":212
 * 
 * 
 * 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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":213
 * 
 * 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(21, 213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_buf = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":214
 * 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 == ((void *)NULL))) __PYX_ERR(21, 214, __pyx_L1_error)
  (__pyx_v_p[0]) = __pyx_t_2;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":215
 *     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":212
 * 
 * 
 * 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":217
 *     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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":218
 * 
 * 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":219
 * 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":220
 *     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":221
 *     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":222
 *         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(21, 222, __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":217
 *     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":225
 * 
 * 
 * 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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":226
 * 
 * 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(21, 226, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_mem1 = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":227
 * 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(21, 227, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_mem2 = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":228
 *     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(21, 228, __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) != (0)) __PYX_ERR(21, 228, __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) != (0)) __PYX_ERR(21, 228, __pyx_L1_error);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":225
 * 
 * 
 * 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":232
 * # -----------------------------------------------------------------------------
 * 
 * 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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":234
 * 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":236
 *     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":237
 *     #
 *     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":238
 *     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":240
 *     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":241
 *     #
 *     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":242
 *     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(21, 242, __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":241
 *     #
 *     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":243
 *     if dest != MPI_PROC_NULL:
 *         unuseds = pickle_dump(pickle, obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Send_c(             # <<<<<<<<<<<<<<
 *         sbuf, scount, stype,
 *         dest, tag, comm) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":245
 *     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(21, 243, __pyx_L5_error)
      }

      /* "src/mpi4py/MPI.src/msgpickle.pxi":243
 *     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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L6:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":246
 *         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":232
 * # -----------------------------------------------------------------------------
 * 
 * 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":249
 * 
 * 
 * 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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":251
 * 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":253
 *     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":254
 *     #
 *     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":255
 *     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":257
 *     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":258
 *     #
 *     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":259
 *     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(21, 259, __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":258
 *     #
 *     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":260
 *     if dest != MPI_PROC_NULL:
 *         unuseds = pickle_dump(pickle, obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Bsend_c(             # <<<<<<<<<<<<<<
 *         sbuf, scount, stype,
 *         dest, tag, comm) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":262
 *     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(21, 260, __pyx_L5_error)
      }

      /* "src/mpi4py/MPI.src/msgpickle.pxi":260
 *     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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L6:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":263
 *         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":249
 * 
 * 
 * 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":266
 * 
 * 
 * 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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":268
 * 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":270
 *     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":271
 *     #
 *     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":272
 *     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":274
 *     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":275
 *     #
 *     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":276
 *     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(21, 276, __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":275
 *     #
 *     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":277
 *     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
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":278
 *         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(21, 277, __pyx_L5_error)
      }

      /* "src/mpi4py/MPI.src/msgpickle.pxi":277
 *     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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L6:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":279
 *     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":266
 * 
 * 
 * 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":283
 * # -----------------------------------------------------------------------------
 * 
 * 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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":285
 * 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":287
 *     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":288
 *     #
 *     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":289
 *     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":291
 *     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":292
 *     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":294
 *     cdef MPI_Aint rlen = 0
 *     #
 *     PyErr_WarnFormat(             # <<<<<<<<<<<<<<
 *         UserWarning, 1, b"%s",
 *         b"the 'buf' argument is deprecated",
*/
  __pyx_t_1 = PyErr_WarnFormat(((PyObject *)(((PyTypeObject*)PyExc_UserWarning))), 1, ((char *)"%s"), ((char *)"the 'buf' argument is deprecated")); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(21, 294, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":299
 *     )
 *     #
 *     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":300
 *     #
 *     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":301
 *     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(21, 301, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyLong_As_MPI_Count(__pyx_t_3); if (unlikely((__pyx_t_4 == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(21, 301, __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":302
 *         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(21, 302, __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":300
 *     #
 *     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":304
 *             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(21, 304, __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":305
 *         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":306
 *             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":307
 *             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":306
 *             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":308
 *         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":299
 *     )
 *     #
 *     if source != MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *         if is_integral(obj):
 *             rcount = <MPI_Count> PyNumber_Index(obj)
*/
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":309
 *             status = &rsts
 *         <void> rmsg
 *     with nogil:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Recv_c(
 *             rbuf, rcount, rtype,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":310
 *         <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(21, 310, __pyx_L7_error)

        /* "src/mpi4py/MPI.src/msgpickle.pxi":313
 *             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":314
 *             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(21, 314, __pyx_L7_error)

          /* "src/mpi4py/MPI.src/msgpickle.pxi":313
 *             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":309
 *             status = &rsts
 *         <void> rmsg
 *     with nogil:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Recv_c(
 *             rbuf, rcount, rtype,
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L8;
        }
        __pyx_L7_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L8:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":316
 *             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":317
 *     #
 *     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(21, 317, __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":283
 * # -----------------------------------------------------------------------------
 * 
 * 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":320
 * 
 * 
 * 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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":322
 * 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":324
 *     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":325
 *     #
 *     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":326
 *     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":328
 *     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":330
 *     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":332
 *     <void> obj  # unused
 *     #
 *     with nogil:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Mprobe(source, tag, comm, &match, &rsts) )
 *         CHKERR( MPI_Get_count_c(&rsts, rtype, &rcount) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":333
 *     #
 *     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(21, 333, __pyx_L4_error)

        /* "src/mpi4py/MPI.src/msgpickle.pxi":334
 *     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(21, 334, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/msgpickle.pxi":332
 *     <void> obj  # unused
 *     #
 *     with nogil:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Mprobe(source, tag, comm, &match, &rsts) )
 *         CHKERR( MPI_Get_count_c(&rsts, rtype, &rcount) )
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":335
 *         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(21, 335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unusedr = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":336
 *         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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":337
 *     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(21, 337, __pyx_L7_error)
      }

      /* "src/mpi4py/MPI.src/msgpickle.pxi":336
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L8;
        }
        __pyx_L7_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L8:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":340
 *             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":341
 *     #
 *     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(21, 341, __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":320
 * 
 * 
 * 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":344
 * 
 * 
 * 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;
  size_t __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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":346
 * 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":348
 *     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":349
 *     #
 *     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":350
 *     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":354
 *     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":356
 *     <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_mstate_global->__pyx_n_u_recv); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 356, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 356, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = NULL;
    __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 356, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = 1;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_4);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_6 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 356, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __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":357
 *     #
 *     with PyMPI_Lock(comm, "recv"):
 *         with nogil:             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Probe(source, tag, comm, &rsts) )
 *             CHKERR( MPI_Get_count_c(&rsts, rtype, &rcount) )
*/
          {
              PyThreadState * _save;
              _save = PyEval_SaveThread();
              __Pyx_FastGIL_Remember();
              /*try:*/ {

                /* "src/mpi4py/MPI.src/msgpickle.pxi":358
 *     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(21, 358, __pyx_L14_error)

                /* "src/mpi4py/MPI.src/msgpickle.pxi":359
 *         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(21, 359, __pyx_L14_error)

                /* "src/mpi4py/MPI.src/msgpickle.pxi":360
 *             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(21, 360, __pyx_L14_error)

                /* "src/mpi4py/MPI.src/msgpickle.pxi":361
 *             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(21, 361, __pyx_L14_error)
              }

              /* "src/mpi4py/MPI.src/msgpickle.pxi":357
 *     #
 *     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:*/{
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L15;
                }
                __pyx_L14_error: {
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L7_error;
                }
                __pyx_L15:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":362
 *             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(21, 362, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_v_unusedr = __pyx_t_1;
          __pyx_t_1 = 0;

          /* "src/mpi4py/MPI.src/msgpickle.pxi":363
 *             CHKERR( MPI_Status_get_tag(&rsts, &tag) )
 *         unusedr = pickle_alloc(&rbuf, rcount)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Recv_c(
 *                 rbuf, rcount, rtype,
*/
          {
              PyThreadState * _save;
              _save = PyEval_SaveThread();
              __Pyx_FastGIL_Remember();
              /*try:*/ {

                /* "src/mpi4py/MPI.src/msgpickle.pxi":364
 *         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(21, 364, __pyx_L17_error)
              }

              /* "src/mpi4py/MPI.src/msgpickle.pxi":363
 *             CHKERR( MPI_Status_get_tag(&rsts, &tag) )
 *         unusedr = pickle_alloc(&rbuf, rcount)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Recv_c(
 *                 rbuf, rcount, rtype,
*/
              /*finally:*/ {
                /*normal exit:*/{
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L18;
                }
                __pyx_L17_error: {
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L7_error;
                }
                __pyx_L18:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":356
 *     <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_5) < 0) __PYX_ERR(21, 356, __pyx_L9_except_error)
          __Pyx_XGOTREF(__pyx_t_1);
          __Pyx_XGOTREF(__pyx_t_3);
          __Pyx_XGOTREF(__pyx_t_5);
          __pyx_t_4 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 356, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(21, 356, __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(21, 356, __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_5);
            __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_3, __pyx_t_5);
            __pyx_t_1 = 0;  __pyx_t_3 = 0;  __pyx_t_5 = 0; 
            __PYX_ERR(21, 356, __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_5); __pyx_t_5 = 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_mstate_global->__pyx_tuple[12], NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          if (unlikely(!__pyx_t_9)) __PYX_ERR(21, 356, __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":368
 *                 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":369
 *     #
 *     if rcount <= 0: return None
 *     return pickle_load(pickle, rbuf, rcount)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __pyx_f_6mpi4py_3MPI_pickle_load(__pyx_v_pickle, __pyx_v_rbuf, __pyx_v_rcount); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 369, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":344
 * 
 * 
 * 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":372
 * 
 * 
 * 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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":374
 * 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":375
 *                        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(21, 375, __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":374
 * 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":376
 *     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":377
 *         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(21, 377, __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":376
 *     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":379
 *         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(21, 379, __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":372
 * 
 * 
 * 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":383
 * # -----------------------------------------------------------------------------
 * 
 * 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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":385
 * 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":387
 *     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":388
 *     #
 *     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":389
 *     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":391
 *     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":392
 *     #
 *     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":393
 *     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(21, 393, __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":392
 *     #
 *     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":394
 *     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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":396
 *     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(21, 394, __pyx_L5_error)
      }

      /* "src/mpi4py/MPI.src/msgpickle.pxi":394
 *     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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L6:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":397
 *         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":383
 * # -----------------------------------------------------------------------------
 * 
 * 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":400
 * 
 * 
 * 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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":402
 * 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":404
 *     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":405
 *     #
 *     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":406
 *     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":408
 *     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":409
 *     #
 *     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":410
 *     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(21, 410, __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":409
 *     #
 *     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":411
 *     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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":413
 *     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(21, 411, __pyx_L5_error)
      }

      /* "src/mpi4py/MPI.src/msgpickle.pxi":411
 *     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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L6:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":414
 *         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":400
 * 
 * 
 * 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":417
 * 
 * 
 * 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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":419
 * 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":421
 *     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":422
 *     #
 *     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":423
 *     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":425
 *     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":426
 *     #
 *     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":427
 *     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(21, 427, __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":426
 *     #
 *     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":428
 *     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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":430
 *     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(21, 428, __pyx_L5_error)
      }

      /* "src/mpi4py/MPI.src/msgpickle.pxi":428
 *     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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L6:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":431
 *         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":417
 * 
 * 
 * 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":434
 * 
 * 
 * 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":437
 *                         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":438
 *     #
 *     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":439
 *     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":440
 *     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":442
 *     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":443
 *     #
 *     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":444
 *     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":445
 *     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":446
 *         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(21, 446, __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":447
 *             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(21, 447, __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":444
 *     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":448
 *             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":449
 *             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(21, 449, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_2 = __Pyx_PyLong_As_MPI_Count(__pyx_t_3); if (unlikely((__pyx_t_2 == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(21, 449, __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":450
 *         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(21, 450, __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":451
 *             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(21, 451, __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":448
 *             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":453
 *             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(21, 453, __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":454
 *         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":455
 *             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(21, 455, __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":443
 *     #
 *     cdef object rmsg = None
 *     if source != MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *         if obj is None:
 *             rcount = options.irecv_bufsz
*/
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":456
 *             rcount = <MPI_Count> rlen
 *         rmsg = PyMPI_wrap_buffer(<buffer>rmsg)
 *     with nogil: CHKERR( MPI_Irecv_c(             # <<<<<<<<<<<<<<
 *         rbuf, rcount, rtype,
 *         source, tag, comm, request) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":458
 *     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(21, 456, __pyx_L6_error)
      }

      /* "src/mpi4py/MPI.src/msgpickle.pxi":456
 *             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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L7;
        }
        __pyx_L6_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L7:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":459
 *         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":434
 * 
 * 
 * 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":463
 * # -----------------------------------------------------------------------------
 * 
 * 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":466
 *                            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":467
 *                            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(21, 467, __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":468
 *     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(21, 468, __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":469
 *     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
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(21, 469, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":470
 *     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":463
 * # -----------------------------------------------------------------------------
 * 
 * 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":480
 *     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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":481
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_req_buf), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 481, __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":482
 * 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":483
 *     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":480
 *     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":485
 *     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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":486
 * 
 * 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":487
 * 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":488
 *     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(21, 488, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":489
 *     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":490
 *     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":491
 *     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":492
 *     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(21, 492, __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":485
 *     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":500
 *     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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":501
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_req_obj), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 501, __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":502
 * 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":503
 *     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":500
 *     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":505
 *     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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":506
 * 
 * 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":505
 *     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":509
 * 
 * 
 * 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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":510
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_req_buf));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":511
 * 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(21, 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/msgpickle.pxi":510
 * 
 * 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":512
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_req_obj));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":513
 *         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(21, 513, __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":512
 *     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":514
 *     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":509
 * 
 * 
 * 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":518
 * # -----------------------------------------------------------------------------
 * 
 * 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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":519
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 519, __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":520
 * 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(21, 520, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":521
 *     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(21, 521, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":522
 *     rs.set_request(request)
 *     rs.set_status(status)
 *     with nogil: CHKERR( MPI_Wait(&request.ob_mpi, rs.status) )             # <<<<<<<<<<<<<<
 *     return rs.get_result()
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(21, 522, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":523
 *     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(21, 523, __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":518
 * # -----------------------------------------------------------------------------
 * 
 * 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":525
 *     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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":526
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 526, __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":527
 * 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(21, 527, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":528
 *     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(21, 528, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":529
 *     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
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(21, 529, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":530
 *     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":531
 *     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":530
 *     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":532
 *     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(21, 532, __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":525
 *     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":534
 *     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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":535
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 535, __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":536
 * 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(21, 536, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":537
 *     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(21, 537, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":538
 *     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":539
 *     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":540
 *     cdef object obj = None
 *     try:
 *         with nogil: CHKERR( MPI_Waitany(             # <<<<<<<<<<<<<<
 *             rs.count, rs.requests, index, rs.status) )
 *         if index[0] != MPI_UNDEFINED:
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "src/mpi4py/MPI.src/msgpickle.pxi":541
 *     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(21, 540, __pyx_L7_error)
        }

        /* "src/mpi4py/MPI.src/msgpickle.pxi":540
 *     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:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L4_error;
          }
          __pyx_L8:;
        }
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":542
 *         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":543
 *             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(21, 543, __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":542
 *         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":545
 *             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(21, 545, __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;
       __Pyx_ExceptionSwap(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      if ( 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(21, 545, __pyx_L11_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);
      __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:;
      __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":546
 *     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":534
 *     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":548
 *     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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":549
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 549, __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":550
 * 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(21, 550, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":551
 *     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(21, 551, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":552
 *     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":553
 *     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":554
 *     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]:
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "src/mpi4py/MPI.src/msgpickle.pxi":555
 *     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(21, 554, __pyx_L7_error)
        }

        /* "src/mpi4py/MPI.src/msgpickle.pxi":554
 *     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:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L4_error;
          }
          __pyx_L8:;
        }
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":556
 *         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":557
 *             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(21, 557, __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":556
 *         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":559
 *             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(21, 559, __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;
       __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      if ( 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(21, 559, __pyx_L13_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);
      __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:;
      __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":560
 *     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":548
 *     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":562
 *     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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":563
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 563, __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":564
 * 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(21, 564, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":565
 *     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(21, 565, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":566
 *     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":567
 *     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":568
 *     cdef object objects = None
 *     try:
 *         with nogil: CHKERR( MPI_Waitall(             # <<<<<<<<<<<<<<
 *             rs.count, rs.requests, rs.statuses) )
 *         objects = rs.get_objects()
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "src/mpi4py/MPI.src/msgpickle.pxi":569
 *     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(21, 568, __pyx_L7_error)
        }

        /* "src/mpi4py/MPI.src/msgpickle.pxi":568
 *     cdef object objects = None
 *     try:
 *         with nogil: CHKERR( MPI_Waitall(             # <<<<<<<<<<<<<<
 *             rs.count, rs.requests, rs.statuses) )
 *         objects = rs.get_objects()
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L4_error;
          }
          __pyx_L8:;
        }
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":570
 *         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(21, 570, __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":572
 *         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(21, 572, __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;
       __Pyx_ExceptionSwap(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      if ( 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(21, 572, __pyx_L10_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);
      __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:;
      __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":573
 *     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":562
 *     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":575
 *     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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":576
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 576, __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":577
 * 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(21, 577, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":578
 *     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(21, 578, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":579
 *     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":580
 *     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":581
 *     cdef object objects = None
 *     try:
 *         with nogil: CHKERR( MPI_Testall(             # <<<<<<<<<<<<<<
 *             rs.count, rs.requests, flag, rs.statuses) )
 *         if flag[0]:
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "src/mpi4py/MPI.src/msgpickle.pxi":582
 *     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(21, 581, __pyx_L7_error)
        }

        /* "src/mpi4py/MPI.src/msgpickle.pxi":581
 *     cdef object objects = None
 *     try:
 *         with nogil: CHKERR( MPI_Testall(             # <<<<<<<<<<<<<<
 *             rs.count, rs.requests, flag, rs.statuses) )
 *         if flag[0]:
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L4_error;
          }
          __pyx_L8:;
        }
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":583
 *         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":584
 *             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(21, 584, __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":583
 *         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":586
 *             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(21, 586, __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;
       __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      if ( 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(21, 586, __pyx_L11_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);
      __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:;
      __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":587
 *     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":575
 *     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":589
 *     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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":590
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 590, __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":591
 * 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(21, 591, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":592
 *     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(21, 592, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":593
 *     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(21, 593, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":594
 *     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":595
 *     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":596
 *     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":597
 *     cdef object objects = None
 *     try:
 *         with nogil: CHKERR( MPI_Waitsome(             # <<<<<<<<<<<<<<
 *             rs.count, rs.requests, &rs.outcount, rs.indices, rs.statuses) )
 *         indices = rs.get_indices()
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "src/mpi4py/MPI.src/msgpickle.pxi":598
 *     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(21, 597, __pyx_L7_error)
        }

        /* "src/mpi4py/MPI.src/msgpickle.pxi":597
 *     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:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L4_error;
          }
          __pyx_L8:;
        }
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":599
 *         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(21, 599, __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":600
 *             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(21, 600, __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":602
 *         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(21, 602, __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;
       __Pyx_ExceptionSwap(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      if ( 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(21, 602, __pyx_L10_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);
      __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:;
      __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":603
 *     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(21, 603, __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) != (0)) __PYX_ERR(21, 603, __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) != (0)) __PYX_ERR(21, 603, __pyx_L1_error);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":589
 *     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":605
 *     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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":606
 * 
 * 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_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 606, __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":607
 * 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(21, 607, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":608
 *     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(21, 608, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":609
 *     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(21, 609, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":610
 *     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":611
 *     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":612
 *     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":613
 *     cdef object objects = None
 *     try:
 *         with nogil: CHKERR( MPI_Testsome(             # <<<<<<<<<<<<<<
 *             rs.count, rs.requests, &rs.outcount, rs.indices, rs.statuses) )
 *         indices = rs.get_indices()
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "src/mpi4py/MPI.src/msgpickle.pxi":614
 *     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(21, 613, __pyx_L7_error)
        }

        /* "src/mpi4py/MPI.src/msgpickle.pxi":613
 *     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:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L4_error;
          }
          __pyx_L8:;
        }
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":615
 *         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(21, 615, __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":616
 *             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(21, 616, __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":618
 *         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(21, 618, __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;
       __Pyx_ExceptionSwap(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      if ( 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(21, 618, __pyx_L10_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);
      __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:;
      __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":619
 *     finally:
 *         rs.release(statuses)
 *     return (indices, objects)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 619, __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) != (0)) __PYX_ERR(21, 619, __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) != (0)) __PYX_ERR(21, 619, __pyx_L1_error);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":605
 *     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":623
 * # -----------------------------------------------------------------------------
 * 
 * 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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":625
 * 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
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(21, 625, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":626
 *                         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":623
 * # -----------------------------------------------------------------------------
 * 
 * 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":628
 *     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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":630
 * 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":631
 *                          MPI_Comm comm, MPI_Status *status):
 *     cdef int flag = 0
 *     with nogil: CHKERR( MPI_Iprobe(source, tag, comm, &flag, status) )             # <<<<<<<<<<<<<<
 *     return <bint>flag
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(21, 631, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":632
 *     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(21, 632, __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":628
 *     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":634
 *     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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":636
 * 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":637
 *                          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":638
 *     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":640
 *     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":641
 *     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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(21, 641, __pyx_L5_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L6:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":642
 *     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":643
 *     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(21, 643, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":644
 *     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(21, 644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_rmsg = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":645
 *     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":634
 *     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":647
 *     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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":649
 * 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":650
 *                           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":651
 *     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":653
 *     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":654
 *     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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(21, 654, __pyx_L5_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L6:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":655
 *     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":656
 *     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(21, 656, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":657
 *     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(21, 657, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_rmsg = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":658
 *     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":647
 *     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":660
 *     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":662
 * 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":663
 *                         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":664
 *     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":665
 *     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":666
 *     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":667
 *     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":666
 *     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":668
 *     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":670
 *     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":671
 *         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(21, 671, __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":670
 *     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":673
 *         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(21, 673, __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":674
 *     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":675
 *         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)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":676
 *     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(21, 675, __pyx_L5_error)
      }

      /* "src/mpi4py/MPI.src/msgpickle.pxi":675
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L6:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":677
 *     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(21, 677, __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":678
 *         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":660
 *     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":680
 *     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":682
 * 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":683
 *                          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":684
 *     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":685
 *     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":686
 *     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":685
 *     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":687
 *     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":689
 *     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":690
 *         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(21, 690, __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":689
 *     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":692
 *         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(21, 692, __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":693
 *     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":694
 *         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(21, 694, __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":693
 *     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":695
 *     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":696
 *         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
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":697
 *     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(21, 696, __pyx_L6_error)
      }

      /* "src/mpi4py/MPI.src/msgpickle.pxi":696
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L7;
        }
        __pyx_L6_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L7:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":698
 *     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":680
 *     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":702
 * # -----------------------------------------------------------------------------
 * 
 * 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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":703
 * 
 * cdef object PyMPI_barrier(MPI_Comm comm):
 *     with nogil: CHKERR( MPI_Barrier(comm) )             # <<<<<<<<<<<<<<
 *     return None
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Barrier(__pyx_v_comm)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(21, 703, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":704
 * 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":702
 * # -----------------------------------------------------------------------------
 * 
 * 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":707
 * 
 * 
 * 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;
  size_t __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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":708
 * 
 * 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":710
 *     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":711
 *     #
 *     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":712
 *     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":714
 *     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":715
 *     #
 *     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":716
 *     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(21, 716, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":717
 *     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":718
 *     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":719
 *     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":718
 *     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":720
 *         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":721
 *             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":720
 *         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":723
 *             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":717
 *     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":725
 *             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(21, 725, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgpickle.pxi":726
 *     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":727
 *         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":726
 *     else:
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 *         if root == rank:             # <<<<<<<<<<<<<<
 *             dosend, dorecv = 1, 1
 *         else:
*/
      goto __pyx_L5;
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":729
 *             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":731
 *             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":732
 *     #
 *     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":734
 *     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(21, 734, __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":735
 *     #
 *     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":736
 *     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_mstate_global->__pyx_n_u_bcast); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 736, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 736, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = NULL;
    __pyx_t_9 = __Pyx_PyObject_LookupSpecial(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_9)) __PYX_ERR(21, 736, __pyx_L10_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_10 = 1;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_9))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9);
      assert(__pyx_t_8);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_9, __pyx__function);
      __pyx_t_10 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL};
      __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_9, __pyx_callargs+__pyx_t_10, (1-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 736, __pyx_L10_error)
      __Pyx_GOTREF(__pyx_t_7);
    }
    __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":737
 *     if dosend and dorecv: rmsg = smsg
 *     with PyMPI_Lock(comm, "bcast"):
 *         with nogil: CHKERR( MPI_Bcast_c(             # <<<<<<<<<<<<<<
 *             &count, 1, MPI_COUNT,
 *             root, comm) )
*/
          {
              PyThreadState * _save;
              _save = PyEval_SaveThread();
              __Pyx_FastGIL_Remember();
              /*try:*/ {

                /* "src/mpi4py/MPI.src/msgpickle.pxi":739
 *         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(21, 737, __pyx_L21_error)
              }

              /* "src/mpi4py/MPI.src/msgpickle.pxi":737
 *     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:*/{
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L22;
                }
                __pyx_L21_error: {
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L14_error;
                }
                __pyx_L22:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":740
 *             &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":741
 *             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(21, 741, __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":740
 *             &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":742
 *         if dorecv and not dosend:
 *             rmsg = pickle_alloc(&buf, count)
 *         with nogil: CHKERR( MPI_Bcast_c(             # <<<<<<<<<<<<<<
 *             buf, count, dtype,
 *             root, comm) )
*/
          {
              PyThreadState * _save;
              _save = PyEval_SaveThread();
              __Pyx_FastGIL_Remember();
              /*try:*/ {

                /* "src/mpi4py/MPI.src/msgpickle.pxi":744
 *         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(21, 742, __pyx_L27_error)
              }

              /* "src/mpi4py/MPI.src/msgpickle.pxi":742
 *         if dorecv and not dosend:
 *             rmsg = pickle_alloc(&buf, count)
 *         with nogil: CHKERR( MPI_Bcast_c(             # <<<<<<<<<<<<<<
 *             buf, count, dtype,
 *             root, comm) )
*/
              /*finally:*/ {
                /*normal exit:*/{
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L28;
                }
                __pyx_L27_error: {
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L14_error;
                }
                __pyx_L28:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":736
 *     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_9) < 0) __PYX_ERR(21, 736, __pyx_L16_except_error)
          __Pyx_XGOTREF(__pyx_t_4);
          __Pyx_XGOTREF(__pyx_t_7);
          __Pyx_XGOTREF(__pyx_t_9);
          __pyx_t_8 = PyTuple_Pack(3, __pyx_t_4, __pyx_t_7, __pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(21, 736, __pyx_L16_except_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          if (unlikely(!__pyx_t_14)) __PYX_ERR(21, 736, __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(21, 736, __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_9);
            __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_7, __pyx_t_9);
            __pyx_t_4 = 0;  __pyx_t_7 = 0;  __pyx_t_9 = 0; 
            __PYX_ERR(21, 736, __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_9); __pyx_t_9 = 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_mstate_global->__pyx_tuple[12], NULL);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (unlikely(!__pyx_t_13)) __PYX_ERR(21, 736, __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":745
 *             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_9 = __pyx_f_6mpi4py_3MPI_pickle_load(__pyx_v_pickle, __pyx_v_buf, __pyx_v_count); if (unlikely(!__pyx_t_9)) __PYX_ERR(21, 745, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF_SET(__pyx_v_rmsg, __pyx_t_9);
    __pyx_t_9 = 0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":747
 *     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":707
 * 
 * 
 * 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":750
 * 
 * 
 * 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;
  size_t __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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":751
 * 
 * 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":753
 *     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":754
 *     #
 *     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":755
 *     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":756
 *     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":757
 *     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":758
 *     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":759
 *     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":761
 *     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":762
 *     #
 *     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":763
 *     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(21, 763, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":764
 *     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":765
 *     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(21, 765, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgpickle.pxi":766
 *     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":767
 *         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":766
 *     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":768
 *         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":769
 *             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":768
 *         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":771
 *             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":764
 *     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":773
 *             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(21, 773, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgpickle.pxi":774
 *     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(21, 774, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgpickle.pxi":775
 *         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":776
 *         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":775
 *         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":778
 *             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":780
 *             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":781
 *     #
 *     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":784
 *     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(21, 784, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_v_unused1 = __pyx_t_4;
    __pyx_t_4 = 0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":785
 *     #
 *     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(21, 785, __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":786
 *     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_mstate_global->__pyx_n_u_gather); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 786, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 786, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = NULL;
    __pyx_t_8 = __Pyx_PyObject_LookupSpecial(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_8)) __PYX_ERR(21, 786, __pyx_L8_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = 1;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
      assert(__pyx_t_7);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
      __pyx_t_9 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
      __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_9, (1-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 786, __pyx_L8_error)
      __Pyx_GOTREF(__pyx_t_6);
    }
    __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":787
 *     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,
*/
          {
              PyThreadState * _save;
              _save = PyEval_SaveThread();
              __Pyx_FastGIL_Remember();
              /*try:*/ {

                /* "src/mpi4py/MPI.src/msgpickle.pxi":790
 *             &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(21, 787, __pyx_L19_error)
              }

              /* "src/mpi4py/MPI.src/msgpickle.pxi":787
 *     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:*/{
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L20;
                }
                __pyx_L19_error: {
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L12_error;
                }
                __pyx_L20:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":791
 *             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(21, 791, __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":792
 *             root, comm) )
 *         if dorecv: rmsg = pickle_allocv(&rbuf, size, rcounts, rdispls)
 *         with nogil: CHKERR( MPI_Gatherv_c(             # <<<<<<<<<<<<<<
 *             sbuf, scount,           stype,
 *             rbuf, rcounts, rdispls, rtype,
*/
          {
              PyThreadState * _save;
              _save = PyEval_SaveThread();
              __Pyx_FastGIL_Remember();
              /*try:*/ {

                /* "src/mpi4py/MPI.src/msgpickle.pxi":795
 *             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(21, 792, __pyx_L23_error)
              }

              /* "src/mpi4py/MPI.src/msgpickle.pxi":792
 *             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:*/{
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L24;
                }
                __pyx_L23_error: {
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L12_error;
                }
                __pyx_L24:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":786
 *     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_8) < 0) __PYX_ERR(21, 786, __pyx_L14_except_error)
          __Pyx_XGOTREF(__pyx_t_4);
          __Pyx_XGOTREF(__pyx_t_6);
          __Pyx_XGOTREF(__pyx_t_8);
          __pyx_t_7 = PyTuple_Pack(3, __pyx_t_4, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 786, __pyx_L14_except_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_13)) __PYX_ERR(21, 786, __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(21, 786, __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_8);
            __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_6, __pyx_t_8);
            __pyx_t_4 = 0;  __pyx_t_6 = 0;  __pyx_t_8 = 0; 
            __PYX_ERR(21, 786, __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_8); __pyx_t_8 = 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_mstate_global->__pyx_tuple[12], NULL);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_12)) __PYX_ERR(21, 786, __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":796
 *             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_8 = __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_8)) __PYX_ERR(21, 796, __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":798
 *     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":750
 * 
 * 
 * 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":801
 * 
 * 
 * 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;
  size_t __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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":802
 * 
 * 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":804
 *     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":805
 *     #
 *     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":806
 *     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":807
 *     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":808
 *     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":809
 *     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":810
 *     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":812
 *     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":813
 *     #
 *     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":814
 *     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(21, 814, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":815
 *     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":816
 *     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(21, 816, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgpickle.pxi":817
 *     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":818
 *         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":817
 *     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":819
 *         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":820
 *             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":819
 *         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":822
 *             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":815
 *     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":824
 *             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(21, 824, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgpickle.pxi":825
 *     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(21, 825, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgpickle.pxi":826
 *         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":827
 *         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":826
 *         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":829
 *             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":831
 *             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":832
 *     #
 *     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":835
 *     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(21, 835, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_v_unused1 = __pyx_t_4;
    __pyx_t_4 = 0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":836
 *     #
 *     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(21, 836, __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":837
 *     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_mstate_global->__pyx_n_u_scatter); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 837, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 837, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = NULL;
    __pyx_t_8 = __Pyx_PyObject_LookupSpecial(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_8)) __PYX_ERR(21, 837, __pyx_L8_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = 1;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
      assert(__pyx_t_7);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
      __pyx_t_9 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
      __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_9, (1-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 837, __pyx_L8_error)
      __Pyx_GOTREF(__pyx_t_6);
    }
    __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":838
 *     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,
*/
          {
              PyThreadState * _save;
              _save = PyEval_SaveThread();
              __Pyx_FastGIL_Remember();
              /*try:*/ {

                /* "src/mpi4py/MPI.src/msgpickle.pxi":841
 *             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(21, 838, __pyx_L19_error)
              }

              /* "src/mpi4py/MPI.src/msgpickle.pxi":838
 *     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:*/{
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L20;
                }
                __pyx_L19_error: {
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L12_error;
                }
                __pyx_L20:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":842
 *             &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(21, 842, __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":843
 *             root, comm) )
 *         if dorecv: rmsg = pickle_alloc(&rbuf, rcount)
 *         with nogil: CHKERR( MPI_Scatterv_c(             # <<<<<<<<<<<<<<
 *             sbuf, scounts, sdispls, stype,
 *             rbuf, rcount,           rtype,
*/
          {
              PyThreadState * _save;
              _save = PyEval_SaveThread();
              __Pyx_FastGIL_Remember();
              /*try:*/ {

                /* "src/mpi4py/MPI.src/msgpickle.pxi":846
 *             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(21, 843, __pyx_L23_error)
              }

              /* "src/mpi4py/MPI.src/msgpickle.pxi":843
 *             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:*/{
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L24;
                }
                __pyx_L23_error: {
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L12_error;
                }
                __pyx_L24:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":837
 *     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_8) < 0) __PYX_ERR(21, 837, __pyx_L14_except_error)
          __Pyx_XGOTREF(__pyx_t_4);
          __Pyx_XGOTREF(__pyx_t_6);
          __Pyx_XGOTREF(__pyx_t_8);
          __pyx_t_7 = PyTuple_Pack(3, __pyx_t_4, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 837, __pyx_L14_except_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_13)) __PYX_ERR(21, 837, __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(21, 837, __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_8);
            __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_6, __pyx_t_8);
            __pyx_t_4 = 0;  __pyx_t_6 = 0;  __pyx_t_8 = 0; 
            __PYX_ERR(21, 837, __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_8); __pyx_t_8 = 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_mstate_global->__pyx_tuple[12], NULL);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_12)) __PYX_ERR(21, 837, __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":847
 *             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_8 = __pyx_f_6mpi4py_3MPI_pickle_load(__pyx_v_pickle, __pyx_v_rbuf, __pyx_v_rcount); if (unlikely(!__pyx_t_8)) __PYX_ERR(21, 847, __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":849
 *     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":801
 * 
 * 
 * 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":852
 * 
 * 
 * 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;
  size_t __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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":853
 * 
 * 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":855
 *     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":856
 *     #
 *     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":857
 *     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":858
 *     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":859
 *     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":860
 *     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":861
 *     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":863
 *     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":864
 *     #
 *     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(21, 864, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":865
 *     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":866
 *     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(21, 866, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgpickle.pxi":865
 *     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":868
 *         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(21, 868, __pyx_L1_error)
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":870
 *         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":871
 *     #
 *     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":874
 *     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(21, 874, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_unused1 = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":875
 *     #
 *     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(21, 875, __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":876
 *     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_mstate_global->__pyx_n_u_allgather); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 876, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 876, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = NULL;
    __pyx_t_7 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 876, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = 1;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
      assert(__pyx_t_6);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
      __pyx_t_8 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
      __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 876, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    __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":877
 *     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,
*/
          {
              PyThreadState * _save;
              _save = PyEval_SaveThread();
              __Pyx_FastGIL_Remember();
              /*try:*/ {

                /* "src/mpi4py/MPI.src/msgpickle.pxi":880
 *             &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(21, 877, __pyx_L15_error)
              }

              /* "src/mpi4py/MPI.src/msgpickle.pxi":877
 *     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:*/{
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L16;
                }
                __pyx_L15_error: {
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L8_error;
                }
                __pyx_L16:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":881
 *             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(21, 881, __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":882
 *             comm) )
 *         rmsg = pickle_allocv(&rbuf, size, rcounts, rdispls)
 *         with nogil: CHKERR( MPI_Allgatherv_c(             # <<<<<<<<<<<<<<
 *             sbuf, scount,           stype,
 *             rbuf, rcounts, rdispls, rtype,
*/
          {
              PyThreadState * _save;
              _save = PyEval_SaveThread();
              __Pyx_FastGIL_Remember();
              /*try:*/ {

                /* "src/mpi4py/MPI.src/msgpickle.pxi":885
 *             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(21, 882, __pyx_L18_error)
              }

              /* "src/mpi4py/MPI.src/msgpickle.pxi":882
 *             comm) )
 *         rmsg = pickle_allocv(&rbuf, size, rcounts, rdispls)
 *         with nogil: CHKERR( MPI_Allgatherv_c(             # <<<<<<<<<<<<<<
 *             sbuf, scount,           stype,
 *             rbuf, rcounts, rdispls, rtype,
*/
              /*finally:*/ {
                /*normal exit:*/{
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L19;
                }
                __pyx_L18_error: {
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L8_error;
                }
                __pyx_L19:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":876
 *     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_7) < 0) __PYX_ERR(21, 876, __pyx_L10_except_error)
          __Pyx_XGOTREF(__pyx_t_3);
          __Pyx_XGOTREF(__pyx_t_5);
          __Pyx_XGOTREF(__pyx_t_7);
          __pyx_t_6 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 876, __pyx_L10_except_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (unlikely(!__pyx_t_12)) __PYX_ERR(21, 876, __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(21, 876, __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_7);
            __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_5, __pyx_t_7);
            __pyx_t_3 = 0;  __pyx_t_5 = 0;  __pyx_t_7 = 0; 
            __PYX_ERR(21, 876, __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_7); __pyx_t_7 = 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_mstate_global->__pyx_tuple[12], NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(21, 876, __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":886
 *             rbuf, rcounts, rdispls, rtype,
 *             comm) )
 *     rmsg = pickle_loadv(pickle, rbuf, size, rcounts, rdispls)             # <<<<<<<<<<<<<<
 *     #
 *     return rmsg
*/
  __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(21, 886, __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":888
 *     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":852
 * 
 * 
 * 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":891
 * 
 * 
 * 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;
  size_t __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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":892
 * 
 * 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":894
 *     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":895
 *     #
 *     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":896
 *     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":897
 *     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":898
 *     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":899
 *     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":900
 *     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":901
 *     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":903
 *     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":904
 *     #
 *     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(21, 904, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":905
 *     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":906
 *     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(21, 906, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgpickle.pxi":905
 *     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":908
 *         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(21, 908, __pyx_L1_error)
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":910
 *         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":911
 *     #
 *     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":914
 *     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(21, 914, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_unused1 = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":915
 *     #
 *     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(21, 915, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_unused2 = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":916
 *     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(21, 916, __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":917
 *     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_mstate_global->__pyx_n_u_alltoall); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 917, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 917, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = NULL;
    __pyx_t_7 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 917, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = 1;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
      assert(__pyx_t_6);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
      __pyx_t_8 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
      __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 917, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    __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":918
 *     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,
*/
          {
              PyThreadState * _save;
              _save = PyEval_SaveThread();
              __Pyx_FastGIL_Remember();
              /*try:*/ {

                /* "src/mpi4py/MPI.src/msgpickle.pxi":921
 *             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(21, 918, __pyx_L15_error)
              }

              /* "src/mpi4py/MPI.src/msgpickle.pxi":918
 *     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:*/{
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L16;
                }
                __pyx_L15_error: {
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L8_error;
                }
                __pyx_L16:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":922
 *             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(21, 922, __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":923
 *             comm) )
 *         rmsg = pickle_allocv(&rbuf, size, rcounts, rdispls)
 *         with nogil: CHKERR( MPI_Alltoallv_c(             # <<<<<<<<<<<<<<
 *             sbuf, scounts, sdispls, stype,
 *             rbuf, rcounts, rdispls, rtype,
*/
          {
              PyThreadState * _save;
              _save = PyEval_SaveThread();
              __Pyx_FastGIL_Remember();
              /*try:*/ {

                /* "src/mpi4py/MPI.src/msgpickle.pxi":926
 *             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(21, 923, __pyx_L18_error)
              }

              /* "src/mpi4py/MPI.src/msgpickle.pxi":923
 *             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:*/{
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L19;
                }
                __pyx_L18_error: {
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L8_error;
                }
                __pyx_L19:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":917
 *     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_7) < 0) __PYX_ERR(21, 917, __pyx_L10_except_error)
          __Pyx_XGOTREF(__pyx_t_3);
          __Pyx_XGOTREF(__pyx_t_5);
          __Pyx_XGOTREF(__pyx_t_7);
          __pyx_t_6 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 917, __pyx_L10_except_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (unlikely(!__pyx_t_12)) __PYX_ERR(21, 917, __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(21, 917, __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_7);
            __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_5, __pyx_t_7);
            __pyx_t_3 = 0;  __pyx_t_5 = 0;  __pyx_t_7 = 0; 
            __PYX_ERR(21, 917, __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_7); __pyx_t_7 = 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_mstate_global->__pyx_tuple[12], NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(21, 917, __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":927
 *             rbuf, rcounts, rdispls, rtype,
 *             comm) )
 *     rmsg = pickle_loadv(pickle, rbuf, size, rcounts, rdispls)             # <<<<<<<<<<<<<<
 *     #
 *     return rmsg
*/
  __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(21, 927, __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":929
 *     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":891
 * 
 * 
 * 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":932
 * 
 * 
 * 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;
  size_t __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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":933
 * 
 * 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":935
 *     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":936
 *     #
 *     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":937
 *     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":938
 *     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":939
 *     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":940
 *     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":941
 *     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":943
 *     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":944
 *     #
 *     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(21, 944, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":946
 *     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":947
 *     #
 *     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":950
 *     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(21, 950, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused1 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":951
 *     #
 *     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":952
 *     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(21, 952, __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":953
 *     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_mstate_global->__pyx_n_u_neighbor_allgather); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 953, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 953, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = NULL;
    __pyx_t_8 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_8)) __PYX_ERR(21, 953, __pyx_L5_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = 1;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
      assert(__pyx_t_7);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
      __pyx_t_9 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
      __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_9, (1-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 953, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_6);
    }
    __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":954
 *     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,
*/
          {
              PyThreadState * _save;
              _save = PyEval_SaveThread();
              __Pyx_FastGIL_Remember();
              /*try:*/ {

                /* "src/mpi4py/MPI.src/msgpickle.pxi":957
 *             &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(21, 954, __pyx_L16_error)
              }

              /* "src/mpi4py/MPI.src/msgpickle.pxi":954
 *     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:*/{
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L17;
                }
                __pyx_L16_error: {
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L9_error;
                }
                __pyx_L17:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":958
 *             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(21, 958, __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":959
 *             comm) )
 *         rmsg = pickle_allocv(&rbuf, rsize, rcounts, rdispls)
 *         with nogil: CHKERR( MPI_Neighbor_allgatherv_c(             # <<<<<<<<<<<<<<
 *             sbuf, scount,           stype,
 *             rbuf, rcounts, rdispls, rtype,
*/
          {
              PyThreadState * _save;
              _save = PyEval_SaveThread();
              __Pyx_FastGIL_Remember();
              /*try:*/ {

                /* "src/mpi4py/MPI.src/msgpickle.pxi":962
 *             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(21, 959, __pyx_L19_error)
              }

              /* "src/mpi4py/MPI.src/msgpickle.pxi":959
 *             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:*/{
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L20;
                }
                __pyx_L19_error: {
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L9_error;
                }
                __pyx_L20:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":953
 *     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_8) < 0) __PYX_ERR(21, 953, __pyx_L11_except_error)
          __Pyx_XGOTREF(__pyx_t_2);
          __Pyx_XGOTREF(__pyx_t_6);
          __Pyx_XGOTREF(__pyx_t_8);
          __pyx_t_7 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 953, __pyx_L11_except_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_13)) __PYX_ERR(21, 953, __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(21, 953, __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_8);
            __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_6, __pyx_t_8);
            __pyx_t_2 = 0;  __pyx_t_6 = 0;  __pyx_t_8 = 0; 
            __PYX_ERR(21, 953, __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_8); __pyx_t_8 = 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_mstate_global->__pyx_tuple[12], NULL);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_12)) __PYX_ERR(21, 953, __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":963
 *             rbuf, rcounts, rdispls, rtype,
 *             comm) )
 *     rmsg = pickle_loadv(pickle, rbuf, rsize, rcounts, rdispls)             # <<<<<<<<<<<<<<
 *     #
 *     return rmsg
*/
  __pyx_t_8 = __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_8)) __PYX_ERR(21, 963, __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":965
 *     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":932
 * 
 * 
 * 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":968
 * 
 * 
 * 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;
  size_t __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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":969
 * 
 * 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":971
 *     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":972
 *     #
 *     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":973
 *     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":974
 *     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":975
 *     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":976
 *     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":977
 *     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":978
 *     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":980
 *     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":981
 *     #
 *     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(21, 981, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":983
 *     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":984
 *     #
 *     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":987
 *     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(21, 987, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused1 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":988
 *     #
 *     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(21, 988, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused2 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":989
 *     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":990
 *     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(21, 990, __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":991
 *     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_mstate_global->__pyx_n_u_neighbor_alltoall); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 991, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 991, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = NULL;
    __pyx_t_8 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_8)) __PYX_ERR(21, 991, __pyx_L5_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = 1;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
      assert(__pyx_t_7);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
      __pyx_t_9 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
      __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_9, (1-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 991, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_6);
    }
    __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":992
 *     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,
*/
          {
              PyThreadState * _save;
              _save = PyEval_SaveThread();
              __Pyx_FastGIL_Remember();
              /*try:*/ {

                /* "src/mpi4py/MPI.src/msgpickle.pxi":995
 *             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(21, 992, __pyx_L16_error)
              }

              /* "src/mpi4py/MPI.src/msgpickle.pxi":992
 *     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:*/{
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L17;
                }
                __pyx_L16_error: {
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L9_error;
                }
                __pyx_L17:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":996
 *             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(21, 996, __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":997
 *             comm) )
 *         rmsg = pickle_allocv(&rbuf, rsize, rcounts, rdispls)
 *         with nogil: CHKERR( MPI_Neighbor_alltoallv_c(             # <<<<<<<<<<<<<<
 *             sbuf, scounts, sdispls, stype,
 *             rbuf, rcounts, rdispls, rtype,
*/
          {
              PyThreadState * _save;
              _save = PyEval_SaveThread();
              __Pyx_FastGIL_Remember();
              /*try:*/ {

                /* "src/mpi4py/MPI.src/msgpickle.pxi":1000
 *             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(21, 997, __pyx_L19_error)
              }

              /* "src/mpi4py/MPI.src/msgpickle.pxi":997
 *             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:*/{
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L20;
                }
                __pyx_L19_error: {
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L9_error;
                }
                __pyx_L20:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":991
 *     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_8) < 0) __PYX_ERR(21, 991, __pyx_L11_except_error)
          __Pyx_XGOTREF(__pyx_t_2);
          __Pyx_XGOTREF(__pyx_t_6);
          __Pyx_XGOTREF(__pyx_t_8);
          __pyx_t_7 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 991, __pyx_L11_except_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_13)) __PYX_ERR(21, 991, __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(21, 991, __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_8);
            __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_6, __pyx_t_8);
            __pyx_t_2 = 0;  __pyx_t_6 = 0;  __pyx_t_8 = 0; 
            __PYX_ERR(21, 991, __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_8); __pyx_t_8 = 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_mstate_global->__pyx_tuple[12], NULL);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_12)) __PYX_ERR(21, 991, __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":1001
 *             rbuf, rcounts, rdispls, rtype,
 *             comm) )
 *     rmsg = pickle_loadv(pickle, rbuf, rsize, rcounts, rdispls)             # <<<<<<<<<<<<<<
 *     #
 *     return rmsg
*/
  __pyx_t_8 = __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_8)) __PYX_ERR(21, 1001, __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":1003
 *     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":968
 * 
 * 
 * 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":1007
 * # -----------------------------------------------------------------------------
 * 
 * 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;
  size_t __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_py_reduce", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1008
 * 
 * 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":1009
 * 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(21, 1009, __pyx_L1_error)
  __pyx_v_n = __pyx_t_2;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1010
 *     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_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 1010, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_res = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1011
 *     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":1012
 *     cdef object res = seq[0]
 *     for i in range(1, n):
 *         res = op(res, seq[i])             # <<<<<<<<<<<<<<
 *     return res
 * 
*/
    __pyx_t_6 = NULL;
    __Pyx_INCREF(__pyx_v_op);
    __pyx_t_7 = __pyx_v_op; 
    __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_seq, __pyx_v_i, Py_ssize_t, 1, PyLong_FromSsize_t, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_8)) __PYX_ERR(21, 1012, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
      assert(__pyx_t_6);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
      __pyx_t_9 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_v_res, __pyx_t_8};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_9, (3-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 1012, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_DECREF_SET(__pyx_v_res, __pyx_t_3);
    __pyx_t_3 = 0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1013
 *     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":1007
 * # -----------------------------------------------------------------------------
 * 
 * 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":1015
 *     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;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  Py_ssize_t __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  size_t __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_py_scan", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1016
 * 
 * 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":1017
 * 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(21, 1017, __pyx_L1_error)
  __pyx_v_n = __pyx_t_2;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1018
 *     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":1019
 *     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 = NULL;
    __Pyx_INCREF(__pyx_v_op);
    __pyx_t_7 = __pyx_v_op; 
    __pyx_t_8 = (__pyx_v_i - 1);
    __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_seq, __pyx_t_8, Py_ssize_t, 1, PyLong_FromSsize_t, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_9)) __PYX_ERR(21, 1019, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_seq, __pyx_v_i, Py_ssize_t, 1, PyLong_FromSsize_t, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_10)) __PYX_ERR(21, 1019, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_11 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
      assert(__pyx_t_6);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
      __pyx_t_11 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_9, __pyx_t_10};
      __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_11, (3-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 1019, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    if (unlikely((__Pyx_SetItemInt(__pyx_v_seq, __pyx_v_i, __pyx_t_5, Py_ssize_t, 1, PyLong_FromSsize_t, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument) < 0))) __PYX_ERR(21, 1019, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1020
 *     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":1015
 *     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_6);
  __Pyx_XDECREF(__pyx_t_7);
  __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":1022
 *     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":1023
 * 
 * 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":1024
 * 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(21, 1024, __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":1025
 *     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_mstate_global->__pyx_int_neg_1, -1L, 1, Py_ssize_t, PyLong_FromSsize_t); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 1025, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1026
 *     seq = _py_scan(seq, op)
 *     seq.pop(-1)
 *     seq.insert(0, None)             # <<<<<<<<<<<<<<
 *     return seq
 * 
*/
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_seq, __pyx_mstate_global->__pyx_n_u_insert); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 1026, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[13], NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 1026, __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":1027
 *     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":1022
 *     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":1029
 *     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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1031
 * 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(21, 1031, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_items = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1032
 *                                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(21, 1032, __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":1029
 *     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":1034
 *     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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1035
 * 
 * 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(21, 1035, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_items = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1036
 * 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(21, 1036, __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":1034
 *     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":1038
 *     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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1039
 * 
 * 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(21, 1039, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_items = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1040
 * 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(21, 1040, __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":1041
 *     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(21, 1041, __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":1038
 *     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":1043
 *     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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1044
 * 
 * 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(21, 1044, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_items = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1045
 * 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(21, 1045, __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":1046
 *     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(21, 1046, __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":1043
 *     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":1050
 * # ---
 * 
 * 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":1051
 * 
 * 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":1052
 * 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":1053
 *     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":1054
 *     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(21, 1054, __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":1055
 *     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(21, 1055, __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":1050
 * # ---
 * 
 * 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":1057
 *     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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1058
 * 
 * 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":1059
 * 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":1060
 *     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":1061
 *     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":1062
 *     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(21, 1062, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_unuseds = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1063
 *     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
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(21, 1063, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1064
 *     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
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(21, 1064, __pyx_L7_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L8;
        }
        __pyx_L7_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L8:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1065
 *     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":1057
 *     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":1067
 *     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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1068
 * 
 * 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":1069
 * 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":1070
 *     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":1071
 *     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":1072
 *     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":1073
 *     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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(21, 1073, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1074
 *     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(21, 1074, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unusedr = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1075
 *     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)
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(21, 1075, __pyx_L7_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L8;
        }
        __pyx_L7_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L8:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1076
 *     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(21, 1076, __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":1067
 *     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":1078
 *     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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1082
 *                                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":1083
 *                                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":1084
 *     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":1085
 *     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":1086
 *     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(21, 1086, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_unuseds = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1087
 *     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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":1090
 *             &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(21, 1087, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/msgpickle.pxi":1087
 *     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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1091
 *             &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(21, 1091, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_unusedr = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1092
 *             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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":1095
 *             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(21, 1092, __pyx_L7_error)
      }

      /* "src/mpi4py/MPI.src/msgpickle.pxi":1092
 *             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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L8;
        }
        __pyx_L7_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L8:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1096
 *             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(21, 1096, __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":1078
 *     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":1098
 *     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;
  size_t __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":1099
 * 
 * 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":1100
 * 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":1101
 *     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":1102
 *     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":1103
 *     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":1104
 *     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(21, 1104, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1105
 *     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(21, 1105, __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":1106
 *     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_mstate_global->__pyx_kp_u_bcast_p2p); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 1106, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 1106, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = NULL;
    __pyx_t_7 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 1106, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = 1;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
      assert(__pyx_t_6);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
      __pyx_t_8 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
      __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 1106, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    __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":1107
 *     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) )
*/
          {
              PyThreadState * _save;
              _save = PyEval_SaveThread();
              __Pyx_FastGIL_Remember();
              /*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(21, 1107, __pyx_L15_error)
              }
              /*finally:*/ {
                /*normal exit:*/{
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L16;
                }
                __pyx_L15_error: {
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L8_error;
                }
                __pyx_L16:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":1108
 *     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(21, 1108, __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":1109
 *         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)
 * 
*/
          {
              PyThreadState * _save;
              _save = PyEval_SaveThread();
              __Pyx_FastGIL_Remember();
              /*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(21, 1109, __pyx_L19_error)
              }
              /*finally:*/ {
                /*normal exit:*/{
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L20;
                }
                __pyx_L19_error: {
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L8_error;
                }
                __pyx_L20:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":1106
 *     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_7) < 0) __PYX_ERR(21, 1106, __pyx_L10_except_error)
          __Pyx_XGOTREF(__pyx_t_3);
          __Pyx_XGOTREF(__pyx_t_5);
          __Pyx_XGOTREF(__pyx_t_7);
          __pyx_t_6 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 1106, __pyx_L10_except_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (unlikely(!__pyx_t_12)) __PYX_ERR(21, 1106, __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(21, 1106, __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_7);
            __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_5, __pyx_t_7);
            __pyx_t_3 = 0;  __pyx_t_5 = 0;  __pyx_t_7 = 0; 
            __PYX_ERR(21, 1106, __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_7); __pyx_t_7 = 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_mstate_global->__pyx_tuple[12], NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(21, 1106, __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":1110
 *         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_7 = __pyx_f_6mpi4py_3MPI_pickle_load(__pyx_v_pickle, __pyx_v_buf, __pyx_v_count); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 1110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_r = __pyx_t_7;
  __pyx_t_7 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1098
 *     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":1112
 *     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;
  size_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_reduce_p2p", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1115
 *                              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":1116
 *     # 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":1117
 *     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(21, 1117, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1118
 *     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(21, 1118, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1120
 *     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":1121
 *     # 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":1122
 *     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 = NULL;
    __Pyx_INCREF(__pyx_v_6mpi4py_3MPI_MPIException);
    __pyx_t_6 = __pyx_v_6mpi4py_3MPI_MPIException; 
    __pyx_t_7 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_ROOT); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 1122, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
      assert(__pyx_t_5);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
      __pyx_t_8 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_7};
      __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 1122, __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(21, 1122, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1120
 *     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":1124
 *         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(21, 1124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_result = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1127
 *     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":1128
 *     # 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":1129
 *     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":1130
 *     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":1131
 *     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":1132
 *     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":1133
 *     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":1134
 *         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(21, 1134, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "src/mpi4py/MPI.src/msgpickle.pxi":1132
 *     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":1136
 *             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":1137
 *         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":1138
 *             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(21, 1138, __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":1139
 *             if target < size:
 *                 unused = PyMPI_recv_p2p(target, tag, comm)
 *                 result = op(result, unused)             # <<<<<<<<<<<<<<
 *         umask <<= 1
 *     # Send reduction to root
*/
        __pyx_t_6 = NULL;
        __Pyx_INCREF(__pyx_v_op);
        __pyx_t_7 = __pyx_v_op; 
        __pyx_t_8 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
          assert(__pyx_t_6);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
          __pyx_t_8 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_v_result, __pyx_v_unused};
          __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 1139, __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":1137
 *         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":1140
 *                 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":1142
 *         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":1143
 *     # 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":1144
 *     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(21, 1144, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "src/mpi4py/MPI.src/msgpickle.pxi":1143
 *     # 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":1145
 *         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":1146
 *             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(21, 1146, __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":1145
 *         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":1142
 *         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":1147
 *         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":1148
 *             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":1147
 *         elif rank == root:
 *             result = PyMPI_recv_p2p(0, tag, comm)
 *     if rank != root:             # <<<<<<<<<<<<<<
 *         result = None
 *     #
*/
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1150
 *         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":1112
 *     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":1152
 *     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;
  size_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_scan_p2p", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1155
 *                            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":1156
 *     # 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":1157
 *     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(21, 1157, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1158
 *     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(21, 1158, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1160
 *     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(21, 1160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_result = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1161
 *     #
 *     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":1164
 *     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":1165
 *     # 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":1166
 *     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":1167
 *     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":1168
 *     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":1169
 *     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":1170
 *     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":1171
 *         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(21, 1171, __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":1173
 *             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":1174
 *                 partial, target, tag, target, tag, comm)
 *             if rank > target:
 *                 partial = op(unused, partial)             # <<<<<<<<<<<<<<
 *                 result = op(unused, result)
 *             else:
*/
        __pyx_t_4 = NULL;
        __Pyx_INCREF(__pyx_v_op);
        __pyx_t_5 = __pyx_v_op; 
        __pyx_t_6 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
          assert(__pyx_t_4);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
          __pyx_t_6 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_v_unused, __pyx_v_partial};
          __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 1174, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
        }
        __Pyx_DECREF_SET(__pyx_v_partial, __pyx_t_2);
        __pyx_t_2 = 0;

        /* "src/mpi4py/MPI.src/msgpickle.pxi":1175
 *             if rank > target:
 *                 partial = op(unused, partial)
 *                 result = op(unused, result)             # <<<<<<<<<<<<<<
 *             else:
 *                 unused = op(partial, unused)
*/
        __pyx_t_5 = NULL;
        __Pyx_INCREF(__pyx_v_op);
        __pyx_t_4 = __pyx_v_op; 
        __pyx_t_6 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
          assert(__pyx_t_5);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
          __pyx_t_6 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_unused, __pyx_v_result};
          __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __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, 1175, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
        }
        __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_2);
        __pyx_t_2 = 0;

        /* "src/mpi4py/MPI.src/msgpickle.pxi":1173
 *             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":1177
 *                 result = op(unused, result)
 *             else:
 *                 unused = op(partial, unused)             # <<<<<<<<<<<<<<
 *                 partial = unused
 *         umask <<= 1
*/
      /*else*/ {
        __pyx_t_4 = NULL;
        __Pyx_INCREF(__pyx_v_op);
        __pyx_t_5 = __pyx_v_op; 
        __pyx_t_6 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
          assert(__pyx_t_4);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
          __pyx_t_6 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_v_partial, __pyx_v_unused};
          __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 1177, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
        }
        __Pyx_DECREF_SET(__pyx_v_unused, __pyx_t_2);
        __pyx_t_2 = 0;

        /* "src/mpi4py/MPI.src/msgpickle.pxi":1178
 *             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":1170
 *     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":1179
 *                 unused = op(partial, unused)
 *                 partial = unused
 *         umask <<= 1             # <<<<<<<<<<<<<<
 *     #
 *     return result
*/
    __pyx_v_umask = (__pyx_v_umask << 1);
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1181
 *         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":1152
 *     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":1183
 *     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;
  size_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_exscan_p2p", 0);

  /* "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(21, 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(21, 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(21, 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 unsigned int uflag = <unsigned int> 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 unsigned int uflag = <unsigned int> 0
 *     cdef int target = 0
*/
  __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 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":1199
 *     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":1200
 *     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":1201
 *     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":1202
 *     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":1203
 *         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(21, 1203, __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":1205
 *             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":1206
 *                 partial, target, tag, target, tag, comm)
 *             if rank > target:
 *                 partial = op(unused, partial)             # <<<<<<<<<<<<<<
 *                 if uflag == 0:
 *                     uflag = 1
*/
        __pyx_t_4 = NULL;
        __Pyx_INCREF(__pyx_v_op);
        __pyx_t_5 = __pyx_v_op; 
        __pyx_t_6 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
          assert(__pyx_t_4);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
          __pyx_t_6 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_v_unused, __pyx_v_partial};
          __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 1206, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
        }
        __Pyx_DECREF_SET(__pyx_v_partial, __pyx_t_2);
        __pyx_t_2 = 0;

        /* "src/mpi4py/MPI.src/msgpickle.pxi":1207
 *             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":1208
 *                 partial = op(unused, partial)
 *                 if uflag == 0:
 *                     uflag = 1             # <<<<<<<<<<<<<<
 *                     result = unused
 *                 else:
*/
          __pyx_v_uflag = 1;

          /* "src/mpi4py/MPI.src/msgpickle.pxi":1209
 *                 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":1207
 *             if rank > target:
 *                 partial = op(unused, partial)
 *                 if uflag == 0:             # <<<<<<<<<<<<<<
 *                     uflag = 1
 *                     result = unused
*/
          goto __pyx_L7;
        }

        /* "src/mpi4py/MPI.src/msgpickle.pxi":1211
 *                     result = unused
 *                 else:
 *                     result = op(unused, result)             # <<<<<<<<<<<<<<
 *             else:
 *                 unused = op(partial, unused)
*/
        /*else*/ {
          __pyx_t_5 = NULL;
          __Pyx_INCREF(__pyx_v_op);
          __pyx_t_4 = __pyx_v_op; 
          __pyx_t_6 = 1;
          #if CYTHON_UNPACK_METHODS
          if (unlikely(PyMethod_Check(__pyx_t_4))) {
            __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
            assert(__pyx_t_5);
            PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(__pyx__function);
            __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
            __pyx_t_6 = 0;
          }
          #endif
          {
            PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_unused, __pyx_v_result};
            __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __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, 1211, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
          }
          __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_2);
          __pyx_t_2 = 0;
        }
        __pyx_L7:;

        /* "src/mpi4py/MPI.src/msgpickle.pxi":1205
 *             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":1213
 *                     result = op(unused, result)
 *             else:
 *                 unused = op(partial, unused)             # <<<<<<<<<<<<<<
 *                 partial = unused
 *         umask <<= 1
*/
      /*else*/ {
        __pyx_t_4 = NULL;
        __Pyx_INCREF(__pyx_v_op);
        __pyx_t_5 = __pyx_v_op; 
        __pyx_t_6 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
          assert(__pyx_t_4);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
          __pyx_t_6 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_v_partial, __pyx_v_unused};
          __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 1213, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
        }
        __Pyx_DECREF_SET(__pyx_v_unused, __pyx_t_2);
        __pyx_t_2 = 0;

        /* "src/mpi4py/MPI.src/msgpickle.pxi":1214
 *             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":1202
 *     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":1215
 *                 unused = op(partial, unused)
 *                 partial = unused
 *         umask <<= 1             # <<<<<<<<<<<<<<
 *     #
 *     if rank == 0:
*/
    __pyx_v_umask = (__pyx_v_umask << 1);
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1217
 *         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":1218
 *     #
 *     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":1217
 *         umask <<= 1
 *     #
 *     if rank == 0:             # <<<<<<<<<<<<<<
 *         result = None
 *     return result
*/
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1219
 *     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":1183
 *     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":1228
 *     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;
  size_t __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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1232
 *     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_mstate_global->__pyx_kp_u_commctx_intra); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 1232, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 1232, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = NULL;
    __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 1232, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = 1;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_4);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_6 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 1232, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __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":1233
 * ) 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(21, 1233, __pyx_L7_error)

          /* "src/mpi4py/MPI.src/msgpickle.pxi":1232
 *     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_5) < 0) __PYX_ERR(21, 1232, __pyx_L9_except_error)
          __Pyx_XGOTREF(__pyx_t_1);
          __Pyx_XGOTREF(__pyx_t_3);
          __Pyx_XGOTREF(__pyx_t_5);
          __pyx_t_4 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 1232, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(21, 1232, __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(21, 1232, __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_5);
            __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_3, __pyx_t_5);
            __pyx_t_1 = 0;  __pyx_t_3 = 0;  __pyx_t_5 = 0; 
            __PYX_ERR(21, 1232, __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_5); __pyx_t_5 = 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_mstate_global->__pyx_tuple[12], NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          if (unlikely(!__pyx_t_9)) __PYX_ERR(21, 1232, __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":1234
 *     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":1228
 *     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":1236
 *     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;
  size_t __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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1241
 *     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_mstate_global->__pyx_kp_u_commctx_inter); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 1241, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 1241, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = NULL;
    __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 1241, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = 1;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_4);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_6 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 1241, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __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":1242
 * ) 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(21, 1242, __pyx_L7_error)

          /* "src/mpi4py/MPI.src/msgpickle.pxi":1241
 *     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_5) < 0) __PYX_ERR(21, 1241, __pyx_L9_except_error)
          __Pyx_XGOTREF(__pyx_t_1);
          __Pyx_XGOTREF(__pyx_t_3);
          __Pyx_XGOTREF(__pyx_t_5);
          __pyx_t_4 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 1241, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(21, 1241, __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(21, 1241, __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_5);
            __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_3, __pyx_t_5);
            __pyx_t_1 = 0;  __pyx_t_3 = 0;  __pyx_t_5 = 0; 
            __PYX_ERR(21, 1241, __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_5); __pyx_t_5 = 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_mstate_global->__pyx_tuple[12], NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          if (unlikely(!__pyx_t_9)) __PYX_ERR(21, 1241, __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":1244
 *         CHKERR( PyMPI_Commctx_inter(comm, dupcomm, tag,
 *                                     localcomm, low_group) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1236
 *     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":1247
 * 
 * 
 * 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\nCreate/get intracommunicator duplicate.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7_commctx_intra = {"_commctx_intra", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_comm,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(21, 1247, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(21, 1247, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_commctx_intra", 0) < (0)) __PYX_ERR(21, 1247, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_commctx_intra", 1, 1, 1, i); __PYX_ERR(21, 1247, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(21, 1247, __pyx_L3_error)
    }
    __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(21, 1247, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm, 0, "comm", 0))) __PYX_ERR(21, 1248, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1253
 *     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":1254
 *     """
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 1254, __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":1255
 *     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(21, 1255, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1256
 *     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_PyLong_From_int(__pyx_v_tag); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 1256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 1256, __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)) != (0)) __PYX_ERR(21, 1256, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2) != (0)) __PYX_ERR(21, 1256, __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":1247
 * 
 * 
 * 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":1259
 * 
 * 
 * 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\nCreate/get intercommunicator duplicate.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9_commctx_inter = {"_commctx_inter", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_comm,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(21, 1259, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(21, 1259, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_commctx_inter", 0) < (0)) __PYX_ERR(21, 1259, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_commctx_inter", 1, 1, 1, i); __PYX_ERR(21, 1259, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(21, 1259, __pyx_L3_error)
    }
    __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(21, 1259, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intercomm, 0, "comm", 0))) __PYX_ERR(21, 1260, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1265
 *     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":1266
 *     """
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intercomm); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 1266, __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":1267
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 1267, __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":1268
 *     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(21, 1268, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1270
 *     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_PyLong_From_int(__pyx_v_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 1270, __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(21, 1270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 1270, __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)) != (0)) __PYX_ERR(21, 1270, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1) != (0)) __PYX_ERR(21, 1270, __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)) != (0)) __PYX_ERR(21, 1270, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_2) != (0)) __PYX_ERR(21, 1270, __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":1259
 * 
 * 
 * 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":1275
 * # ---
 * 
 * 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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1277
 * 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":1278
 *                                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(21, 1278, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1279
 *     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(21, 1279, __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":1275
 * # ---
 * 
 * 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":1281
 *     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;
  size_t __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":1283
 * 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":1284
 *                                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":1285
 *     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(21, 1285, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1287
 *     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":1288
 *     # 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":1289
 *     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(21, 1289, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1290
 *     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(21, 1290, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1291
 *     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":1293
 *     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(21, 1293, __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":1294
 *         # 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(21, 1294, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1295
 *         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":1291
 *     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":1296
 *         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":1297
 *         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(21, 1297, __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":1296
 *         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":1298
 *     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":1299
 *         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":1298
 *     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":1301
 *         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":1302
 *     else:  # Wrong root argument
 *         <void>MPI_Comm_call_errhandler(comm, MPI_ERR_ROOT)
 *         raise MPIException(MPI_ERR_ROOT)             # <<<<<<<<<<<<<<
 * 
 * 
*/
    __pyx_t_5 = NULL;
    __Pyx_INCREF(__pyx_v_6mpi4py_3MPI_MPIException);
    __pyx_t_6 = __pyx_v_6mpi4py_3MPI_MPIException; 
    __pyx_t_7 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_ROOT); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 1302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
      assert(__pyx_t_5);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
      __pyx_t_8 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_7};
      __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 1302, __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(21, 1302, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1281
 *     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":1305
 * 
 * 
 * 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":1306
 * 
 * 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":1307
 * 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(21, 1307, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1308
 *     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(21, 1308, __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":1309
 *     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(21, 1309, __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":1305
 * 
 * 
 * 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":1311
 *     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":1312
 * 
 * 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":1313
 * 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":1314
 *     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":1315
 *     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(21, 1315, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1316
 *     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(21, 1316, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1318
 *     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(21, 1318, __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":1319
 *     # 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":1320
 *     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(21, 1320, __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":1319
 *     # 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":1321
 *     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(21, 1321, __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":1311
 *     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":1324
 * 
 * 
 * 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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1325
 * 
 * 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":1326
 * 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(21, 1326, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1327
 *     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(21, 1327, __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":1324
 * 
 * 
 * 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":1329
 *     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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1330
 * 
 * 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":1331
 * 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(21, 1331, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1332
 *     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(21, 1332, __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":1329
 *     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":1336
 * # ---
 * 
 * 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;
  PyGILState_STATE __pyx_gilstate_save;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1337
 * 
 * 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":1338
 * 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(21, 1338, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1339
 *     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":1340
 *     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":1336
 * # ---
 * 
 * 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:;
  __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  __Pyx_AddTraceback("mpi4py.MPI.comm_is_intra", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":1343
 * 
 * 
 * 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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1344
 * 
 * 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":1345
 * 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(21, 1345, __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":1344
 * 
 * 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":1346
 *     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(21, 1346, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1347
 *         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(21, 1347, __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":1346
 *     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":1349
 *         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(21, 1349, __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":1343
 * 
 * 
 * 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":1352
 * 
 * 
 * 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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1353
 * 
 * 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":1354
 * 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(21, 1354, __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":1353
 * 
 * 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":1355
 *     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(21, 1355, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1356
 *         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(21, 1356, __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
 *     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":1358
 *         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(21, 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":1352
 * 
 * 
 * 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":1361
 * 
 * 
 * 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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1362
 * 
 * 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":1363
 * 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(21, 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":1362
 * 
 * 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":1365
 *         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(21, 1365, __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":1361
 * 
 * 
 * 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":1368
 * 
 * 
 * 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", 0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1369
 * 
 * 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":1370
 * 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(21, 1370, __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":1369
 * 
 * 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":1372
 *         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(21, 1372, __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":1368
 * 
 * 
 * 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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype)))) __PYX_ERR(22, 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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status)))) __PYX_ERR(22, 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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Grequest), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request)))) __PYX_ERR(22, 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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message)))) __PYX_ERR(22, 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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op)))) __PYX_ERR(22, 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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group)))) __PYX_ERR(22, 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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info)))) __PYX_ERR(22, 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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler)))) __PYX_ERR(22, 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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session)))) __PYX_ERR(22, 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", 0);

  /* "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(22, 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(22, 141, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_tp_new(((PyObject *)__pyx_v_cls), __pyx_mstate_global->__pyx_empty_tuple); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm)))) __PYX_ERR(22, 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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win)))) __PYX_ERR(22, 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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI_File), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_File)))) __PYX_ERR(22, 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":88
 * 
 * 
 * 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\nConvert an *error code* into an *error class*.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_11Get_error_class = {"Get_error_class", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_errorcode,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(23, 88, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(23, 88, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Get_error_class", 0) < (0)) __PYX_ERR(23, 88, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Get_error_class", 1, 1, 1, i); __PYX_ERR(23, 88, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(23, 88, __pyx_L3_error)
    }
    __pyx_v_errorcode = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) __PYX_ERR(23, 88, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_error_class", 1, 1, 1, __pyx_nargs); __PYX_ERR(23, 88, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":92
 *     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":93
 *     """
 *     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(23, 93, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":94
 *     cdef int errorclass = MPI_SUCCESS
 *     CHKERR( MPI_Error_class(errorcode, &errorclass) )
 *     return errorclass             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_errorclass); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 94, __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":88
 * 
 * 
 * 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":97
 * 
 * 
 * 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\nReturn the *error string* for a given *error class* or *error code*.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_13Get_error_string = {"Get_error_string", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_errorcode,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(23, 97, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(23, 97, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Get_error_string", 0) < (0)) __PYX_ERR(23, 97, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Get_error_string", 1, 1, 1, i); __PYX_ERR(23, 97, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(23, 97, __pyx_L3_error)
    }
    __pyx_v_errorcode = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) __PYX_ERR(23, 97, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_error_string", 1, 1, 1, __pyx_nargs); __PYX_ERR(23, 97, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":102
 *     """
 *     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":103
 *     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(23, 103, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":104
 *     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(23, 104, __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":97
 * 
 * 
 * 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":107
 * 
 * 
 * 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\nAdd an *error class* to the known error classes.");
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", 0);

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":111
 *     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":112
 *     """
 *     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(23, 112, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":113
 *     cdef int errorclass = MPI_SUCCESS
 *     CHKERR( MPI_Add_error_class(&errorclass) )
 *     return errorclass             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_errorclass); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 113, __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":107
 * 
 * 
 * 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":116
 * 
 * 
 * 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\nRemove an *error class* from the known error classes.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_17Remove_error_class = {"Remove_error_class", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_errorclass,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(23, 116, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(23, 116, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Remove_error_class", 0) < (0)) __PYX_ERR(23, 116, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Remove_error_class", 1, 1, 1, i); __PYX_ERR(23, 116, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(23, 116, __pyx_L3_error)
    }
    __pyx_v_errorclass = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_errorclass == (int)-1) && PyErr_Occurred())) __PYX_ERR(23, 116, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Remove_error_class", 1, 1, 1, __pyx_nargs); __PYX_ERR(23, 116, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":120
 *     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(23, 120, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":116
 * 
 * 
 * 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":123
 * 
 * 
 * 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\nAdd an *error code* to an *error class*.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_19Add_error_code = {"Add_error_code", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_errorclass,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(23, 123, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(23, 123, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Add_error_code", 0) < (0)) __PYX_ERR(23, 123, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Add_error_code", 1, 1, 1, i); __PYX_ERR(23, 123, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(23, 123, __pyx_L3_error)
    }
    __pyx_v_errorclass = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_errorclass == (int)-1) && PyErr_Occurred())) __PYX_ERR(23, 123, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Add_error_code", 1, 1, 1, __pyx_nargs); __PYX_ERR(23, 123, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":127
 *     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":128
 *     """
 *     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(23, 128, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":129
 *     cdef int errorcode = MPI_SUCCESS
 *     CHKERR( MPI_Add_error_code(errorclass, &errorcode) )
 *     return errorcode             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_errorcode); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 129, __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":123
 * 
 * 
 * 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":132
 * 
 * 
 * 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\nRemove an *error code* from the known error codes.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_21Remove_error_code = {"Remove_error_code", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_errorcode,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(23, 132, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(23, 132, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Remove_error_code", 0) < (0)) __PYX_ERR(23, 132, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Remove_error_code", 1, 1, 1, i); __PYX_ERR(23, 132, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(23, 132, __pyx_L3_error)
    }
    __pyx_v_errorcode = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) __PYX_ERR(23, 132, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Remove_error_code", 1, 1, 1, __pyx_nargs); __PYX_ERR(23, 132, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":136
 *     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(23, 136, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":132
 * 
 * 
 * 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":139
 * 
 * 
 * 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\nAssociate an *error string* with an *error class* or *error code*.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_23Add_error_string = {"Add_error_string", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_errorcode,&__pyx_mstate_global->__pyx_n_u_string,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(23, 139, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(23, 139, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(23, 139, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Add_error_string", 0) < (0)) __PYX_ERR(23, 139, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Add_error_string", 1, 2, 2, i); __PYX_ERR(23, 139, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(23, 139, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(23, 139, __pyx_L3_error)
    }
    __pyx_v_errorcode = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) __PYX_ERR(23, 139, __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(23, 139, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":143
 *     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":144
 *     """
 *     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(23, 144, __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":145
 *     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(23, 145, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":139
 * 
 * 
 * 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":148
 * 
 * 
 * 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\nRemove *error string* association from *error class* or *error code*.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_25Remove_error_string = {"Remove_error_string", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_errorcode,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(23, 148, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(23, 148, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Remove_error_string", 0) < (0)) __PYX_ERR(23, 148, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Remove_error_string", 1, 1, 1, i); __PYX_ERR(23, 148, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(23, 148, __pyx_L3_error)
    }
    __pyx_v_errorcode = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) __PYX_ERR(23, 148, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Remove_error_string", 1, 1, 1, __pyx_nargs); __PYX_ERR(23, 148, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":152
 *     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(23, 152, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":148
 * 
 * 
 * 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":9
 *     """
 * 
 *     def __init__(self, int ierr: int = SUCCESS, /) -> None:             # <<<<<<<<<<<<<<
 *         """Initialize self."""
 *         if ierr < MPI_SUCCESS: ierr = MPI_ERR_UNKNOWN
*/

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__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_int(__Pyx_CyFunction_Defaults(struct __pyx_defaults, __pyx_self)->arg0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 9, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 9, __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) != (0)) __PYX_ERR(2, 9, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 9, __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) != (0)) __PYX_ERR(2, 9, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, Py_None) != (0)) __PYX_ERR(2, 9, __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_9Exception_1__init__(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_9Exception___init__, "__init__(self, ierr: int = SUCCESS, /) -> None\n\nInitialize self.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_1__init__ = {"__init__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Exception_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Exception___init__};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_1__init__(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_self = 0;
  int __pyx_v_ierr;
  #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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    struct __pyx_defaults *__pyx_dynamic_args = __Pyx_CyFunction_Defaults(struct __pyx_defaults, __pyx_self);
    const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(2, 9, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      __Pyx_RejectKeywords("__init__", __pyx_kwds); __PYX_ERR(2, 9, __pyx_L3_error)
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(2, 9, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 9, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_self = values[0];
    if (values[1]) {
      __pyx_v_ierr = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_ierr == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 9, __pyx_L3_error)
    } else {
      __pyx_v_ierr = __pyx_dynamic_args->arg0;
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 2, __pyx_nargs); __PYX_ERR(2, 9, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Exception___init__(__pyx_self, __pyx_v_self, __pyx_v_ierr);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, int __pyx_v_ierr) {
  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;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "src/mpi4py/MPI.src/Exception.pyx":11
 *     def __init__(self, int ierr: int = SUCCESS, /) -> None:
 *         """Initialize self."""
 *         if ierr < MPI_SUCCESS: ierr = MPI_ERR_UNKNOWN             # <<<<<<<<<<<<<<
 *         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":12
 *         """Initialize self."""
 *         if ierr < MPI_SUCCESS: ierr = MPI_ERR_UNKNOWN
 *         RuntimeError.__init__(self, ierr)             # <<<<<<<<<<<<<<
 * 
 *     def __int__(self) -> int:
*/
  __pyx_t_3 = ((PyObject *)(((PyTypeObject*)PyExc_RuntimeError)));
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_self, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_init, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 12, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Exception.pyx":9
 *     """
 * 
 *     def __init__(self, int ierr: int = SUCCESS, /) -> None:             # <<<<<<<<<<<<<<
 *         """Initialize self."""
 *         if ierr < MPI_SUCCESS: ierr = MPI_ERR_UNKNOWN
*/

  /* 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_AddTraceback("mpi4py.MPI.Exception.__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/Exception.pyx":14
 *         RuntimeError.__init__(self, ierr)
 * 
 *     def __int__(self) -> int:             # <<<<<<<<<<<<<<
 *         """Return int(self)."""
 *         return self.args[0]
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_3__int__(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_9Exception_2__int__, "__int__(self) -> int\n\nReturn int(self).");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_3__int__ = {"__int__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Exception_3__int__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Exception_2__int__};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_3__int__(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_self = 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("__int__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(2, 14, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 14, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__int__", 0) < (0)) __PYX_ERR(2, 14, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__int__", 1, 1, 1, i); __PYX_ERR(2, 14, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 14, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__int__", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 14, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__int__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Exception_2__int__(__pyx_self, __pyx_v_self);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_2__int__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__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("__int__", 0);

  /* "src/mpi4py/MPI.src/Exception.pyx":16
 *     def __int__(self) -> int:
 *         """Return int(self)."""
 *         return self.args[0]             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self) -> bool:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_args); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 16, __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/Exception.pyx":14
 *         RuntimeError.__init__(self, ierr)
 * 
 *     def __int__(self) -> int:             # <<<<<<<<<<<<<<
 *         """Return int(self)."""
 *         return self.args[0]
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __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":18
 *         return self.args[0]
 * 
 *     def __bool__(self) -> bool:             # <<<<<<<<<<<<<<
 *         """Return bool(self)."""
 *         return <int>self != MPI_SUCCESS
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_5__bool__(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_9Exception_4__bool__, "__bool__(self) -> bool\n\nReturn bool(self).");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_5__bool__ = {"__bool__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Exception_5__bool__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Exception_4__bool__};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_5__bool__(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_self = 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("__bool__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(2, 18, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 18, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__bool__", 0) < (0)) __PYX_ERR(2, 18, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__bool__", 1, 1, 1, i); __PYX_ERR(2, 18, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 18, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__bool__", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 18, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__bool__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Exception_4__bool__(__pyx_self, __pyx_v_self);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_4__bool__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__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("__bool__", 0);

  /* "src/mpi4py/MPI.src/Exception.pyx":20
 *     def __bool__(self) -> bool:
 *         """Return bool(self)."""
 *         return <int>self != MPI_SUCCESS             # <<<<<<<<<<<<<<
 * 
 *     def __hash__(self) -> int:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_As_int(__pyx_v_self); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 20, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyBool_FromLong((((int)__pyx_t_1) != MPI_SUCCESS)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 20, __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":18
 *         return self.args[0]
 * 
 *     def __bool__(self) -> bool:             # <<<<<<<<<<<<<<
 *         """Return bool(self)."""
 *         return <int>self != MPI_SUCCESS
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__bool__", __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":22
 *         return <int>self != MPI_SUCCESS
 * 
 *     def __hash__(self) -> int:             # <<<<<<<<<<<<<<
 *         """Return hash(self)."""
 *         return hash(int(self))
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_7__hash__(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_9Exception_6__hash__, "__hash__(self) -> int\n\nReturn hash(self).");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_7__hash__ = {"__hash__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Exception_7__hash__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Exception_6__hash__};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_7__hash__(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_self = 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("__hash__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(2, 22, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 22, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__hash__", 0) < (0)) __PYX_ERR(2, 22, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__hash__", 1, 1, 1, i); __PYX_ERR(2, 22, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 22, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__hash__", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 22, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__hash__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Exception_6__hash__(__pyx_self, __pyx_v_self);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_6__hash__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __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__", 0);

  /* "src/mpi4py/MPI.src/Exception.pyx":24
 *     def __hash__(self) -> int:
 *         """Return hash(self)."""
 *         return hash(int(self))             # <<<<<<<<<<<<<<
 * 
 *     def __eq__(self, object other: object, /) -> bool:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyNumber_Int(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 24, __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(2, 24, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyLong_FromHash_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 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/Exception.pyx":22
 *         return <int>self != MPI_SUCCESS
 * 
 *     def __hash__(self) -> int:             # <<<<<<<<<<<<<<
 *         """Return hash(self)."""
 *         return hash(int(self))
*/

  /* 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 = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Exception.pyx":26
 *         return hash(int(self))
 * 
 *     def __eq__(self, object other: object, /) -> bool:             # <<<<<<<<<<<<<<
 *         """Return self==value."""
 *         return int(self) == other
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_9__eq__(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_9Exception_8__eq__, "__eq__(self, other: object, /) -> bool\n\nReturn self==value.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_9__eq__ = {"__eq__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Exception_9__eq__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Exception_8__eq__};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_9__eq__(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_self = 0;
  PyObject *__pyx_v_other = 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("__eq__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(2, 26, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      __Pyx_RejectKeywords("__eq__", __pyx_kwds); __PYX_ERR(2, 26, __pyx_L3_error)
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 26, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(2, 26, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_other = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__eq__", 1, 2, 2, __pyx_nargs); __PYX_ERR(2, 26, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__eq__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Exception_8__eq__(__pyx_self, __pyx_v_self, __pyx_v_other);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_8__eq__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  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("__eq__", 0);

  /* "src/mpi4py/MPI.src/Exception.pyx":28
 *     def __eq__(self, object other: object, /) -> bool:
 *         """Return self==value."""
 *         return int(self) == other             # <<<<<<<<<<<<<<
 * 
 *     def __ne__(self, object other: object, /) -> bool:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyNumber_Int(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_v_other, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 28, __pyx_L1_error)
  __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/Exception.pyx":26
 *         return hash(int(self))
 * 
 *     def __eq__(self, object other: object, /) -> bool:             # <<<<<<<<<<<<<<
 *         """Return self==value."""
 *         return int(self) == other
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__eq__", __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":30
 *         return int(self) == other
 * 
 *     def __ne__(self, object other: object, /) -> bool:             # <<<<<<<<<<<<<<
 *         """Return self!=other."""
 *         return int(self) != other
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_11__ne__(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_9Exception_10__ne__, "__ne__(self, other: object, /) -> bool\n\nReturn self!=other.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_11__ne__ = {"__ne__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Exception_11__ne__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Exception_10__ne__};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_11__ne__(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_self = 0;
  PyObject *__pyx_v_other = 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("__ne__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(2, 30, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      __Pyx_RejectKeywords("__ne__", __pyx_kwds); __PYX_ERR(2, 30, __pyx_L3_error)
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 30, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(2, 30, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_other = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__ne__", 1, 2, 2, __pyx_nargs); __PYX_ERR(2, 30, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__ne__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Exception_10__ne__(__pyx_self, __pyx_v_self, __pyx_v_other);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_10__ne__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  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("__ne__", 0);

  /* "src/mpi4py/MPI.src/Exception.pyx":32
 *     def __ne__(self, object other: object, /) -> bool:
 *         """Return self!=other."""
 *         return int(self) != other             # <<<<<<<<<<<<<<
 * 
 *     def __lt__(self, object other: int, /) -> bool:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyNumber_Int(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_v_other, Py_NE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 32, __pyx_L1_error)
  __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/Exception.pyx":30
 *         return int(self) == other
 * 
 *     def __ne__(self, object other: object, /) -> bool:             # <<<<<<<<<<<<<<
 *         """Return self!=other."""
 *         return int(self) != other
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__ne__", __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":34
 *         return int(self) != other
 * 
 *     def __lt__(self, object other: int, /) -> bool:             # <<<<<<<<<<<<<<
 *         """Return self<other."""
 *         return int(self) < other
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_13__lt__(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_9Exception_12__lt__, "__lt__(self, other: int, /) -> bool\n\nReturn self<other.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_13__lt__ = {"__lt__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Exception_13__lt__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Exception_12__lt__};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_13__lt__(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_self = 0;
  PyObject *__pyx_v_other = 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("__lt__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(2, 34, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      __Pyx_RejectKeywords("__lt__", __pyx_kwds); __PYX_ERR(2, 34, __pyx_L3_error)
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 34, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(2, 34, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_other = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__lt__", 1, 2, 2, __pyx_nargs); __PYX_ERR(2, 34, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__lt__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Exception_12__lt__(__pyx_self, __pyx_v_self, __pyx_v_other);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_12__lt__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  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("__lt__", 0);

  /* "src/mpi4py/MPI.src/Exception.pyx":36
 *     def __lt__(self, object other: int, /) -> bool:
 *         """Return self<other."""
 *         return int(self) < other             # <<<<<<<<<<<<<<
 * 
 *     def __le__(self, object other: int, /) -> bool:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyNumber_Int(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_v_other, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 36, __pyx_L1_error)
  __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/Exception.pyx":34
 *         return int(self) != other
 * 
 *     def __lt__(self, object other: int, /) -> bool:             # <<<<<<<<<<<<<<
 *         """Return self<other."""
 *         return int(self) < other
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__lt__", __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 int(self) < other
 * 
 *     def __le__(self, object other: int, /) -> bool:             # <<<<<<<<<<<<<<
 *         """Return self<=other."""
 *         return int(self) <= other
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_15__le__(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_9Exception_14__le__, "__le__(self, other: int, /) -> bool\n\nReturn self<=other.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_15__le__ = {"__le__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Exception_15__le__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Exception_14__le__};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_15__le__(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_self = 0;
  PyObject *__pyx_v_other = 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("__le__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(2, 38, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      __Pyx_RejectKeywords("__le__", __pyx_kwds); __PYX_ERR(2, 38, __pyx_L3_error)
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 38, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(2, 38, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_other = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__le__", 1, 2, 2, __pyx_nargs); __PYX_ERR(2, 38, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__le__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Exception_14__le__(__pyx_self, __pyx_v_self, __pyx_v_other);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_14__le__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  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("__le__", 0);

  /* "src/mpi4py/MPI.src/Exception.pyx":40
 *     def __le__(self, object other: int, /) -> bool:
 *         """Return self<=other."""
 *         return int(self) <= other             # <<<<<<<<<<<<<<
 * 
 *     def __gt__(self, object other: int, /) -> bool:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyNumber_Int(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_v_other, Py_LE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 40, __pyx_L1_error)
  __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/Exception.pyx":38
 *         return int(self) < other
 * 
 *     def __le__(self, object other: int, /) -> bool:             # <<<<<<<<<<<<<<
 *         """Return self<=other."""
 *         return int(self) <= other
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__le__", __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":42
 *         return int(self) <= other
 * 
 *     def __gt__(self, object other: int, /) -> bool:             # <<<<<<<<<<<<<<
 *         """Return self>other."""
 *         return int(self) > other
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_17__gt__(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_9Exception_16__gt__, "__gt__(self, other: int, /) -> bool\n\nReturn self>other.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_17__gt__ = {"__gt__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Exception_17__gt__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Exception_16__gt__};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_17__gt__(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_self = 0;
  PyObject *__pyx_v_other = 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("__gt__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(2, 42, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      __Pyx_RejectKeywords("__gt__", __pyx_kwds); __PYX_ERR(2, 42, __pyx_L3_error)
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 42, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(2, 42, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_other = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__gt__", 1, 2, 2, __pyx_nargs); __PYX_ERR(2, 42, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__gt__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Exception_16__gt__(__pyx_self, __pyx_v_self, __pyx_v_other);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_16__gt__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  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("__gt__", 0);

  /* "src/mpi4py/MPI.src/Exception.pyx":44
 *     def __gt__(self, object other: int, /) -> bool:
 *         """Return self>other."""
 *         return int(self) > other             # <<<<<<<<<<<<<<
 * 
 *     def __ge__(self, object other: int, /) -> bool:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyNumber_Int(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_v_other, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 44, __pyx_L1_error)
  __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/Exception.pyx":42
 *         return int(self) <= other
 * 
 *     def __gt__(self, object other: int, /) -> bool:             # <<<<<<<<<<<<<<
 *         """Return self>other."""
 *         return int(self) > other
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__gt__", __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 int(self) > other
 * 
 *     def __ge__(self, object other: int, /) -> bool:             # <<<<<<<<<<<<<<
 *         """Return self>=other."""
 *         return int(self) >= other
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_19__ge__(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_9Exception_18__ge__, "__ge__(self, other: int, /) -> bool\n\nReturn self>=other.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_19__ge__ = {"__ge__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Exception_19__ge__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Exception_18__ge__};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_19__ge__(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_self = 0;
  PyObject *__pyx_v_other = 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("__ge__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(2, 46, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      __Pyx_RejectKeywords("__ge__", __pyx_kwds); __PYX_ERR(2, 46, __pyx_L3_error)
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 46, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(2, 46, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_other = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__ge__", 1, 2, 2, __pyx_nargs); __PYX_ERR(2, 46, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__ge__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Exception_18__ge__(__pyx_self, __pyx_v_self, __pyx_v_other);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_18__ge__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  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("__ge__", 0);

  /* "src/mpi4py/MPI.src/Exception.pyx":48
 *     def __ge__(self, object other: int, /) -> bool:
 *         """Return self>=other."""
 *         return int(self) >= other             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self) -> str:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyNumber_Int(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_v_other, Py_GE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 48, __pyx_L1_error)
  __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/Exception.pyx":46
 *         return int(self) > other
 * 
 *     def __ge__(self, object other: int, /) -> bool:             # <<<<<<<<<<<<<<
 *         """Return self>=other."""
 *         return int(self) >= other
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__ge__", __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":50
 *         return int(self) >= other
 * 
 *     def __repr__(self) -> str:             # <<<<<<<<<<<<<<
 *         """Return repr(self)."""
 *         return f"MPI.Exception({int(self)})"
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_21__repr__(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_9Exception_20__repr__, "__repr__(self) -> str\n\nReturn repr(self).");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_21__repr__ = {"__repr__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Exception_21__repr__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Exception_20__repr__};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_21__repr__(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_self = 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("__repr__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(2, 50, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 50, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__repr__", 0) < (0)) __PYX_ERR(2, 50, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__repr__", 1, 1, 1, i); __PYX_ERR(2, 50, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 50, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__repr__", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 50, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Exception_20__repr__(__pyx_self, __pyx_v_self);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_20__repr__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3[3];
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "src/mpi4py/MPI.src/Exception.pyx":52
 *     def __repr__(self) -> str:
 *         """Return repr(self)."""
 *         return f"MPI.Exception({int(self)})"             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self) -> str:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyNumber_Int(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3[0] = __pyx_mstate_global->__pyx_kp_u_MPI_Exception;
  __pyx_t_3[1] = __pyx_t_2;
  __pyx_t_3[2] = __pyx_mstate_global->__pyx_kp_u__4;
  __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_3, 3, 14 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2));
  if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 52, __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":50
 *         return int(self) >= other
 * 
 *     def __repr__(self) -> str:             # <<<<<<<<<<<<<<
 *         """Return repr(self)."""
 *         return f"MPI.Exception({int(self)})"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __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":54
 *         return f"MPI.Exception({int(self)})"
 * 
 *     def __str__(self) -> str:             # <<<<<<<<<<<<<<
 *         """Return str(self)."""
 *         if mpi_version < 4 and not mpi_active():
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_23__str__(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_9Exception_22__str__, "__str__(self) -> str\n\nReturn str(self).");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_23__str__ = {"__str__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Exception_23__str__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Exception_22__str__};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_23__str__(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_self = 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("__str__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(2, 54, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 54, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__str__", 0) < (0)) __PYX_ERR(2, 54, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__str__", 1, 1, 1, i); __PYX_ERR(2, 54, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 54, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__str__", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 54, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Exception_22__str__(__pyx_self, __pyx_v_self);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_22__str__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__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;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "src/mpi4py/MPI.src/Exception.pyx":56
 *     def __str__(self) -> str:
 *         """Return str(self)."""
 *         if mpi_version < 4 and not mpi_active():             # <<<<<<<<<<<<<<
 *             return f"error code: {int(self)}"  # ~> legacy
 *         return self.Get_error_string()
*/
  __pyx_t_2 = (__pyx_v_6mpi4py_3MPI_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":57
 *         """Return str(self)."""
 *         if mpi_version < 4 and not mpi_active():
 *             return f"error code: {int(self)}"  # ~> legacy             # <<<<<<<<<<<<<<
 *         return self.Get_error_string()
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 57, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_3, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 57, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_error_code, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 57, __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/Exception.pyx":56
 *     def __str__(self) -> str:
 *         """Return str(self)."""
 *         if mpi_version < 4 and not mpi_active():             # <<<<<<<<<<<<<<
 *             return f"error code: {int(self)}"  # ~> legacy
 *         return self.Get_error_string()
*/
  }

  /* "src/mpi4py/MPI.src/Exception.pyx":58
 *         if mpi_version < 4 and not mpi_active():
 *             return f"error code: {int(self)}"  # ~> legacy
 *         return self.Get_error_string()             # <<<<<<<<<<<<<<
 * 
 *     def Get_error_code(self) -> int:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __pyx_v_self;
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_error_string, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Exception.pyx":54
 *         return f"MPI.Exception({int(self)})"
 * 
 *     def __str__(self) -> str:             # <<<<<<<<<<<<<<
 *         """Return str(self)."""
 *         if mpi_version < 4 and not mpi_active():
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __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":60
 *         return self.Get_error_string()
 * 
 *     def Get_error_code(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Error code.
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_25Get_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_9Exception_24Get_error_code, "Get_error_code(self) -> int\n\nError code.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_25Get_error_code = {"Get_error_code", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Exception_25Get_error_code, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Exception_24Get_error_code};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_25Get_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
) {
  PyObject *__pyx_v_self = 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_error_code (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(2, 60, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 60, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Get_error_code", 0) < (0)) __PYX_ERR(2, 60, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Get_error_code", 1, 1, 1, i); __PYX_ERR(2, 60, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 60, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_error_code", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 60, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("mpi4py.MPI.Exception.Get_error_code", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Exception_24Get_error_code(__pyx_self, __pyx_v_self);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_24Get_error_code(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__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", 0);

  /* "src/mpi4py/MPI.src/Exception.pyx":64
 *         Error code.
 *         """
 *         cdef int errorcode = self             # <<<<<<<<<<<<<<
 *         return errorcode
 * 
*/
  __pyx_t_1 = __Pyx_PyLong_As_int(__pyx_v_self); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 64, __pyx_L1_error)
  __pyx_v_errorcode = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Exception.pyx":65
 *         """
 *         cdef int errorcode = self
 *         return errorcode             # <<<<<<<<<<<<<<
 * 
 *     def Get_error_class(self) -> int:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_errorcode); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 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":60
 *         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":67
 *         return errorcode
 * 
 *     def Get_error_class(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Error class.
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_27Get_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_9Exception_26Get_error_class, "Get_error_class(self) -> int\n\nError class.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_27Get_error_class = {"Get_error_class", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Exception_27Get_error_class, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Exception_26Get_error_class};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_27Get_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
) {
  PyObject *__pyx_v_self = 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_error_class (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(2, 67, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 67, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Get_error_class", 0) < (0)) __PYX_ERR(2, 67, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Get_error_class", 1, 1, 1, i); __PYX_ERR(2, 67, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 67, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_error_class", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 67, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("mpi4py.MPI.Exception.Get_error_class", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Exception_26Get_error_class(__pyx_self, __pyx_v_self);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_26Get_error_class(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_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", 0);

  /* "src/mpi4py/MPI.src/Exception.pyx":71
 *         Error class.
 *         """
 *         cdef int errorcode = self             # <<<<<<<<<<<<<<
 *         cdef int errorclass = MPI_SUCCESS
 *         CHKERR( MPI_Error_class(errorcode, &errorclass) )
*/
  __pyx_t_1 = __Pyx_PyLong_As_int(__pyx_v_self); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 71, __pyx_L1_error)
  __pyx_v_errorcode = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Exception.pyx":72
 *         """
 *         cdef int errorcode = self
 *         cdef int errorclass = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Error_class(errorcode, &errorclass) )
 *         return errorclass
*/
  __pyx_v_errorclass = MPI_SUCCESS;

  /* "src/mpi4py/MPI.src/Exception.pyx":73
 *         cdef int errorcode = self
 *         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(2, 73, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Exception.pyx":74
 *         cdef int errorclass = MPI_SUCCESS
 *         CHKERR( MPI_Error_class(errorcode, &errorclass) )
 *         return errorclass             # <<<<<<<<<<<<<<
 * 
 *     def Get_error_string(self) -> str:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_errorclass); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 74, __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":67
 *         return errorcode
 * 
 *     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":76
 *         return errorclass
 * 
 *     def Get_error_string(self) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Error string.
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_29Get_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_9Exception_28Get_error_string, "Get_error_string(self) -> str\n\nError string.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_29Get_error_string = {"Get_error_string", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Exception_29Get_error_string, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Exception_28Get_error_string};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_29Get_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
) {
  PyObject *__pyx_v_self = 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_error_string (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(2, 76, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 76, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Get_error_string", 0) < (0)) __PYX_ERR(2, 76, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Get_error_string", 1, 1, 1, i); __PYX_ERR(2, 76, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 76, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_error_string", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 76, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("mpi4py.MPI.Exception.Get_error_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Exception_28Get_error_string(__pyx_self, __pyx_v_self);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_28Get_error_string(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_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", 0);

  /* "src/mpi4py/MPI.src/Exception.pyx":80
 *         Error string.
 *         """
 *         cdef int errorcode = self             # <<<<<<<<<<<<<<
 *         cdef char string[MPI_MAX_ERROR_STRING+1]
 *         cdef int resultlen = 0
*/
  __pyx_t_1 = __Pyx_PyLong_As_int(__pyx_v_self); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 80, __pyx_L1_error)
  __pyx_v_errorcode = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Exception.pyx":82
 *         cdef int errorcode = self
 *         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/Exception.pyx":83
 *         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(2, 83, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Exception.pyx":84
 *         cdef int resultlen = 0
 *         CHKERR( MPI_Error_string(errorcode, string, &resultlen) )
 *         return tompistr(string, resultlen)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __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(2, 84, __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":76
 *         return errorclass
 * 
 *     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":86
 *         return tompistr(string, resultlen)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def error_code(self) -> int:
 *         """Error code."""
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_31error_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_9Exception_30error_code, "error_code(self) -> int\n\nError code.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_31error_code = {"error_code", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Exception_31error_code, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Exception_30error_code};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_31error_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
) {
  PyObject *__pyx_v_self = 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("error_code (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(2, 86, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 86, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "error_code", 0) < (0)) __PYX_ERR(2, 86, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("error_code", 1, 1, 1, i); __PYX_ERR(2, 86, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 86, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("error_code", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 86, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("mpi4py.MPI.Exception.error_code", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Exception_30error_code(__pyx_self, __pyx_v_self);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_30error_code(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("error_code", 0);

  /* "src/mpi4py/MPI.src/Exception.pyx":89
 *     def error_code(self) -> int:
 *         """Error code."""
 *         return self.Get_error_code()             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_v_self;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_error_code, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 89, __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":86
 *         return tompistr(string, resultlen)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def error_code(self) -> int:
 *         """Error code."""
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.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":91
 *         return self.Get_error_code()
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def error_class(self) -> int:
 *         """Error class."""
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_33error_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_9Exception_32error_class, "error_class(self) -> int\n\nError class.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_33error_class = {"error_class", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Exception_33error_class, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Exception_32error_class};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_33error_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
) {
  PyObject *__pyx_v_self = 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("error_class (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(2, 91, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 91, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "error_class", 0) < (0)) __PYX_ERR(2, 91, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("error_class", 1, 1, 1, i); __PYX_ERR(2, 91, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 91, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("error_class", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 91, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("mpi4py.MPI.Exception.error_class", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Exception_32error_class(__pyx_self, __pyx_v_self);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_32error_class(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("error_class", 0);

  /* "src/mpi4py/MPI.src/Exception.pyx":94
 *     def error_class(self) -> int:
 *         """Error class."""
 *         return self.Get_error_class()             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_v_self;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_error_class, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 94, __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":91
 *         return self.Get_error_code()
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def error_class(self) -> int:
 *         """Error class."""
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.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":96
 *         return self.Get_error_class()
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def error_string(self) -> str:
 *         """Error string."""
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_35error_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_9Exception_34error_string, "error_string(self) -> str\n\nError string.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_35error_string = {"error_string", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Exception_35error_string, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Exception_34error_string};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_35error_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
) {
  PyObject *__pyx_v_self = 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("error_string (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(2, 96, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 96, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "error_string", 0) < (0)) __PYX_ERR(2, 96, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("error_string", 1, 1, 1, i); __PYX_ERR(2, 96, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 96, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("error_string", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 96, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("mpi4py.MPI.Exception.error_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Exception_34error_string(__pyx_self, __pyx_v_self);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_34error_string(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("error_string", 0);

  /* "src/mpi4py/MPI.src/Exception.pyx":99
 *     def error_string(self) -> str:
 *         """Error string."""
 *         return self.Get_error_string()             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_v_self;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_error_string, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 99, __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":96
 *         return self.Get_error_class()
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def error_string(self) -> str:
 *         """Error string."""
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.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/Datatype.pyx":50
 *     """
 * 
 *     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_SIZE
  __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 ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_datatype,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 50, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 50, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < (0)) __PYX_ERR(24, 50, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIDatatypeObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 50, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIDatatypeObject *)Py_None));
    }
    __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(24, 50, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, 1, "datatype", 0))) __PYX_ERR(24, 50, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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":51
 * 
 *     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(24, 51, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":50
 *     """
 * 
 *     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":53
 *         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":54
 * 
 *     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(24, 54, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":53
 *         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":56
 *         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__", 0);

  /* "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)
 * 
*/
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_mstate_global->__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":58
 *     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(24, 58, __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":56
 *         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":60
 *         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":61
 * 
 *     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":60
 *         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":63
 *         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(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce__", __pyx_kwds); 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__", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":64
 * 
 *     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(24, 64, __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":63
 *         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":68
 *     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__", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":69
 *         """MPI handle."""
 *         def __get__(self) -> int:
 *             return tohandle(self)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_FromSize_t(__pyx_fuse_0__pyx_f_6mpi4py_3MPI_tohandle(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 69, __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":68
 *     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":71
 *             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\nCreate object from MPI handle.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_11fromhandle = {"fromhandle", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_handle,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 71, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 71, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "fromhandle", 0) < (0)) __PYX_ERR(24, 71, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("fromhandle", 1, 1, 1, i); __PYX_ERR(24, 71, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 71, __pyx_L3_error)
    }
    __pyx_v_handle = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fromhandle", 1, 1, 1, __pyx_nargs); __PYX_ERR(24, 71, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":76
 *         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_PyLong_As_size_t(__pyx_v_handle); if (unlikely((__pyx_t_1 == ((Py_uintptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(24, 76, __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(24, 76, __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":71
 *             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":78
 *         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\nCall `Free` if not null or predefined.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_13free = {"free", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("free", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":82
 *         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(24, 82, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":78
 *         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":87
 *     # ------------------
 * 
 *     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\nReturn the number of bytes occupied by entries in the datatype.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_15Get_size = {"Get_size", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_size", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":91
 *         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":92
 *         """
 *         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(24, 92, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":93
 *         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_PyLong_From_MPI_Count(__pyx_v_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 93, __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":87
 *     # ------------------
 * 
 *     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":97
 *     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__", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":98
 *         """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":99
 *         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(24, 99, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":100
 *             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_PyLong_From_MPI_Count(__pyx_v_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 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/Datatype.pyx":97
 *     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":102
 *             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\nReturn lower bound and extent of datatype.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_17Get_extent = {"Get_extent", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_extent", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":106
 *         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":107
 *         """
 *         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(24, 107, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":108
 *         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_PyLong_From_MPI_Count(__pyx_v_lb); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyLong_From_MPI_Count(__pyx_v_extent); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 108, __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) != (0)) __PYX_ERR(24, 108, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3) != (0)) __PYX_ERR(24, 108, __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":102
 *             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":112
 *     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__", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":113
 *         """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":114
 *         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(24, 114, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":115
 *             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_PyLong_From_MPI_Count(__pyx_v_extent); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 115, __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":112
 *     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":119
 *     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__", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":120
 *         """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":121
 *         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(24, 121, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":122
 *             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_PyLong_From_MPI_Count(__pyx_v_lb); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 122, __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":119
 *     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":126
 *     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__", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":127
 *         """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":128
 *         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(24, 128, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":129
 *             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_PyLong_From_MPI_Count((__pyx_v_lb + __pyx_v_extent)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 129, __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":126
 *     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":134
 *     # ---------------------
 * 
 *     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\nDuplicate a datatype.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_19Dup = {"Dup", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Dup", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":138
 *         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(24, 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_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "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
 * 
*/
  __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(24, 139, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":140
 *         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":134
 *     # ---------------------
 * 
 *     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":144
 *     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\nCreate a contiguous datatype.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_21Create_contiguous = {"Create_contiguous", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_count,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 144, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 144, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create_contiguous", 0) < (0)) __PYX_ERR(24, 144, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Create_contiguous", 1, 1, 1, i); __PYX_ERR(24, 144, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 144, __pyx_L3_error)
    }
    __pyx_v_count = __Pyx_PyLong_As_MPI_Count(values[0]); if (unlikely((__pyx_v_count == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(24, 144, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_contiguous", 1, 1, 1, __pyx_nargs); __PYX_ERR(24, 144, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":148
 *         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(24, 148, __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":149
 *         """
 *         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(24, 149, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":152
 *             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":144
 *     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":154
 *         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\nCreate a vector (strided) datatype.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_23Create_vector = {"Create_vector", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_count,&__pyx_mstate_global->__pyx_n_u_blocklength,&__pyx_mstate_global->__pyx_n_u_stride,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 154, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(24, 154, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 154, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 154, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create_vector", 0) < (0)) __PYX_ERR(24, 154, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Create_vector", 1, 3, 3, i); __PYX_ERR(24, 154, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 154, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 154, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(24, 154, __pyx_L3_error)
    }
    __pyx_v_count = __Pyx_PyLong_As_MPI_Count(values[0]); if (unlikely((__pyx_v_count == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(24, 156, __pyx_L3_error)
    __pyx_v_blocklength = __Pyx_PyLong_As_MPI_Count(values[1]); if (unlikely((__pyx_v_blocklength == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(24, 157, __pyx_L3_error)
    __pyx_v_stride = __Pyx_PyLong_As_MPI_Count(values[2]); if (unlikely((__pyx_v_stride == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(24, 158, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_vector", 1, 3, 3, __pyx_nargs); __PYX_ERR(24, 154, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":163
 *         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(24, 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_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":164
 *         """
 *         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(24, 164, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":167
 *             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":154
 *         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":169
 *         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\nCreate a vector (strided) datatype with stride in bytes.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_25Create_hvector = {"Create_hvector", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_count,&__pyx_mstate_global->__pyx_n_u_blocklength,&__pyx_mstate_global->__pyx_n_u_stride,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 169, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(24, 169, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 169, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 169, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create_hvector", 0) < (0)) __PYX_ERR(24, 169, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Create_hvector", 1, 3, 3, i); __PYX_ERR(24, 169, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 169, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 169, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(24, 169, __pyx_L3_error)
    }
    __pyx_v_count = __Pyx_PyLong_As_MPI_Count(values[0]); if (unlikely((__pyx_v_count == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(24, 171, __pyx_L3_error)
    __pyx_v_blocklength = __Pyx_PyLong_As_MPI_Count(values[1]); if (unlikely((__pyx_v_blocklength == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(24, 172, __pyx_L3_error)
    __pyx_v_stride = __Pyx_PyLong_As_MPI_Count(values[2]); if (unlikely((__pyx_v_stride == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(24, 173, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_hvector", 1, 3, 3, __pyx_nargs); __PYX_ERR(24, 169, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":178
 *         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(24, 178, __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":179
 *         """
 *         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(24, 179, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":182
 *             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":169
 *         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":184
 *         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\nCreate an indexed datatype.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_27Create_indexed = {"Create_indexed", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_blocklengths,&__pyx_mstate_global->__pyx_n_u_displacements,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 184, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 184, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 184, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create_indexed", 0) < (0)) __PYX_ERR(24, 184, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Create_indexed", 1, 2, 2, i); __PYX_ERR(24, 184, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 184, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 184, __pyx_L3_error)
    }
    __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(24, 184, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":192
 *         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":193
 *         """
 *         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(24, 193, __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":194
 *         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(24, 194, __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":196
 *         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(24, 196, __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":197
 *         #
 *         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(24, 197, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":200
 *             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":184
 *         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":202
 *         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\nCreate an indexed datatype.\n\n.. note:: Displacements are measured in bytes.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_29Create_hindexed = {"Create_hindexed", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_blocklengths,&__pyx_mstate_global->__pyx_n_u_displacements,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 202, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 202, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 202, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create_hindexed", 0) < (0)) __PYX_ERR(24, 202, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Create_hindexed", 1, 2, 2, i); __PYX_ERR(24, 202, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 202, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 202, __pyx_L3_error)
    }
    __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(24, 202, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":212
 *         .. 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":213
 *         """
 *         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(24, 213, __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":214
 *         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(24, 214, __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":216
 *         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(24, 216, __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":217
 *         #
 *         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(24, 217, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":221
 *             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":202
 *         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":223
 *         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\nCreate an indexed datatype with constant-sized blocks.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_31Create_indexed_block = {"Create_indexed_block", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_blocklength,&__pyx_mstate_global->__pyx_n_u_displacements,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 223, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 223, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 223, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create_indexed_block", 0) < (0)) __PYX_ERR(24, 223, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Create_indexed_block", 1, 2, 2, i); __PYX_ERR(24, 223, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 223, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 223, __pyx_L3_error)
    }
    __pyx_v_blocklength = __Pyx_PyLong_As_MPI_Count(values[0]); if (unlikely((__pyx_v_blocklength == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(24, 225, __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(24, 223, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":231
 *         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":232
 *         """
 *         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(24, 232, __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":234
 *         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(24, 234, __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":235
 *         #
 *         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(24, 235, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":238
 *             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":223
 *         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":240
 *         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\nCreate an indexed datatype with constant-sized blocks.\n\n.. note:: Displacements are measured in bytes.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_33Create_hindexed_block = {"Create_hindexed_block", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_blocklength,&__pyx_mstate_global->__pyx_n_u_displacements,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 240, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 240, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 240, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create_hindexed_block", 0) < (0)) __PYX_ERR(24, 240, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Create_hindexed_block", 1, 2, 2, i); __PYX_ERR(24, 240, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 240, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 240, __pyx_L3_error)
    }
    __pyx_v_blocklength = __Pyx_PyLong_As_MPI_Count(values[0]); if (unlikely((__pyx_v_blocklength == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(24, 242, __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(24, 240, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":250
 *         .. 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":251
 *         """
 *         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(24, 251, __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":253
 *         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(24, 253, __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":254
 *         #
 *         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(24, 254, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":257
 *             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":240
 *         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":259
 *         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\nCreate a general composite (struct) datatype.\n\n.. note:: Displacements are measured in bytes.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_35Create_struct = {"Create_struct", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_blocklengths,&__pyx_mstate_global->__pyx_n_u_displacements,&__pyx_mstate_global->__pyx_n_u_datatypes,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 259, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(24, 259, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 259, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 259, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create_struct", 0) < (0)) __PYX_ERR(24, 259, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Create_struct", 1, 3, 3, i); __PYX_ERR(24, 259, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 259, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 259, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(24, 259, __pyx_L3_error)
    }
    __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(24, 259, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":271
 *         .. 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":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)
*/
  __pyx_v_ptype = NULL;

  /* "src/mpi4py/MPI.src/Datatype.pyx":273
 *         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(24, 273, __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":274
 *         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(24, 274, __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":275
 *         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(24, 275, __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":277
 *         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(24, 277, __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":278
 *         #
 *         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(24, 278, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":281
 *             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":259
 *         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":286
 *     # -----------------------------
 * 
 *     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\nCreate a datatype for a subarray of a multidimensional array.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_37Create_subarray = {"Create_subarray", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sizes,&__pyx_mstate_global->__pyx_n_u_subsizes,&__pyx_mstate_global->__pyx_n_u_starts,&__pyx_mstate_global->__pyx_n_u_order,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 286, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(24, 286, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(24, 286, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 286, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 286, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create_subarray", 0) < (0)) __PYX_ERR(24, 286, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Create_subarray", 0, 3, 4, i); __PYX_ERR(24, 286, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(24, 286, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(24, 286, __pyx_L3_error)
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 286, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 286, __pyx_L3_error)
        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_PyLong_As_int(values[3]); if (unlikely((__pyx_v_order == (int)-1) && PyErr_Occurred())) __PYX_ERR(24, 291, __pyx_L3_error)
    } else {
      __pyx_v_order = __pyx_mstate_global->__pyx_k__7;
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_subarray", 0, 3, 4, __pyx_nargs); __PYX_ERR(24, 286, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":296
 *         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":297
 *         """
 *         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":298
 *         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":299
 *         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":300
 *         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(24, 300, __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":301
 *         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(24, 301, __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":302
 *         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(24, 302, __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":304
 *         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(24, 304, __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":305
 *         #
 *         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(24, 305, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":308
 *             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":286
 *     # -----------------------------
 * 
 *     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":313
 *     # --------------------------------------
 * 
 *     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\nCreate a datatype for a distributed array on Cartesian process grids.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_39Create_darray = {"Create_darray", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_size_2,&__pyx_mstate_global->__pyx_n_u_rank,&__pyx_mstate_global->__pyx_n_u_gsizes,&__pyx_mstate_global->__pyx_n_u_distribs,&__pyx_mstate_global->__pyx_n_u_dargs,&__pyx_mstate_global->__pyx_n_u_psizes,&__pyx_mstate_global->__pyx_n_u_order,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 313, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(24, 313, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(24, 313, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(24, 313, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(24, 313, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(24, 313, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 313, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 313, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create_darray", 0) < (0)) __PYX_ERR(24, 313, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 6; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Create_darray", 0, 6, 7, i); __PYX_ERR(24, 313, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(24, 313, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(24, 313, __pyx_L3_error)
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(24, 313, __pyx_L3_error)
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(24, 313, __pyx_L3_error)
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(24, 313, __pyx_L3_error)
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 313, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 313, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_size = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_size == (int)-1) && PyErr_Occurred())) __PYX_ERR(24, 315, __pyx_L3_error)
    __pyx_v_rank = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(24, 316, __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_PyLong_As_int(values[6]); if (unlikely((__pyx_v_order == (int)-1) && PyErr_Occurred())) __PYX_ERR(24, 321, __pyx_L3_error)
    } else {
      __pyx_v_order = __pyx_mstate_global->__pyx_k__8;
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_darray", 0, 6, 7, __pyx_nargs); __PYX_ERR(24, 313, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":326
 *         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":327
 *         """
 *         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":328
 *         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":329
 *         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(24, 329, __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":330
 *         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(24, 330, __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":331
 *         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(24, 331, __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":332
 *         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(24, 332, __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":334
 *         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(24, 334, __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":335
 *         #
 *         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(24, 335, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":339
 *             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":313
 *     # --------------------------------------
 * 
 *     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":344
 *     # -------------
 * 
 *     @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\nReturn a predefined pair datatype.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_41Get_value_index = {"Get_value_index", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_value,&__pyx_mstate_global->__pyx_n_u_index,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 344, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 344, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 344, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Get_value_index", 0) < (0)) __PYX_ERR(24, 344, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Get_value_index", 1, 2, 2, i); __PYX_ERR(24, 344, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 344, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 344, __pyx_L3_error)
    }
    __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(24, 344, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, 0, "value", 0))) __PYX_ERR(24, 347, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_index), __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, 0, "index", 0))) __PYX_ERR(24, 348, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":353
 *         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(24, 353, __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":354
 *         """
 *         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(24, 354, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":356
 *         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":344
 *     # -------------
 * 
 *     @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":361
 *     # ------------------------------------------------
 * 
 *     @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\nReturn a bounded integer datatype.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_43Create_f90_integer = {"Create_f90_integer", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_r,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 361, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 361, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create_f90_integer", 0) < (0)) __PYX_ERR(24, 361, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Create_f90_integer", 1, 1, 1, i); __PYX_ERR(24, 361, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 361, __pyx_L3_error)
    }
    __pyx_v_r = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_r == (int)-1) && PyErr_Occurred())) __PYX_ERR(24, 362, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_f90_integer", 1, 1, 1, __pyx_nargs); __PYX_ERR(24, 361, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":366
 *         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(24, 366, __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":367
 *         """
 *         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(24, 367, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":368
 *         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":361
 *     # ------------------------------------------------
 * 
 *     @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":370
 *         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\nReturn a bounded real datatype.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_45Create_f90_real = {"Create_f90_real", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_p,&__pyx_mstate_global->__pyx_n_u_r,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 370, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 370, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 370, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create_f90_real", 0) < (0)) __PYX_ERR(24, 370, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Create_f90_real", 1, 2, 2, i); __PYX_ERR(24, 370, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 370, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 370, __pyx_L3_error)
    }
    __pyx_v_p = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_p == (int)-1) && PyErr_Occurred())) __PYX_ERR(24, 371, __pyx_L3_error)
    __pyx_v_r = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_r == (int)-1) && PyErr_Occurred())) __PYX_ERR(24, 371, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_f90_real", 1, 2, 2, __pyx_nargs); __PYX_ERR(24, 370, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":375
 *         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(24, 375, __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":376
 *         """
 *         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(24, 376, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":377
 *         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":370
 *         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":379
 *         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\nReturn a bounded complex datatype.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_47Create_f90_complex = {"Create_f90_complex", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_p,&__pyx_mstate_global->__pyx_n_u_r,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 379, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 379, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 379, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create_f90_complex", 0) < (0)) __PYX_ERR(24, 379, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Create_f90_complex", 1, 2, 2, i); __PYX_ERR(24, 379, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 379, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 379, __pyx_L3_error)
    }
    __pyx_v_p = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_p == (int)-1) && PyErr_Occurred())) __PYX_ERR(24, 380, __pyx_L3_error)
    __pyx_v_r = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_r == (int)-1) && PyErr_Occurred())) __PYX_ERR(24, 380, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_f90_complex", 1, 2, 2, __pyx_nargs); __PYX_ERR(24, 379, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":384
 *         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(24, 384, __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":385
 *         """
 *         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(24, 385, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":386
 *         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":379
 *         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":388
 *         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\nFind a datatype matching a specified size in bytes.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_49Match_size = {"Match_size", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_typeclass,&__pyx_mstate_global->__pyx_n_u_size_2,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 388, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 388, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 388, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Match_size", 0) < (0)) __PYX_ERR(24, 388, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Match_size", 1, 2, 2, i); __PYX_ERR(24, 388, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 388, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 388, __pyx_L3_error)
    }
    __pyx_v_typeclass = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_typeclass == (int)-1) && PyErr_Occurred())) __PYX_ERR(24, 389, __pyx_L3_error)
    __pyx_v_size = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_size == (int)-1) && PyErr_Occurred())) __PYX_ERR(24, 389, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Match_size", 1, 2, 2, __pyx_nargs); __PYX_ERR(24, 388, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":393
 *         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(24, 393, __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":394
 *         """
 *         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(24, 394, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":395
 *         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":388
 *         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":400
 *     # ------------------------
 * 
 *     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\nCommit the datatype.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_51Commit = {"Commit", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Commit", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":404
 *         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(24, 404, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":405
 *         """
 *         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":400
 *     # ------------------------
 * 
 *     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":407
 *         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\nFree the datatype.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_53Free = {"Free", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Free", __pyx_kwds); 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) {
  MPI_Datatype __pyx_v_save;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Datatype __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("Free", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":411
 *         Free the datatype.
 *         """
 *         cdef MPI_Datatype save = self.ob_mpi             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 *         if constobj(self): self.ob_mpi = save
*/
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_save = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Datatype.pyx":412
 *         """
 *         cdef MPI_Datatype save = self.ob_mpi
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 *         if constobj(self): self.ob_mpi = save
 * 
*/
  __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(24, 412, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":413
 *         cdef MPI_Datatype save = self.ob_mpi
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 *         if constobj(self): self.ob_mpi = save             # <<<<<<<<<<<<<<
 * 
 *     # Datatype Resizing
*/
  __pyx_t_3 = (__pyx_fuse_0__pyx_f_6mpi4py_3MPI_constobj(__pyx_v_self) != 0);
  if (__pyx_t_3) {
    __pyx_v_self->ob_mpi = __pyx_v_save;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":407
 *         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_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":418
 *     # -----------------
 * 
 *     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\nCreate a datatype with a new lower bound and extent.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_55Create_resized = {"Create_resized", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_lb_2,&__pyx_mstate_global->__pyx_n_u_extent,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 418, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 418, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 418, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create_resized", 0) < (0)) __PYX_ERR(24, 418, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Create_resized", 1, 2, 2, i); __PYX_ERR(24, 418, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 418, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 418, __pyx_L3_error)
    }
    __pyx_v_lb = __Pyx_PyLong_As_MPI_Count(values[0]); if (unlikely((__pyx_v_lb == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(24, 418, __pyx_L3_error)
    __pyx_v_extent = __Pyx_PyLong_As_MPI_Count(values[1]); if (unlikely((__pyx_v_extent == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(24, 418, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_resized", 1, 2, 2, __pyx_nargs); __PYX_ERR(24, 418, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":422
 *         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(24, 422, __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":423
 *         """
 *         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(24, 423, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":425
 *         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":418
 *     # -----------------
 * 
 *     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":429
 *     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\nReturn the true lower bound and extent of a datatype.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_57Get_true_extent = {"Get_true_extent", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_true_extent", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":433
 *         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":434
 *         """
 *         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(24, 434, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":436
 *         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_PyLong_From_MPI_Count(__pyx_v_lb); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 436, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyLong_From_MPI_Count(__pyx_v_extent); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 436, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 436, __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) != (0)) __PYX_ERR(24, 436, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3) != (0)) __PYX_ERR(24, 436, __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":429
 *     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":440
 *     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__", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":441
 *         """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":442
 *         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(24, 442, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":444
 *             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_PyLong_From_MPI_Count(__pyx_v_extent); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 444, __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":440
 *     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":448
 *     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__", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":449
 *         """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":450
 *         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(24, 450, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":452
 *             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_PyLong_From_MPI_Count(__pyx_v_lb); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 452, __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":448
 *     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":456
 *     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__", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":457
 *         """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":458
 *         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(24, 458, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":460
 *             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_PyLong_From_MPI_Count((__pyx_v_lb + __pyx_v_extent)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 460, __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":456
 *     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":465
 *     # -------------------
 * 
 *     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\nReturn the number of input arguments used to create a datatype.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_59Get_envelope = {"Get_envelope", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_envelope", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":469
 *         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":470
 *         """
 *         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":471
 *         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(24, 471, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":473
 *         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_PyLong_From_MPI_Count(__pyx_v_ni); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 473, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyLong_From_MPI_Count(__pyx_v_na); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 473, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_From_MPI_Count(__pyx_v_nc); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 473, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyLong_From_MPI_Count(__pyx_v_nd); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 473, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_combiner); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 473, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = PyTuple_New(5); if (unlikely(!__pyx_t_7)) __PYX_ERR(24, 473, __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) != (0)) __PYX_ERR(24, 473, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_3) != (0)) __PYX_ERR(24, 473, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_4) != (0)) __PYX_ERR(24, 473, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_5);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_t_5) != (0)) __PYX_ERR(24, 473, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_6);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 4, __pyx_t_6) != (0)) __PYX_ERR(24, 473, __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":465
 *     # -------------------
 * 
 *     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":477
 *     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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":478
 *         """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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_envelope, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 478, __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":477
 *     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_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":480
 *             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\nReturn the input arguments used to create a datatype.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_61Get_contents = {"Get_contents", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_contents", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":485
 *         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":486
 *         """
 *         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":487
 *         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(24, 487, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":489
 *         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":490
 *             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":491
 *         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":492
 *         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":493
 *         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(24, 493, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused1 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":494
 *         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(24, 494, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused2 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":495
 *         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(24, 495, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused3 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":496
 *         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(24, 496, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused4 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":497
 *         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(24, 497, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":499
 *         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(24, 499, __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_PyLong_From_int((__pyx_v_i[__pyx_8genexpr3__pyx_v_k])); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 499, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(24, 499, __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":500
 *             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(24, 500, __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_PyLong_From_MPI_Aint((__pyx_v_a[__pyx_8genexpr4__pyx_v_k])); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 500, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(24, 500, __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":501
 *         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(24, 501, __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_PyLong_From_MPI_Count((__pyx_v_c[__pyx_8genexpr5__pyx_v_k])); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 501, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(24, 501, __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":502
 *         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(24, 502, __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(24, 502, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(24, 502, __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":503
 *         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(24, 503, __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) != (0)) __PYX_ERR(24, 503, __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) != (0)) __PYX_ERR(24, 503, __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) != (0)) __PYX_ERR(24, 503, __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) != (0)) __PYX_ERR(24, 503, __pyx_L1_error);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":480
 *             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":507
 *     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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":509
 *         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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_contents, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 509, __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":507
 *     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_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":511
 *             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\nConvenience method for decoding a datatype.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_63decode = {"decode", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("decode", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":515
 *         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(24, 515, __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":511
 *             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":519
 *     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;
  size_t __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":520
 *         """Combiner."""
 *         def __get__(self) -> int:
 *             cdef int combiner = self.Get_envelope()[-1]             # <<<<<<<<<<<<<<
 *             return combiner
 * 
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_envelope, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 520, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, -1L, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(24, 520, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_combiner = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Datatype.pyx":521
 *         def __get__(self) -> int:
 *             cdef int combiner = self.Get_envelope()[-1]
 *             return combiner             # <<<<<<<<<<<<<<
 * 
 *     property is_named:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_combiner); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 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/Datatype.pyx":519
 *     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_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":525
 *     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;
  size_t __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":526
 *         """Is a named datatype."""
 *         def __get__(self) -> bool:
 *             cdef int combiner = self.Get_envelope()[-1]             # <<<<<<<<<<<<<<
 *             return combiner == MPI_COMBINER_NAMED
 * 
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_envelope, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 526, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, -1L, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 526, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(24, 526, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_combiner = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Datatype.pyx":527
 *         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(24, 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":525
 *     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_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":531
 *     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;
  size_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":532
 *         """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":533
 *         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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_envelope, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 533, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, -1L, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_5 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(24, 533, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_combiner = __pyx_t_5;

  /* "src/mpi4py/MPI.src/Datatype.pyx":534
 *             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(24, 534, __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":535
 *             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(24, 535, __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":536
 *             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(24, 536, __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":537
 *                     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(24, 537, __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":538
 *                     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(24, 538, __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":531
 *     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_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":543
 *     # ---------------
 * 
 *     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\nPack into contiguous memory according to datatype.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_65Pack = {"Pack", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_inbuf,&__pyx_mstate_global->__pyx_n_u_outbuf,&__pyx_mstate_global->__pyx_n_u_position,&__pyx_mstate_global->__pyx_n_u_comm,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 543, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(24, 543, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(24, 543, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 543, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 543, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Pack", 0) < (0)) __PYX_ERR(24, 543, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 4; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Pack", 1, 4, 4, i); __PYX_ERR(24, 543, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 4)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 543, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 543, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(24, 543, __pyx_L3_error)
      values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(24, 543, __pyx_L3_error)
    }
    __pyx_v_inbuf = values[0];
    __pyx_v_outbuf = values[1];
    __pyx_v_position = __Pyx_PyLong_As_MPI_Count(values[2]); if (unlikely((__pyx_v_position == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(24, 547, __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(24, 543, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, 0, "comm", 0))) __PYX_ERR(24, 548, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":553
 *         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":554
 *         """
 *         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(24, 554, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":556
 *         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":557
 *         #
 *         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":558
 *         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(24, 558, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused1 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":559
 *         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(24, 559, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused2 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":560
 *         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":561
 *         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":563
 *         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(24, 563, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":567
 *             obptr, ocount, &position,
 *             comm.ob_mpi) )
 *         return position             # <<<<<<<<<<<<<<
 * 
 *     def Unpack(
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_MPI_Count(__pyx_v_position); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 567, __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":543
 *     # ---------------
 * 
 *     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":569
 *         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\nUnpack from contiguous memory according to datatype.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_67Unpack = {"Unpack", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_inbuf,&__pyx_mstate_global->__pyx_n_u_position,&__pyx_mstate_global->__pyx_n_u_outbuf,&__pyx_mstate_global->__pyx_n_u_comm,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 569, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(24, 569, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(24, 569, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 569, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 569, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Unpack", 0) < (0)) __PYX_ERR(24, 569, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 4; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Unpack", 1, 4, 4, i); __PYX_ERR(24, 569, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 4)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 569, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 569, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(24, 569, __pyx_L3_error)
      values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(24, 569, __pyx_L3_error)
    }
    __pyx_v_inbuf = values[0];
    __pyx_v_position = __Pyx_PyLong_As_MPI_Count(values[1]); if (unlikely((__pyx_v_position == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(24, 572, __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(24, 569, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, 0, "comm", 0))) __PYX_ERR(24, 574, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":579
 *         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":580
 *         """
 *         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(24, 580, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":582
 *         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":583
 *         #
 *         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":584
 *         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(24, 584, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused1 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":585
 *         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(24, 585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused2 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":586
 *         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":587
 *         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":589
 *         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(24, 589, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":593
 *             obptr, ocount, self.ob_mpi,
 *             comm.ob_mpi) )
 *         return position             # <<<<<<<<<<<<<<
 * 
 *     def Pack_size(
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_MPI_Count(__pyx_v_position); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 593, __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":569
 *         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":595
 *         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\nDetermine the amount of space needed to pack a message.\n\n.. note:: Returns an upper bound measured in bytes.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_69Pack_size = {"Pack_size", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_count,&__pyx_mstate_global->__pyx_n_u_comm,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 595, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 595, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 595, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Pack_size", 0) < (0)) __PYX_ERR(24, 595, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Pack_size", 1, 2, 2, i); __PYX_ERR(24, 595, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 595, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 595, __pyx_L3_error)
    }
    __pyx_v_count = __Pyx_PyLong_As_MPI_Count(values[0]); if (unlikely((__pyx_v_count == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(24, 597, __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(24, 595, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, 0, "comm", 0))) __PYX_ERR(24, 598, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":605
 *         .. 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":606
 *         """
 *         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(24, 606, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":609
 *             count, self.ob_mpi,
 *             comm.ob_mpi, &size) )
 *         return size             # <<<<<<<<<<<<<<
 * 
 *     # Canonical Pack and Unpack
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_MPI_Count(__pyx_v_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 609, __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":595
 *         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":614
 *     # -------------------------
 * 
 *     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\nPack into contiguous memory according to datatype.\n\nUses the portable data representation **external32**.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_71Pack_external = {"Pack_external", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_datarep,&__pyx_mstate_global->__pyx_n_u_inbuf,&__pyx_mstate_global->__pyx_n_u_outbuf,&__pyx_mstate_global->__pyx_n_u_position,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 614, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(24, 614, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(24, 614, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 614, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 614, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Pack_external", 0) < (0)) __PYX_ERR(24, 614, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 4; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Pack_external", 1, 4, 4, i); __PYX_ERR(24, 614, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 4)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 614, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 614, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(24, 614, __pyx_L3_error)
      values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(24, 614, __pyx_L3_error)
    }
    __pyx_v_datarep = values[0];
    __pyx_v_inbuf = values[1];
    __pyx_v_outbuf = values[2];
    __pyx_v_position = __Pyx_PyLong_As_MPI_Count(values[3]); if (unlikely((__pyx_v_position == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(24, 619, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Pack_external", 1, 4, 4, __pyx_nargs); __PYX_ERR(24, 614, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":626
 *         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":627
 *         """
 *         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(24, 627, __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":628
 *         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":629
 *         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(24, 629, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":631
 *         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":632
 *         #
 *         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":633
 *         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(24, 633, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_unused1 = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":634
 *         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(24, 634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_unused2 = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":635
 *         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":636
 *         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":638
 *         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(24, 638, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":642
 *             ibptr, icount, self.ob_mpi,
 *             obptr, ocount, &position) )
 *         return position             # <<<<<<<<<<<<<<
 * 
 *     def Unpack_external(
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_MPI_Count(__pyx_v_position); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 642, __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":614
 *     # -------------------------
 * 
 *     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":644
 *         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\nUnpack from contiguous memory according to datatype.\n\nUses the portable data representation **external32**.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_73Unpack_external = {"Unpack_external", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_datarep,&__pyx_mstate_global->__pyx_n_u_inbuf,&__pyx_mstate_global->__pyx_n_u_position,&__pyx_mstate_global->__pyx_n_u_outbuf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 644, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(24, 644, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(24, 644, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 644, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 644, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Unpack_external", 0) < (0)) __PYX_ERR(24, 644, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 4; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Unpack_external", 1, 4, 4, i); __PYX_ERR(24, 644, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 4)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 644, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 644, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(24, 644, __pyx_L3_error)
      values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(24, 644, __pyx_L3_error)
    }
    __pyx_v_datarep = values[0];
    __pyx_v_inbuf = values[1];
    __pyx_v_position = __Pyx_PyLong_As_MPI_Count(values[2]); if (unlikely((__pyx_v_position == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(24, 648, __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(24, 644, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":656
 *         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":657
 *         """
 *         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(24, 657, __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":658
 *         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":659
 *         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(24, 659, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":661
 *         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":662
 *         #
 *         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":663
 *         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(24, 663, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_unused1 = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":664
 *         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(24, 664, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_unused2 = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":665
 *         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":666
 *         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":668
 *         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(24, 668, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":672
 *             ibptr, icount, &position,
 *             obptr, ocount, self.ob_mpi) )
 *         return position             # <<<<<<<<<<<<<<
 * 
 *     def Pack_external_size(
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_MPI_Count(__pyx_v_position); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 672, __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":644
 *         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":674
 *         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\nDetermine the amount of space needed to pack a message.\n\nUses the portable data representation **external32**.\n\n.. note:: Returns an upper bound measured in bytes.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_75Pack_external_size = {"Pack_external_size", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_datarep,&__pyx_mstate_global->__pyx_n_u_count,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 674, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 674, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 674, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Pack_external_size", 0) < (0)) __PYX_ERR(24, 674, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Pack_external_size", 1, 2, 2, i); __PYX_ERR(24, 674, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 674, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 674, __pyx_L3_error)
    }
    __pyx_v_datarep = values[0];
    __pyx_v_count = __Pyx_PyLong_As_MPI_Count(values[1]); if (unlikely((__pyx_v_count == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(24, 677, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Pack_external_size", 1, 2, 2, __pyx_nargs); __PYX_ERR(24, 674, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":686
 *         .. 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":687
 *         """
 *         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":688
 *         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(24, 688, __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":689
 *         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(24, 689, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":691
 *         CHKERR( MPI_Pack_external_size_c(
 *             cdatarep, count, self.ob_mpi, &size) )
 *         return size             # <<<<<<<<<<<<<<
 * 
 *     # Attributes
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_MPI_Count(__pyx_v_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 691, __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":674
 *         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":696
 *     # ----------
 * 
 *     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\nRetrieve attribute value by key.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_77Get_attr = {"Get_attr", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_keyval,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 696, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 696, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Get_attr", 0) < (0)) __PYX_ERR(24, 696, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Get_attr", 1, 1, 1, i); __PYX_ERR(24, 696, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 696, __pyx_L3_error)
    }
    __pyx_v_keyval = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) __PYX_ERR(24, 696, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_attr", 1, 1, 1, __pyx_nargs); __PYX_ERR(24, 696, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":700
 *         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":701
 *         """
 *         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":702
 *         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(24, 702, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":703
 *         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":704
 *         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_mstate_global->__pyx_int_0);
    __pyx_r = __pyx_mstate_global->__pyx_int_0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":706
 *         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(24, 706, __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":696
 *     # ----------
 * 
 *     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":708
 *         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\nStore attribute value associated with a key.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_79Set_attr = {"Set_attr", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_keyval,&__pyx_mstate_global->__pyx_n_u_attrval,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 708, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 708, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 708, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Set_attr", 0) < (0)) __PYX_ERR(24, 708, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Set_attr", 1, 2, 2, i); __PYX_ERR(24, 708, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 708, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 708, __pyx_L3_error)
    }
    __pyx_v_keyval = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) __PYX_ERR(24, 708, __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(24, 708, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":712
 *         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(24, 712, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":708
 *         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":714
 *         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\nDelete attribute value associated with a key.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_81Delete_attr = {"Delete_attr", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_keyval,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 714, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 714, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Delete_attr", 0) < (0)) __PYX_ERR(24, 714, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Delete_attr", 1, 1, 1, i); __PYX_ERR(24, 714, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 714, __pyx_L3_error)
    }
    __pyx_v_keyval = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) __PYX_ERR(24, 714, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Delete_attr", 1, 1, 1, __pyx_nargs); __PYX_ERR(24, 714, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":718
 *         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(24, 718, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":714
 *         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":720
 *         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\nCreate a new attribute key for datatypes.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_83Create_keyval = {"Create_keyval", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_copy_fn,&__pyx_mstate_global->__pyx_n_u_delete_fn,&__pyx_mstate_global->__pyx_n_u_nopython,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 720, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(24, 720, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 720, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 720, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create_keyval", 0) < (0)) __PYX_ERR(24, 720, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Datatype.pyx":723
 *     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,
*/
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "src/mpi4py/MPI.src/Datatype.pyx":724
 *         cls,
 *         copy_fn: Callable[[Datatype, int, Any], Any] | None = None,
 *         delete_fn: Callable[[Datatype, int, Any], None] | None = None,             # <<<<<<<<<<<<<<
 *         nopython: bool = False,
 *     ) -> int:
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "src/mpi4py/MPI.src/Datatype.pyx":725
 *         copy_fn: Callable[[Datatype, int, Any], Any] | None = None,
 *         delete_fn: Callable[[Datatype, int, Any], None] | None = None,
 *         nopython: bool = False,             # <<<<<<<<<<<<<<
 *     ) -> int:
 *         """
*/
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_False));
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(24, 720, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 720, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 720, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }

      /* "src/mpi4py/MPI.src/Datatype.pyx":723
 *     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,
*/
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "src/mpi4py/MPI.src/Datatype.pyx":724
 *         cls,
 *         copy_fn: Callable[[Datatype, int, Any], Any] | None = None,
 *         delete_fn: Callable[[Datatype, int, Any], None] | None = None,             # <<<<<<<<<<<<<<
 *         nopython: bool = False,
 *     ) -> int:
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "src/mpi4py/MPI.src/Datatype.pyx":725
 *         copy_fn: Callable[[Datatype, int, Any], Any] | None = None,
 *         delete_fn: Callable[[Datatype, int, Any], None] | None = None,
 *         nopython: bool = False,             # <<<<<<<<<<<<<<
 *     ) -> int:
 *         """
*/
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_False));
    }
    __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(24, 720, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":720
 *         PyMPI_attr_del(self.ob_mpi, keyval)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_keyval(
 *         cls,
*/

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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;
  size_t __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_keyval", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":730
 *         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":731
 *         """
 *         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":732
 *         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":733
 *         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_2 = NULL;
  __pyx_t_3 = 1;
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_2, __pyx_v_copy_fn, __pyx_v_delete_fn, __pyx_v_nopython};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_keyval, __pyx_callargs+__pyx_t_3, (4-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 733, __pyx_L1_error)
    __Pyx_GOTREF((PyObject *)__pyx_t_1);
  }
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":734
 *         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_4 = __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_4 == ((int)-1))) __PYX_ERR(24, 734, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":735
 *         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_4 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_set(MPI_DATATYPE_NULL, __pyx_v_keyval, __pyx_v_state); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(24, 735, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":736
 *         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_1 = __Pyx_PyLong_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 736, __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":720
 *         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":738
 *         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\nFree an attribute key for datatypes.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_85Free_keyval = {"Free_keyval", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_keyval,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 738, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 738, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Free_keyval", 0) < (0)) __PYX_ERR(24, 738, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Free_keyval", 1, 1, 1, i); __PYX_ERR(24, 738, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 738, __pyx_L3_error)
    }
    __pyx_v_keyval = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) __PYX_ERR(24, 739, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Free_keyval", 1, 1, 1, __pyx_nargs); __PYX_ERR(24, 738, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":743
 *         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":744
 *         """
 *         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(24, 744, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":745
 *         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(24, 745, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":746
 *         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_PyLong_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 746, __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":738
 *         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":751
 *     # --------------
 * 
 *     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\nGet the print name for this datatype.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_87Get_name = {"Get_name", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_name", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":756
 *         """
 *         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":757
 *         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(24, 757, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":758
 *         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(24, 758, __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":751
 *     # --------------
 * 
 *     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":760
 *         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\nSet the print name for this datatype.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_89Set_name = {"Set_name", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_name_2,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 760, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 760, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Set_name", 0) < (0)) __PYX_ERR(24, 760, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Set_name", 1, 1, 1, i); __PYX_ERR(24, 760, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 760, __pyx_L3_error)
    }
    __pyx_v_name = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_name", 1, 1, 1, __pyx_nargs); __PYX_ERR(24, 760, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":764
 *         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":765
 *         """
 *         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(24, 765, __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":766
 *         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(24, 766, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":760
 *         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":770
 *     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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":771
 *         """Print name."""
 *         def __get__(self) -> str:
 *             return self.Get_name()             # <<<<<<<<<<<<<<
 * 
 *         def __set__(self, value: str):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_name, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 771, __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":770
 *     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_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":773
 *             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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":774
 * 
 *         def __set__(self, value: str):
 *             self.Set_name(value)             # <<<<<<<<<<<<<<
 * 
 *     # Integer Handle
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_value};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Set_name, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 774, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":773
 *             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_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":779
 *     # --------------
 * 
 *     def toint(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate object to integer handle.
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_91toint(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_90toint, "toint(self) -> int\n\nTranslate object to integer handle.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_91toint = {"toint", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_91toint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_90toint};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_91toint(PyObject *__pyx_v_self, 
#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("toint (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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("toint", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("toint", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_90toint(((struct PyMPIDatatypeObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_90toint(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("toint", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":783
 *         Translate object to integer handle.
 *         """
 *         return MPI_Type_toint(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_int(MPI_Type_toint(__pyx_v_self->ob_mpi)); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 783, __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":779
 *     # --------------
 * 
 *     def toint(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate object to integer handle.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.toint", __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":785
 *         return MPI_Type_toint(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromint(cls, arg: int, /) -> Datatype:
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_93fromint(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_92fromint, "fromint(cls, arg: int, /) -> Datatype\n\nTranslate integer handle to object.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_93fromint = {"fromint", (PyCFunction)__pyx_pw_6mpi4py_3MPI_8Datatype_93fromint, METH_O, __pyx_doc_6mpi4py_3MPI_8Datatype_92fromint};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_93fromint(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fromint (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_92fromint(((PyTypeObject*)__pyx_v_cls), ((PyObject *)__pyx_v_arg));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_92fromint(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, 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("fromint", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":790
 *         Translate integer handle to object.
 *         """
 *         return fromhandle(MPI_Type_fromint(arg))             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_As_int(__pyx_v_arg); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(24, 790, __pyx_L1_error)
  __pyx_t_2 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Type_fromint(__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 790, __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":785
 *         return MPI_Type_toint(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromint(cls, arg: int, /) -> Datatype:
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.fromint", __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":795
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_95py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_94py2f, "py2f(self) -> int\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_95py2f = {"py2f", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_95py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_94py2f};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_95py2f(PyObject *__pyx_v_self, 
#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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("py2f", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_94py2f(((struct PyMPIDatatypeObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_94py2f(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", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":798
 *         """
 *         """
 *         return MPI_Type_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_MPI_Fint(MPI_Type_c2f(__pyx_v_self->ob_mpi)); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 798, __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":795
 *     # --------------
 * 
 *     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":800
 *         return MPI_Type_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Datatype:
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_97f2py(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_96f2py, "f2py(cls, arg: int) -> Datatype\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_97f2py = {"f2py", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_97f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_96f2py};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_97f2py(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_arg,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 800, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 800, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "f2py", 0) < (0)) __PYX_ERR(24, 800, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, i); __PYX_ERR(24, 800, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 800, __pyx_L3_error)
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, __pyx_nargs); __PYX_ERR(24, 800, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_96f2py(((PyTypeObject*)__pyx_v_cls), __pyx_v_arg);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_96f2py(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", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":804
 *         """
 *         """
 *         return fromhandle(MPI_Type_f2c(arg))             # <<<<<<<<<<<<<<
 * 
 *     # Python/NumPy interoperability
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_As_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_1 == ((MPI_Fint)-1)) && PyErr_Occurred())) __PYX_ERR(24, 804, __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(24, 804, __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":800
 *         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":809
 *     # -----------------------------
 * 
 *     def tocode(self) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Get character code or type string from predefined MPI datatype.
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_99tocode(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_98tocode, "tocode(self) -> str\n\nGet character code or type string from predefined MPI datatype.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_99tocode = {"tocode", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_99tocode, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_98tocode};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_99tocode(PyObject *__pyx_v_self, 
#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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("tocode", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_98tocode(((struct PyMPIDatatypeObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_98tocode(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;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("tocode", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":813
 *         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":814
 *         """
 *         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(24, 814, __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":815
 *         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_3 = NULL;
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_cannot_map_to_character_code_or};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 815, __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(24, 815, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":809
 *     # -----------------------------
 * 
 *     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_XDECREF(__pyx_t_3);
  __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":817
 *         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_101fromcode(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_100fromcode, "fromcode(cls, code: str) -> Datatype\n\nGet predefined MPI datatype from character code or type string.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_101fromcode = {"fromcode", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_101fromcode, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_100fromcode};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_101fromcode(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_code,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 817, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 817, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "fromcode", 0) < (0)) __PYX_ERR(24, 817, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("fromcode", 1, 1, 1, i); __PYX_ERR(24, 817, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 817, __pyx_L3_error)
    }
    __pyx_v_code = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fromcode", 1, 1, 1, __pyx_nargs); __PYX_ERR(24, 817, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_100fromcode(((PyTypeObject*)__pyx_v_cls), __pyx_v_code);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_100fromcode(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;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11[3];
  PyObject *__pyx_t_12 = NULL;
  size_t __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fromcode", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":822
 *         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":823
 *         """
 *         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(24, 823, __pyx_L3_error)
      }
      __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_6mpi4py_3MPI_TypeDict, __pyx_v_code); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 823, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (!(likely(__Pyx_TypeTest(__pyx_t_4, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype)))) __PYX_ERR(24, 823, __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":822
 *         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":824
 *         try:
 *             return <Datatype?> TypeDict[code]
 *         except KeyError:             # <<<<<<<<<<<<<<
 *             raise ValueError(f"cannot map code {code!r} to MPI datatype")
 * 
*/
    __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_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(24, 824, __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":825
 *             return <Datatype?> TypeDict[code]
 *         except KeyError:
 *             raise ValueError(f"cannot map code {code!r} to MPI datatype")             # <<<<<<<<<<<<<<
 * 
 *     property typestr:
*/
      __pyx_t_9 = NULL;
      __pyx_t_10 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_code), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 825, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11[0] = __pyx_mstate_global->__pyx_kp_u_cannot_map_code;
      __pyx_t_11[1] = __pyx_t_10;
      __pyx_t_11[2] = __pyx_mstate_global->__pyx_kp_u_to_MPI_datatype;
      __pyx_t_12 = __Pyx_PyUnicode_Join(__pyx_t_11, 3, 16 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_10), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_10));
      if (unlikely(!__pyx_t_12)) __PYX_ERR(24, 825, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_13 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_12};
        __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (__pyx_t_13*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        if (unlikely(!__pyx_t_8)) __PYX_ERR(24, 825, __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(24, 825, __pyx_L5_except_error)
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/Datatype.pyx":822
 *         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":817
 *         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_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_12);
  __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":829
 *     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__", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":830
 *         """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_mstate_global->__pyx_kp_u_);
    __pyx_r = __pyx_mstate_global->__pyx_kp_u_;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":831
 *         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":832
 *             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(24, 832, __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":833
 *             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_PyUnicode_From_MPI_Count(__pyx_f_6mpi4py_3MPI_mpiextent(__pyx_v_self->ob_mpi), 0, ' ', 'd'); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 833, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_n_u_V, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 833, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __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/Datatype.pyx":829
 *     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":837
 *     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__", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":838
 *         """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_mstate_global->__pyx_kp_u_);
    __pyx_r = __pyx_mstate_global->__pyx_kp_u_;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":839
 *         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":840
 *             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(24, 840, __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":841
 *             cdef const char *s = DatatypeChar(self.ob_mpi)
 *             if s != NULL: return pystr(s)
 *             return "V"             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_V);
  __pyx_r = __pyx_mstate_global->__pyx_n_u_V;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":837
 *     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":847
 * # -----------------
 * 
 * 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\nGet the address of a location in memory.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_27Get_address = {"Get_address", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_location,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 847, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 847, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Get_address", 0) < (0)) __PYX_ERR(24, 847, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Get_address", 1, 1, 1, i); __PYX_ERR(24, 847, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 847, __pyx_L3_error)
    }
    __pyx_v_location = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_address", 1, 1, 1, __pyx_nargs); __PYX_ERR(24, 847, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":851
 *     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":852
 *     """
 *     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(24, 852, __pyx_L1_error)
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/Datatype.pyx":853
 *     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(24, 853, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Datatype.pyx":852
 *     """
 *     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":854
 *     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":855
 *         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(24, 855, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":856
 *     cdef MPI_Aint address = 0
 *     CHKERR( MPI_Get_address(baseptr, &address) )
 *     return address             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyLong_From_MPI_Aint(__pyx_v_address); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 856, __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":847
 * # -----------------
 * 
 * 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":859
 * 
 * 
 * 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\nReturn the sum of base address and displacement.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_29Aint_add = {"Aint_add", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_base,&__pyx_mstate_global->__pyx_n_u_disp,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 859, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 859, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 859, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Aint_add", 0) < (0)) __PYX_ERR(24, 859, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Aint_add", 1, 2, 2, i); __PYX_ERR(24, 859, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 859, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 859, __pyx_L3_error)
    }
    __pyx_v_base = __Pyx_PyLong_As_MPI_Aint(values[0]); if (unlikely((__pyx_v_base == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(24, 859, __pyx_L3_error)
    __pyx_v_disp = __Pyx_PyLong_As_MPI_Aint(values[1]); if (unlikely((__pyx_v_disp == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(24, 859, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Aint_add", 1, 2, 2, __pyx_nargs); __PYX_ERR(24, 859, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":863
 *     Return the sum of base address and displacement.
 *     """
 *     return MPI_Aint_add(base, disp)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_MPI_Aint(MPI_Aint_add(__pyx_v_base, __pyx_v_disp)); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 863, __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":859
 * 
 * 
 * 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":866
 * 
 * 
 * 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\nReturn the difference between absolute addresses.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_31Aint_diff = {"Aint_diff", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_addr1,&__pyx_mstate_global->__pyx_n_u_addr2,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(24, 866, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 866, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 866, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Aint_diff", 0) < (0)) __PYX_ERR(24, 866, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Aint_diff", 1, 2, 2, i); __PYX_ERR(24, 866, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(24, 866, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(24, 866, __pyx_L3_error)
    }
    __pyx_v_addr1 = __Pyx_PyLong_As_MPI_Aint(values[0]); if (unlikely((__pyx_v_addr1 == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(24, 866, __pyx_L3_error)
    __pyx_v_addr2 = __Pyx_PyLong_As_MPI_Aint(values[1]); if (unlikely((__pyx_v_addr2 == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(24, 866, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Aint_diff", 1, 2, 2, __pyx_nargs); __PYX_ERR(24, 866, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Datatype.pyx":870
 *     Return the difference between absolute addresses.
 *     """
 *     return MPI_Aint_diff(addr1, addr2)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_MPI_Aint(MPI_Aint_diff(__pyx_v_addr1, __pyx_v_addr2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 870, __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":866
 * 
 * 
 * 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_SIZE
  __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 ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(25, 6, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(25, 6, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < (0)) __PYX_ERR(25, 6, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(25, 6, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __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(25, 6, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(25, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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(25, 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(25, 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(25, 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;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7[5];
  PyObject *__pyx_t_8 = NULL;
  size_t __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__richcmp__", 0);

  /* "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_mstate_global->__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(25, 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(25, 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_mstate_global->__pyx_n_u_module); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_3))) __PYX_ERR(25, 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_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_3))) __PYX_ERR(25, 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_4 = NULL;
  __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_mod); if (unlikely(!__pyx_t_5)) __PYX_ERR(25, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyUnicode_Unicode(__pyx_v_cls); if (unlikely(!__pyx_t_6)) __PYX_ERR(25, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7[0] = __pyx_mstate_global->__pyx_kp_u_unorderable_type;
  __pyx_t_7[1] = __pyx_t_5;
  __pyx_t_7[2] = __pyx_mstate_global->__pyx_kp_u__2;
  __pyx_t_7[3] = __pyx_t_6;
  __pyx_t_7[4] = __pyx_mstate_global->__pyx_kp_u__5;
  __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_7, 5, 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 1 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6));
  if (unlikely(!__pyx_t_8)) __PYX_ERR(25, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_9 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_8};
    __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 22, __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(25, 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_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __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(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce__", __pyx_kwds); 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;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce__", 0);

  /* "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(25, 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)))) != (0)) __PYX_ERR(25, 25, __pyx_L1_error);
  __pyx_t_3 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_getstate, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 25, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 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__) != (0)) __PYX_ERR(25, 25, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1) != (0)) __PYX_ERR(25, 25, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2) != (0)) __PYX_ERR(25, 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_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(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__getstate__", __pyx_kwds); 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;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  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;
  __Pyx_RefNannySetupContext("__getstate__", 0);

  /* "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(25, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_source, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 29, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_source, __pyx_t_2) < (0)) __PYX_ERR(25, 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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_tag, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 30, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_tag, __pyx_t_2) < (0)) __PYX_ERR(25, 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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_error, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 31, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_error, __pyx_t_2) < (0)) __PYX_ERR(25, 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_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/Status.pyx":34
 *         }
 *         try:
 *             state['count'] = self.Get_elements(__BYTE__)             # <<<<<<<<<<<<<<
 *         except NotImplementedError:  # ~> legacy
 *             pass                     # ~> legacy
*/
      __pyx_t_2 = ((PyObject *)__pyx_v_self);
      __Pyx_INCREF(__pyx_t_2);
      __pyx_t_4 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)__pyx_v_6mpi4py_3MPI___BYTE__)};
        __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_elements, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 34, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      if (unlikely((PyDict_SetItem(__pyx_v_state, __pyx_mstate_global->__pyx_n_u_count, __pyx_t_1) < 0))) __PYX_ERR(25, 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_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_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;

    /* "src/mpi4py/MPI.src/Status.pyx":35
 *         try:
 *             state['count'] = self.Get_elements(__BYTE__)
 *         except NotImplementedError:  # ~> legacy             # <<<<<<<<<<<<<<
 *             pass                     # ~> legacy
 *         try:
*/
    __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_NotImplementedError))));
    if (__pyx_t_8) {
      __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_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_L4_exception_handled:;
    __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);
    __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_7, &__pyx_t_6, &__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_7);
    __Pyx_XGOTREF(__pyx_t_6);
    __Pyx_XGOTREF(__pyx_t_5);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/Status.pyx":38
 *             pass                     # ~> legacy
 *         try:
 *             state['cancelled'] = self.Is_cancelled()             # <<<<<<<<<<<<<<
 *         except NotImplementedError:  # ~> legacy
 *             pass                     # ~> legacy
*/
      __pyx_t_2 = ((PyObject *)__pyx_v_self);
      __Pyx_INCREF(__pyx_t_2);
      __pyx_t_4 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
        __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Is_cancelled, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 38, __pyx_L11_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      if (unlikely((PyDict_SetItem(__pyx_v_state, __pyx_mstate_global->__pyx_n_u_cancelled, __pyx_t_1) < 0))) __PYX_ERR(25, 38, __pyx_L11_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_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L16_try_end;
    __pyx_L11_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/Status.pyx":39
 *         try:
 *             state['cancelled'] = self.Is_cancelled()
 *         except NotImplementedError:  # ~> legacy             # <<<<<<<<<<<<<<
 *             pass                     # ~> legacy
 *         return state
*/
    __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_NotImplementedError))));
    if (__pyx_t_8) {
      __Pyx_ErrRestore(0,0,0);
      goto __pyx_L12_exception_handled;
    }
    goto __pyx_L13_except_error;

    /* "src/mpi4py/MPI.src/Status.pyx":37
 *         except NotImplementedError:  # ~> legacy
 *             pass                     # ~> legacy
 *         try:             # <<<<<<<<<<<<<<
 *             state['cancelled'] = self.Is_cancelled()
 *         except NotImplementedError:  # ~> legacy
*/
    __pyx_L13_except_error:;
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_6, __pyx_t_5);
    goto __pyx_L1_error;
    __pyx_L12_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_6, __pyx_t_5);
    __pyx_L16_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_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(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(25, 43, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(25, 43, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate__", 0) < (0)) __PYX_ERR(25, 43, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate__", 1, 1, 1, i); __PYX_ERR(25, 43, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(25, 43, __pyx_L3_error)
    }
    __pyx_v_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate__", 1, 1, 1, __pyx_nargs); __PYX_ERR(25, 43, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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;
  size_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate__", 0);

  /* "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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_state, __pyx_mstate_global->__pyx_n_u_source); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Set_source, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 44, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __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_3 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_Dict_GetItem(__pyx_v_state, __pyx_mstate_global->__pyx_n_u_tag); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_2};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Set_tag, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 45, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_state, __pyx_mstate_global->__pyx_n_u_error); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Set_error, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 46, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __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_5 = (__Pyx_PySequence_ContainsTF(__pyx_mstate_global->__pyx_n_u_count, __pyx_v_state, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(25, 47, __pyx_L1_error)
  if (__pyx_t_5) {

    /* "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_3 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyObject_Dict_GetItem(__pyx_v_state, __pyx_mstate_global->__pyx_n_u_count); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 48, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_3, ((PyObject *)__pyx_v_6mpi4py_3MPI___BYTE__), __pyx_t_2};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Set_elements, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 48, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __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_5 = (__Pyx_PySequence_ContainsTF(__pyx_mstate_global->__pyx_n_u_cancelled, __pyx_v_state, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(25, 49, __pyx_L1_error)
  if (__pyx_t_5) {

    /* "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 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_state, __pyx_mstate_global->__pyx_n_u_cancelled); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 50, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_3};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Set_cancelled, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 50, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __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_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\nGet message source.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Status_11Get_source = {"Get_source", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_source", __pyx_kwds); 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", 0);

  /* "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(25, 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_PyLong_From_int(__pyx_v_source); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 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\nSet message source.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Status_13Set_source = {"Set_source", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_source,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(25, 60, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(25, 60, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Set_source", 0) < (0)) __PYX_ERR(25, 60, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Set_source", 1, 1, 1, i); __PYX_ERR(25, 60, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(25, 60, __pyx_L3_error)
    }
    __pyx_v_source = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 60, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_source", 1, 1, 1, __pyx_nargs); __PYX_ERR(25, 60, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(25, 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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_source, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 69, __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":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_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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "src/mpi4py/MPI.src/Status.pyx":72
 * 
 *         def __set__(self, value: int):
 *             self.Set_source(value)             # <<<<<<<<<<<<<<
 * 
 *     def Get_tag(self) -> int:
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_value};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Set_source, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 72, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __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_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\nGet message tag.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Status_15Get_tag = {"Get_tag", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_tag", __pyx_kwds); 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", 0);

  /* "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(25, 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_PyLong_From_int(__pyx_v_tag); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 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\nSet message tag.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Status_17Set_tag = {"Set_tag", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_tag,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(25, 82, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(25, 82, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Set_tag", 0) < (0)) __PYX_ERR(25, 82, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Set_tag", 1, 1, 1, i); __PYX_ERR(25, 82, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(25, 82, __pyx_L3_error)
    }
    __pyx_v_tag = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 82, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_tag", 1, 1, 1, __pyx_nargs); __PYX_ERR(25, 82, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(25, 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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_tag, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 91, __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":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_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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "src/mpi4py/MPI.src/Status.pyx":94
 * 
 *         def __set__(self, value: int):
 *             self.Set_tag(value)             # <<<<<<<<<<<<<<
 * 
 *     def Get_error(self) -> int:
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_value};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Set_tag, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 94, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __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_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\nGet message error.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Status_19Get_error = {"Get_error", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_error", __pyx_kwds); 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", 0);

  /* "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(25, 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_PyLong_From_int(__pyx_v_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 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\nSet message error.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Status_21Set_error = {"Set_error", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_error,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(25, 104, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(25, 104, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Set_error", 0) < (0)) __PYX_ERR(25, 104, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Set_error", 1, 1, 1, i); __PYX_ERR(25, 104, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(25, 104, __pyx_L3_error)
    }
    __pyx_v_error = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_error == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 104, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_error", 1, 1, 1, __pyx_nargs); __PYX_ERR(25, 104, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(25, 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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_error, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 113, __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":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_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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_value};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Set_error, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 116, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __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_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\nGet the number of *top level* elements.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Status_23Get_count = {"Get_count", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_datatype,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(25, 118, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(25, 118, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Get_count", 0) < (0)) __PYX_ERR(25, 118, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__9);
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(25, 118, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__9);
    }
    __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(25, 118, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, 0, "datatype", 0))) __PYX_ERR(25, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(25, 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_PyLong_From_MPI_Count(__pyx_v_count); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)__pyx_v_6mpi4py_3MPI___BYTE__)};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_count, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 130, __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":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_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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_2, ((PyObject *)__pyx_v_6mpi4py_3MPI___BYTE__), __pyx_v_value};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Set_elements, __pyx_callargs+__pyx_t_3, (3-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 133, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __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_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\nGet the number of basic elements in a datatype.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Status_25Get_elements = {"Get_elements", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_datatype,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(25, 135, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(25, 135, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Get_elements", 0) < (0)) __PYX_ERR(25, 135, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Get_elements", 1, 1, 1, i); __PYX_ERR(25, 135, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(25, 135, __pyx_L3_error)
    }
    __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(25, 135, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, 0, "datatype", 0))) __PYX_ERR(25, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(25, 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_PyLong_From_MPI_Count(__pyx_v_elements); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 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\nSet 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.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Status_27Set_elements = {"Set_elements", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_datatype,&__pyx_mstate_global->__pyx_n_u_count,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(25, 144, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(25, 144, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(25, 144, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Set_elements", 0) < (0)) __PYX_ERR(25, 144, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Set_elements", 1, 2, 2, i); __PYX_ERR(25, 144, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(25, 144, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(25, 144, __pyx_L3_error)
    }
    __pyx_v_datatype = ((struct PyMPIDatatypeObject *)values[0]);
    __pyx_v_count = __Pyx_PyLong_As_MPI_Count(values[1]); if (unlikely((__pyx_v_count == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(25, 147, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_elements", 1, 2, 2, __pyx_nargs); __PYX_ERR(25, 144, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, 0, "datatype", 0))) __PYX_ERR(25, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(25, 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\nTest to see if a request was cancelled.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Status_29Is_cancelled = {"Is_cancelled", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Is_cancelled", __pyx_kwds); 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", 0);

  /* "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(25, 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(25, 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\nSet 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.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Status_31Set_cancelled = {"Set_cancelled", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_flag,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(25, 166, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(25, 166, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Set_cancelled", 0) < (0)) __PYX_ERR(25, 166, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Set_cancelled", 1, 1, 1, i); __PYX_ERR(25, 166, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(25, 166, __pyx_L3_error)
    }
    __pyx_v_flag = __Pyx_PyObject_IsTrue(values[0]); if (unlikely((__pyx_v_flag == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 166, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_cancelled", 1, 1, 1, __pyx_nargs); __PYX_ERR(25, 166, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(25, 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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Is_cancelled, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 178, __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":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_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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "src/mpi4py/MPI.src/Status.pyx":181
 * 
 *         def __set__(self, value: bool):
 *             self.Set_cancelled(value)             # <<<<<<<<<<<<<<
 * 
 *     # Memory
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_value};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Set_cancelled, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 181, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __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_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 tomemory(self) -> memoryview:             # <<<<<<<<<<<<<<
 *         """
 *         Return status memory view.
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_33tomemory(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_32tomemory, "tomemory(self) -> memoryview\n\nReturn status memory view.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Status_33tomemory = {"tomemory", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_33tomemory, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_32tomemory};
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_33tomemory(PyObject *__pyx_v_self, 
#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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("tomemory", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Status_32tomemory(((struct PyMPIStatusObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_32tomemory(struct PyMPIStatusObject *__pyx_v_self) {
  struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_buf = 0;
  void *__pyx_v_base;
  Py_ssize_t __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;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("tomemory", 0);

  /* "src/mpi4py/MPI.src/Status.pyx":190
 *         Return status memory view.
 *         """
 *         cdef buffer buf = newbuffer()             # <<<<<<<<<<<<<<
 *         cdef void *base = <void*> &self.ob_mpi
 *         cdef Py_ssize_t size = <Py_ssize_t> sizeof(MPI_Status)
*/
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_newbuffer()); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 190, __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/Status.pyx":191
 *         """
 *         cdef buffer buf = newbuffer()
 *         cdef void *base = <void*> &self.ob_mpi             # <<<<<<<<<<<<<<
 *         cdef Py_ssize_t size = <Py_ssize_t> sizeof(MPI_Status)
 *         PyBuffer_FillInfo(&buf.view, self, base, size, 0, PyBUF_SIMPLE)
*/
  __pyx_v_base = ((void *)(&__pyx_v_self->ob_mpi));

  /* "src/mpi4py/MPI.src/Status.pyx":192
 *         cdef buffer buf = newbuffer()
 *         cdef void *base = <void*> &self.ob_mpi
 *         cdef Py_ssize_t size = <Py_ssize_t> sizeof(MPI_Status)             # <<<<<<<<<<<<<<
 *         PyBuffer_FillInfo(&buf.view, self, base, size, 0, PyBUF_SIMPLE)
 *         return PyMemoryView_FromObject(buf).cast('i')
*/
  __pyx_v_size = ((Py_ssize_t)(sizeof(MPI_Status)));

  /* "src/mpi4py/MPI.src/Status.pyx":193
 *         cdef void *base = <void*> &self.ob_mpi
 *         cdef Py_ssize_t size = <Py_ssize_t> sizeof(MPI_Status)
 *         PyBuffer_FillInfo(&buf.view, self, base, size, 0, PyBUF_SIMPLE)             # <<<<<<<<<<<<<<
 *         return PyMemoryView_FromObject(buf).cast('i')
 * 
*/
  __pyx_t_2 = PyBuffer_FillInfo((&__pyx_v_buf->view), ((PyObject *)__pyx_v_self), __pyx_v_base, __pyx_v_size, 0, PyBUF_SIMPLE); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(25, 193, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":194
 *         cdef Py_ssize_t size = <Py_ssize_t> sizeof(MPI_Status)
 *         PyBuffer_FillInfo(&buf.view, self, base, size, 0, PyBUF_SIMPLE)
 *         return PyMemoryView_FromObject(buf).cast('i')             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = PyMemoryView_FromObject(((PyObject *)__pyx_v_buf)); if (unlikely(!__pyx_t_4)) __PYX_ERR(25, 194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __pyx_t_4;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_n_u_i};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_cast, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 194, __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":186
 *     # ------
 * 
 *     def tomemory(self) -> memoryview:             # <<<<<<<<<<<<<<
 *         """
 *         Return status memory view.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Status.tomemory", __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/Status.pyx":199
 *     # --------------
 * 
 *     def py2f(self) -> list[int]:             # <<<<<<<<<<<<<<
 *         """
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_35py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_34py2f, "py2f(self) -> list[int]\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Status_35py2f = {"py2f", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_35py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_34py2f};
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_35py2f(PyObject *__pyx_v_self, 
#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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("py2f", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Status_34py2f(((struct PyMPIStatusObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_34py2f(struct PyMPIStatusObject *__pyx_v_self) {
  MPI_Fint __pyx_v_f_status[16];
  MPI_Status *__pyx_v_c_status;
  Py_ssize_t __pyx_v_size;
  Py_ssize_t __pyx_8genexpr7__pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  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", 0);

  /* "src/mpi4py/MPI.src/Status.pyx":203
 *         """
 *         cdef MPI_Fint f_status[16]
 *         cdef MPI_Status *c_status = &self.ob_mpi             # <<<<<<<<<<<<<<
 *         cdef Py_ssize_t size = MPI_F_STATUS_SIZE
 *         CHKERR( MPI_Status_c2f(c_status, f_status) )
*/
  __pyx_v_c_status = (&__pyx_v_self->ob_mpi);

  /* "src/mpi4py/MPI.src/Status.pyx":204
 *         cdef MPI_Fint f_status[16]
 *         cdef MPI_Status *c_status = &self.ob_mpi
 *         cdef Py_ssize_t size = MPI_F_STATUS_SIZE             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Status_c2f(c_status, f_status) )
 *         return [f_status[i] for i in range(size)]
*/
  __pyx_v_size = MPI_F_STATUS_SIZE;

  /* "src/mpi4py/MPI.src/Status.pyx":205
 *         cdef MPI_Status *c_status = &self.ob_mpi
 *         cdef Py_ssize_t size = MPI_F_STATUS_SIZE
 *         CHKERR( MPI_Status_c2f(c_status, f_status) )             # <<<<<<<<<<<<<<
 *         return [f_status[i] for i in range(size)]
 * 
*/
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Status_c2f(__pyx_v_c_status, __pyx_v_f_status)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(25, 205, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":206
 *         cdef Py_ssize_t size = MPI_F_STATUS_SIZE
 *         CHKERR( MPI_Status_c2f(c_status, f_status) )
 *         return [f_status[i] for i in range(size)]             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
*/
  __Pyx_XDECREF(__pyx_r);
  { /* enter inner scope */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 206, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_v_size;
    __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_PyLong_From_MPI_Fint((__pyx_v_f_status[__pyx_8genexpr7__pyx_v_i])); if (unlikely(!__pyx_t_6)) __PYX_ERR(25, 206, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(25, 206, __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/Status.pyx":199
 *     # --------------
 * 
 *     def py2f(self) -> list[int]:             # <<<<<<<<<<<<<<
 *         """
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI.Status.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/Status.pyx":208
 *         return [f_status[i] for i in range(size)]
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: list[int]) -> Self:
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_37f2py(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_36f2py, "f2py(cls, arg: list[int]) -> Self\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Status_37f2py = {"f2py", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_37f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_36f2py};
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_37f2py(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_arg,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(25, 208, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(25, 208, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "f2py", 0) < (0)) __PYX_ERR(25, 208, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, i); __PYX_ERR(25, 208, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(25, 208, __pyx_L3_error)
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, __pyx_nargs); __PYX_ERR(25, 208, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_36f2py(((PyTypeObject*)__pyx_v_cls), __pyx_v_arg);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_36f2py(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg) {
  MPI_Fint __pyx_v_f_status[16];
  MPI_Status __pyx_v_c_status[1];
  Py_ssize_t __pyx_v_size;
  Py_ssize_t __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  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", 0);

  /* "src/mpi4py/MPI.src/Status.pyx":214
 *         cdef MPI_Fint f_status[16]
 *         cdef MPI_Status c_status[1]
 *         cdef Py_ssize_t size = MPI_F_STATUS_SIZE             # <<<<<<<<<<<<<<
 *         for i in range(size): f_status[i] = arg[i]
 *         CHKERR( MPI_Status_f2c(f_status, c_status) )
*/
  __pyx_v_size = MPI_F_STATUS_SIZE;

  /* "src/mpi4py/MPI.src/Status.pyx":215
 *         cdef MPI_Status c_status[1]
 *         cdef Py_ssize_t size = MPI_F_STATUS_SIZE
 *         for i in range(size): f_status[i] = arg[i]             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Status_f2c(f_status, c_status) )
 *         return PyMPIStatus_New(c_status)
*/
  __pyx_t_1 = __pyx_v_size;
  __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;
    __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_arg, __pyx_v_i, Py_ssize_t, 1, PyLong_FromSsize_t, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_4)) __PYX_ERR(25, 215, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyLong_As_MPI_Fint(__pyx_t_4); if (unlikely((__pyx_t_5 == ((MPI_Fint)-1)) && PyErr_Occurred())) __PYX_ERR(25, 215, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    (__pyx_v_f_status[__pyx_v_i]) = __pyx_t_5;
  }

  /* "src/mpi4py/MPI.src/Status.pyx":216
 *         cdef Py_ssize_t size = MPI_F_STATUS_SIZE
 *         for i in range(size): 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(25, 216, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":217
 *         for i in range(size): f_status[i] = arg[i]
 *         CHKERR( MPI_Status_f2c(f_status, c_status) )
 *         return PyMPIStatus_New(c_status)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_PyMPIStatus_New(__pyx_v_c_status); if (unlikely(!__pyx_t_4)) __PYX_ERR(25, 217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Status.pyx":208
 *         return [f_status[i] for i in range(size)]
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: list[int]) -> Self:
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Status.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":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_SIZE
  __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 ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_request,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 6, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 6, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < (0)) __PYX_ERR(26, 6, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIRequestObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 6, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIRequestObject *)Py_None));
    }
    __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(26, 6, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, 1, "request", 0))) __PYX_ERR(26, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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(26, 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(26, 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__", 0);

  /* "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_mstate_global->__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(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/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(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce__", __pyx_kwds); 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__", 0);

  /* "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(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/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__", 0);

  /* "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_PyLong_FromSize_t(__pyx_fuse_1__pyx_f_6mpi4py_3MPI_tohandle(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 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\nCreate object from MPI handle.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_11fromhandle = {"fromhandle", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_handle,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 27, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 27, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "fromhandle", 0) < (0)) __PYX_ERR(26, 27, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("fromhandle", 1, 1, 1, i); __PYX_ERR(26, 27, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 27, __pyx_L3_error)
    }
    __pyx_v_handle = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fromhandle", 1, 1, 1, __pyx_nargs); __PYX_ERR(26, 27, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(26, 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_PyLong_As_size_t(__pyx_v_handle); if (unlikely((__pyx_t_2 == ((Py_uintptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(26, 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(26, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Grequest)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(26, 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_PyLong_As_size_t(__pyx_v_handle); if (unlikely((__pyx_t_2 == ((Py_uintptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(26, 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(26, 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_PyLong_As_size_t(__pyx_v_handle); if (unlikely((__pyx_t_2 == ((Py_uintptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(26, 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(26, 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\nCall `Free` if not null.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_13free = {"free", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("free", __pyx_kwds); 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", 0);

  /* "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(26, 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\nWait for a non-blocking operation to complete.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_15Wait = {"Wait", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 47, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 47, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Wait", 0) < (0)) __PYX_ERR(26, 47, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 47, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __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(26, 47, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(26, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(26, 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:
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(26, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nTest for the completion of a non-blocking operation.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_17Test = {"Test", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 58, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 58, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Test", 0) < (0)) __PYX_ERR(26, 58, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 58, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __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(26, 58, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(26, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(26, 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:
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(26, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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(26, 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\nNon-destructive test for the completion of a request.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_19Get_status = {"Get_status", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 70, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 70, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Get_status", 0) < (0)) __PYX_ERR(26, 70, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 70, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __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(26, 70, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(26, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(26, 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
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(26, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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(26, 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\nWait for any previously initiated request to complete.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_21Waitany = {"Waitany", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_requests,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 83, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 83, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 83, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Waitany", 0) < (0)) __PYX_ERR(26, 83, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Request.pyx":87
 *         cls,
 *         requests: Sequence[Request],
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> int:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Waitany", 0, 1, 2, i); __PYX_ERR(26, 83, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 83, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 83, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __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(26, 83, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(26, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(26, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 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(26, 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:
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*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(26, 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:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            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(26, 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;
       __Pyx_ExceptionSwap(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      if ( 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(26, 100, __pyx_L10_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);
      __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:;
      __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_PyLong_From_int(__pyx_v_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 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\nTest for completion of any previously initiated request.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_23Testany = {"Testany", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_requests,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 103, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 103, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 103, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Testany", 0) < (0)) __PYX_ERR(26, 103, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Request.pyx":107
 *         cls,
 *         requests: Sequence[Request],
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> tuple[int, bool]:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Testany", 0, 1, 2, i); __PYX_ERR(26, 103, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 103, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 103, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __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(26, 103, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(26, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(26, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 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(26, 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:
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*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(26, 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:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            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(26, 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;
       __Pyx_ExceptionSwap(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      if ( 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(26, 121, __pyx_L10_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);
      __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:;
      __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_PyLong_From_int(__pyx_v_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 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(26, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) __PYX_ERR(26, 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) != (0)) __PYX_ERR(26, 122, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_13);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_t_13) != (0)) __PYX_ERR(26, 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\nNon-destructive test for the completion of any requests.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_25Get_status_any = {"Get_status_any", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_requests,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 124, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 124, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 124, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Get_status_any", 0) < (0)) __PYX_ERR(26, 124, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Request.pyx":128
 *         cls,
 *         requests: Sequence[Request],
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> tuple[int, bool]:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Get_status_any", 0, 1, 2, i); __PYX_ERR(26, 124, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 124, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 124, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __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(26, 124, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(26, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(26, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 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(26, 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:
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*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(26, 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:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            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(26, 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;
       __Pyx_ExceptionSwap(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      if ( 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(26, 142, __pyx_L10_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);
      __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:;
      __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_PyLong_From_int(__pyx_v_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 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(26, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) __PYX_ERR(26, 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) != (0)) __PYX_ERR(26, 143, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_13);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_t_13) != (0)) __PYX_ERR(26, 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\nWait for all previously initiated requests to complete.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_27Waitall = {"Waitall", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_requests,&__pyx_mstate_global->__pyx_n_u_statuses,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 145, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 145, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 145, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Waitall", 0) < (0)) __PYX_ERR(26, 145, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Request.pyx":149
 *         cls,
 *         requests: Sequence[Request],
 *         statuses: list[Status] | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Literal[True]:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Waitall", 0, 1, 2, i); __PYX_ERR(26, 145, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 145, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 145, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __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(26, 145, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 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(26, 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:
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*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(26, 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:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            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(26, 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;
       __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      if ( 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(26, 160, __pyx_L10_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);
      __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:;
      __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\nTest for completion of all previously initiated requests.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_29Testall = {"Testall", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_requests,&__pyx_mstate_global->__pyx_n_u_statuses,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 163, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 163, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 163, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Testall", 0) < (0)) __PYX_ERR(26, 163, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Request.pyx":167
 *         cls,
 *         requests: Sequence[Request],
 *         statuses: list[Status] | None = None,             # <<<<<<<<<<<<<<
 *     ) -> bool:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Testall", 0, 1, 2, i); __PYX_ERR(26, 163, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 163, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 163, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __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(26, 163, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 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(26, 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:
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*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(26, 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:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            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(26, 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;
       __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      if ( 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(26, 179, __pyx_L10_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);
      __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:;
      __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(26, 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\nNon-destructive test for the completion of all requests.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_31Get_status_all = {"Get_status_all", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_requests,&__pyx_mstate_global->__pyx_n_u_statuses,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 182, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 182, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 182, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Get_status_all", 0) < (0)) __PYX_ERR(26, 182, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Request.pyx":186
 *         cls,
 *         requests: Sequence[Request],
 *         statuses: list[Status] | None = None,             # <<<<<<<<<<<<<<
 *     ) -> bool:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Get_status_all", 0, 1, 2, i); __PYX_ERR(26, 182, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 182, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 182, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __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(26, 182, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 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(26, 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:
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*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(26, 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:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            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(26, 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;
       __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      if ( 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(26, 198, __pyx_L10_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);
      __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:;
      __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(26, 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\nWait for some previously initiated requests to complete.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_33Waitsome = {"Waitsome", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_requests,&__pyx_mstate_global->__pyx_n_u_statuses,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 201, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 201, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 201, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Waitsome", 0) < (0)) __PYX_ERR(26, 201, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Request.pyx":205
 *         cls,
 *         requests: Sequence[Request],
 *         statuses: list[Status] | None = None,             # <<<<<<<<<<<<<<
 *     ) -> list[int] | None:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Waitsome", 0, 1, 2, i); __PYX_ERR(26, 201, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 201, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 201, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __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(26, 201, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 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(26, 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(26, 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()
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*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(26, 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:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            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(26, 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(26, 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;
       __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      if ( 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(26, 219, __pyx_L10_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);
      __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:;
      __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\nTest for completion of some previously initiated requests.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_35Testsome = {"Testsome", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_requests,&__pyx_mstate_global->__pyx_n_u_statuses,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 222, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 222, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 222, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Testsome", 0) < (0)) __PYX_ERR(26, 222, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Request.pyx":226
 *         cls,
 *         requests: Sequence[Request],
 *         statuses: list[Status] | None = None,             # <<<<<<<<<<<<<<
 *     ) -> list[int] | None:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Testsome", 0, 1, 2, i); __PYX_ERR(26, 222, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 222, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 222, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __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(26, 222, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 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(26, 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(26, 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()
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*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(26, 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:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            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(26, 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(26, 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;
       __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      if ( 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(26, 240, __pyx_L10_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);
      __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:;
      __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\nNon-destructive test for completion of some requests.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_37Get_status_some = {"Get_status_some", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_requests,&__pyx_mstate_global->__pyx_n_u_statuses,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 243, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 243, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 243, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Get_status_some", 0) < (0)) __PYX_ERR(26, 243, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Request.pyx":247
 *         cls,
 *         requests: Sequence[Request],
 *         statuses: list[Status] | None = None,             # <<<<<<<<<<<<<<
 *     ) -> list[int] | None:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Get_status_some", 0, 1, 2, i); __PYX_ERR(26, 243, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 243, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 243, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __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(26, 243, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 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(26, 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(26, 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
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*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(26, 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:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            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(26, 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(26, 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;
       __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      if ( 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(26, 261, __pyx_L10_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);
      __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:;
      __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\nCancel a request.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_39Cancel = {"Cancel", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Cancel", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Request.pyx":271
 *         Cancel a request.
 *         """
 *         with nogil: CHKERR( MPI_Cancel(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Deallocation
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(26, 271, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nFree a communication request.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_41Free = {"Free", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Free", __pyx_kwds); 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) {
  MPI_Request __pyx_v_save;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Request __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("Free", 0);

  /* "src/mpi4py/MPI.src/Request.pyx":280
 *         Free a communication request.
 *         """
 *         cdef MPI_Request save = self.ob_mpi             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Request_free(&self.ob_mpi) )
 *         if constobj(self): self.ob_mpi = save
*/
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_save = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Request.pyx":281
 *         """
 *         cdef MPI_Request save = self.ob_mpi
 *         with nogil: CHKERR( MPI_Request_free(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 *         if constobj(self): self.ob_mpi = save
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Request_free((&__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(26, 281, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Request.pyx":282
 *         cdef MPI_Request save = self.ob_mpi
 *         with nogil: CHKERR( MPI_Request_free(&self.ob_mpi) )
 *         if constobj(self): self.ob_mpi = save             # <<<<<<<<<<<<<<
 * 
 *     # Integer Handle
*/
  __pyx_t_3 = (__pyx_fuse_1__pyx_f_6mpi4py_3MPI_constobj(__pyx_v_self) != 0);
  if (__pyx_t_3) {
    __pyx_v_self->ob_mpi = __pyx_v_save;
  }

  /* "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":287
 *     # --------------
 * 
 *     def toint(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate object to integer handle.
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_43toint(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_42toint, "toint(self) -> int\n\nTranslate object to integer handle.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_43toint = {"toint", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_43toint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_42toint};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_43toint(PyObject *__pyx_v_self, 
#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("toint (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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("toint", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("toint", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_42toint(((struct PyMPIRequestObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_42toint(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("toint", 0);

  /* "src/mpi4py/MPI.src/Request.pyx":291
 *         Translate object to integer handle.
 *         """
 *         return MPI_Request_toint(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_int(MPI_Request_toint(__pyx_v_self->ob_mpi)); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 291, __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":287
 *     # --------------
 * 
 *     def toint(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate object to integer handle.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Request.toint", __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":293
 *         return MPI_Request_toint(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromint(cls, arg: int, /) -> Request:
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_45fromint(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Request_44fromint, "fromint(cls, arg: int, /) -> Request\n\nTranslate integer handle to object.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_45fromint = {"fromint", (PyCFunction)__pyx_pw_6mpi4py_3MPI_7Request_45fromint, METH_O, __pyx_doc_6mpi4py_3MPI_7Request_44fromint};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_45fromint(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fromint (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_44fromint(((PyTypeObject*)__pyx_v_cls), ((PyObject *)__pyx_v_arg));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_44fromint(PyTypeObject *__pyx_v_cls, 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("fromint", 0);

  /* "src/mpi4py/MPI.src/Request.pyx":298
 *         Translate integer handle to object.
 *         """
 *         if issubclass(cls, Prequest):             # <<<<<<<<<<<<<<
 *             return PyMPIPrequest_New(MPI_Request_fromint(arg))
 *         if issubclass(cls, Grequest):
*/
  __pyx_t_1 = PyObject_IsSubclass(((PyObject *)__pyx_v_cls), ((PyObject *)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(26, 298, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Request.pyx":299
 *         """
 *         if issubclass(cls, Prequest):
 *             return PyMPIPrequest_New(MPI_Request_fromint(arg))             # <<<<<<<<<<<<<<
 *         if issubclass(cls, Grequest):
 *             return PyMPIGrequest_New(MPI_Request_fromint(arg))
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyLong_As_int(__pyx_v_arg); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(26, 299, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_PyMPIPrequest_New(MPI_Request_fromint(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 299, __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":298
 *         Translate integer handle to object.
 *         """
 *         if issubclass(cls, Prequest):             # <<<<<<<<<<<<<<
 *             return PyMPIPrequest_New(MPI_Request_fromint(arg))
 *         if issubclass(cls, Grequest):
*/
  }

  /* "src/mpi4py/MPI.src/Request.pyx":300
 *         if issubclass(cls, Prequest):
 *             return PyMPIPrequest_New(MPI_Request_fromint(arg))
 *         if issubclass(cls, Grequest):             # <<<<<<<<<<<<<<
 *             return PyMPIGrequest_New(MPI_Request_fromint(arg))
 *         return fromhandle(MPI_Request_fromint(arg))
*/
  __pyx_t_1 = PyObject_IsSubclass(((PyObject *)__pyx_v_cls), ((PyObject *)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Grequest)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(26, 300, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Request.pyx":301
 *             return PyMPIPrequest_New(MPI_Request_fromint(arg))
 *         if issubclass(cls, Grequest):
 *             return PyMPIGrequest_New(MPI_Request_fromint(arg))             # <<<<<<<<<<<<<<
 *         return fromhandle(MPI_Request_fromint(arg))
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyLong_As_int(__pyx_v_arg); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(26, 301, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_PyMPIGrequest_New(MPI_Request_fromint(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 301, __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":300
 *         if issubclass(cls, Prequest):
 *             return PyMPIPrequest_New(MPI_Request_fromint(arg))
 *         if issubclass(cls, Grequest):             # <<<<<<<<<<<<<<
 *             return PyMPIGrequest_New(MPI_Request_fromint(arg))
 *         return fromhandle(MPI_Request_fromint(arg))
*/
  }

  /* "src/mpi4py/MPI.src/Request.pyx":302
 *         if issubclass(cls, Grequest):
 *             return PyMPIGrequest_New(MPI_Request_fromint(arg))
 *         return fromhandle(MPI_Request_fromint(arg))             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_As_int(__pyx_v_arg); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(26, 302, __pyx_L1_error)
  __pyx_t_3 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Request_fromint(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 302, __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":293
 *         return MPI_Request_toint(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromint(cls, arg: int, /) -> Request:
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Request.fromint", __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":307
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_47py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_46py2f, "py2f(self) -> int\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_47py2f = {"py2f", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_47py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_46py2f};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_47py2f(PyObject *__pyx_v_self, 
#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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("py2f", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_46py2f(((struct PyMPIRequestObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_46py2f(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", 0);

  /* "src/mpi4py/MPI.src/Request.pyx":310
 *         """
 *         """
 *         return MPI_Request_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_MPI_Fint(MPI_Request_c2f(__pyx_v_self->ob_mpi)); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 310, __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":307
 *     # --------------
 * 
 *     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":312
 *         return MPI_Request_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Request:
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_49f2py(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_48f2py, "f2py(cls, arg: int) -> Request\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_49f2py = {"f2py", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_49f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_48f2py};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_49f2py(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_arg,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 312, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 312, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "f2py", 0) < (0)) __PYX_ERR(26, 312, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, i); __PYX_ERR(26, 312, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 312, __pyx_L3_error)
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, __pyx_nargs); __PYX_ERR(26, 312, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_48f2py(((PyTypeObject*)__pyx_v_cls), __pyx_v_arg);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_48f2py(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", 0);

  /* "src/mpi4py/MPI.src/Request.pyx":316
 *         """
 *         """
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(26, 316, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Request.pyx":317
 *         """
 *         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_PyLong_As_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_2 == ((MPI_Fint)-1)) && PyErr_Occurred())) __PYX_ERR(26, 317, __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(26, 317, __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":316
 *         """
 *         """
 *         if issubclass(cls, Prequest):             # <<<<<<<<<<<<<<
 *             return PyMPIPrequest_New(MPI_Request_f2c(arg))
 *         if issubclass(cls, Grequest):
*/
  }

  /* "src/mpi4py/MPI.src/Request.pyx":318
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Grequest)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(26, 318, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Request.pyx":319
 *             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_PyLong_As_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_2 == ((MPI_Fint)-1)) && PyErr_Occurred())) __PYX_ERR(26, 319, __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(26, 319, __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":318
 *         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":320
 *         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_PyLong_As_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_2 == ((MPI_Fint)-1)) && PyErr_Occurred())) __PYX_ERR(26, 320, __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(26, 320, __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":312
 *         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":325
 *     # --------------------
 * 
 *     def wait(             # <<<<<<<<<<<<<<
 *         self,
 *         Status status: Status | None = None,
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_51wait(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_50wait, "wait(self, status: Status | None = None) -> Any\n\nWait for a non-blocking operation to complete.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_51wait = {"wait", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_51wait, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_50wait};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_51wait(PyObject *__pyx_v_self, 
#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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 325, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 325, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "wait", 0) < (0)) __PYX_ERR(26, 325, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Request.pyx":327
 *     def wait(
 *         self,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Any:
 *         """
*/
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 325, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __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(26, 325, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(26, 327, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_50wait(((struct PyMPIRequestObject *)__pyx_v_self), __pyx_v_status);

  /* "src/mpi4py/MPI.src/Request.pyx":325
 *     # --------------------
 * 
 *     def wait(             # <<<<<<<<<<<<<<
 *         self,
 *         Status status: Status | None = None,
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_50wait(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", 0);

  /* "src/mpi4py/MPI.src/Request.pyx":332
 *         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(26, 332, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_msg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":333
 *         """
 *         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":325
 *     # --------------------
 * 
 *     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":335
 *         return msg
 * 
 *     def test(             # <<<<<<<<<<<<<<
 *         self,
 *             Status status: Status | None = None,
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_53test(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_52test, "test(self, status: Status | None = None) -> tuple[bool, Any | None]\n\nTest for the completion of a non-blocking operation.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_53test = {"test", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_53test, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_52test};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_53test(PyObject *__pyx_v_self, 
#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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 335, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 335, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "test", 0) < (0)) __PYX_ERR(26, 335, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Request.pyx":337
 *     def test(
 *         self,
 *             Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> tuple[bool, Any | None]:
 *         """
*/
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 335, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __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(26, 335, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(26, 337, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_52test(((struct PyMPIRequestObject *)__pyx_v_self), __pyx_v_status);

  /* "src/mpi4py/MPI.src/Request.pyx":335
 *         return msg
 * 
 *     def test(             # <<<<<<<<<<<<<<
 *         self,
 *             Status status: Status | None = None,
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_52test(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", 0);

  /* "src/mpi4py/MPI.src/Request.pyx":342
 *         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":343
 *         """
 *         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(26, 343, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_msg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":344
 *         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(26, 344, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 344, __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) != (0)) __PYX_ERR(26, 344, __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) != (0)) __PYX_ERR(26, 344, __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":335
 *         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":346
 *         return (<bint>flag, msg)
 * 
 *     def get_status(             # <<<<<<<<<<<<<<
 *         self,
 *         Status status: Status | None = None,
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_55get_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_54get_status, "get_status(self, status: Status | None = None) -> bool\n\nNon-destructive test for the completion of a request.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_55get_status = {"get_status", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_55get_status, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_54get_status};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_55get_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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 346, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 346, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "get_status", 0) < (0)) __PYX_ERR(26, 346, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Request.pyx":348
 *     def get_status(
 *         self,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> bool:
 *         """
*/
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 346, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __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(26, 346, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(26, 348, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_54get_status(((struct PyMPIRequestObject *)__pyx_v_self), __pyx_v_status);

  /* "src/mpi4py/MPI.src/Request.pyx":346
 *         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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_54get_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", 0);

  /* "src/mpi4py/MPI.src/Request.pyx":353
 *         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":354
 *         """
 *         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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(26, 354, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Request.pyx":355
 *         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
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Request.pyx":356
 *         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(26, 355, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Request.pyx":355
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Request.pyx":357
 *         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(26, 357, __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":346
 *         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":359
 *         return <bint>flag
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def waitany(
 *         cls,
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_57waitany(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_56waitany, "waitany(cls, requests: Sequence[Request], status: Status | None = None) -> tuple[int, Any]\n\nWait for any previously initiated request to complete.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_57waitany = {"waitany", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_57waitany, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_56waitany};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_57waitany(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_requests,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 359, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 359, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 359, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "waitany", 0) < (0)) __PYX_ERR(26, 359, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Request.pyx":363
 *         cls,
 *         requests: Sequence[Request],
 *         Status status: Status | None = None             # <<<<<<<<<<<<<<
 *     ) -> tuple[int, Any]:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("waitany", 0, 1, 2, i); __PYX_ERR(26, 359, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 359, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 359, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __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(26, 359, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(26, 363, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_56waitany(((PyTypeObject*)__pyx_v_cls), __pyx_v_requests, __pyx_v_status);

  /* "src/mpi4py/MPI.src/Request.pyx":359
 *         return <bint>flag
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def waitany(
 *         cls,
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_56waitany(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", 0);

  /* "src/mpi4py/MPI.src/Request.pyx":368
 *         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":369
 *         """
 *         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(26, 369, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_msg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":370
 *         cdef int index = MPI_UNDEFINED
 *         cdef msg = PyMPI_waitany(requests, &index, status)
 *         return (index, msg)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 370, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 370, __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) != (0)) __PYX_ERR(26, 370, __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) != (0)) __PYX_ERR(26, 370, __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":359
 *         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":372
 *         return (index, msg)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def testany(
 *         cls,
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_59testany(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_58testany, "testany(cls, requests: Sequence[Request], status: Status | None = None) -> tuple[int, bool, Any | None]\n\nTest for completion of any previously initiated request.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_59testany = {"testany", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_59testany, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_58testany};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_59testany(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_requests,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 372, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 372, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 372, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "testany", 0) < (0)) __PYX_ERR(26, 372, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Request.pyx":376
 *         cls,
 *         requests: Sequence[Request],
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> tuple[int, bool, Any | None]:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("testany", 0, 1, 2, i); __PYX_ERR(26, 372, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 372, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 372, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __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(26, 372, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(26, 376, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_58testany(((PyTypeObject*)__pyx_v_cls), __pyx_v_requests, __pyx_v_status);

  /* "src/mpi4py/MPI.src/Request.pyx":372
 *         return (index, msg)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def testany(
 *         cls,
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_58testany(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", 0);

  /* "src/mpi4py/MPI.src/Request.pyx":381
 *         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":382
 *         """
 *         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":383
 *         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(26, 383, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_msg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":384
 *         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_PyLong_From_int(__pyx_v_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 384, __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(26, 384, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 384, __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) != (0)) __PYX_ERR(26, 384, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2) != (0)) __PYX_ERR(26, 384, __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) != (0)) __PYX_ERR(26, 384, __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":372
 *         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":386
 *         return (index, <bint>flag, msg)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def get_status_any(
 *         cls,
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_61get_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_60get_status_any, "get_status_any(cls, requests: Sequence[Request], status: Status | None = None) -> tuple[int, bool]\n\nNon-destructive test for the completion of any requests.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_61get_status_any = {"get_status_any", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_61get_status_any, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_60get_status_any};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_61get_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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_requests,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 386, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 386, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 386, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "get_status_any", 0) < (0)) __PYX_ERR(26, 386, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Request.pyx":390
 *         cls,
 *         requests: Sequence[Request],
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> tuple[int, bool]:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("get_status_any", 0, 1, 2, i); __PYX_ERR(26, 386, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 386, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 386, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __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(26, 386, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(26, 390, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_60get_status_any(((PyTypeObject*)__pyx_v_cls), __pyx_v_requests, __pyx_v_status);

  /* "src/mpi4py/MPI.src/Request.pyx":386
 *         return (index, <bint>flag, msg)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def get_status_any(
 *         cls,
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_60get_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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_status_any", 0);

  /* "src/mpi4py/MPI.src/Request.pyx":395
 *         Non-destructive test for the completion of any requests.
 *         """
 *         return Request.Get_status_any(requests, status)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_requests, ((PyObject *)__pyx_v_status)};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_status_any, __pyx_callargs+__pyx_t_3, (3-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 395, __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":386
 *         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_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":397
 *         return Request.Get_status_any(requests, status)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def waitall(
 *         cls,
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_63waitall(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_62waitall, "waitall(cls, requests: Sequence[Request], statuses: list[Status] | None = None) -> list[Any]\n\nWait for all previously initiated requests to complete.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_63waitall = {"waitall", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_63waitall, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_62waitall};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_63waitall(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_requests,&__pyx_mstate_global->__pyx_n_u_statuses,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 397, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 397, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 397, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "waitall", 0) < (0)) __PYX_ERR(26, 397, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Request.pyx":401
 *         cls,
 *         requests: Sequence[Request],
 *         statuses: list[Status] | None = None,             # <<<<<<<<<<<<<<
 *     ) -> list[Any]:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("waitall", 0, 1, 2, i); __PYX_ERR(26, 397, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 397, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 397, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __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(26, 397, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_62waitall(((PyTypeObject*)__pyx_v_cls), __pyx_v_requests, __pyx_v_statuses);

  /* "src/mpi4py/MPI.src/Request.pyx":397
 *         return Request.Get_status_any(requests, status)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def waitall(
 *         cls,
*/

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

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_62waitall(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", 0);

  /* "src/mpi4py/MPI.src/Request.pyx":406
 *         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(26, 406, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_msg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":407
 *         """
 *         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":397
 *         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":409
 *         return msg
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def testall(
 *         cls,
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_65testall(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_64testall, "testall(cls, requests: Sequence[Request], statuses: list[Status] | None = None) -> tuple[bool, list[Any] | None]\n\nTest for completion of all previously initiated requests.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_65testall = {"testall", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_65testall, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_64testall};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_65testall(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_requests,&__pyx_mstate_global->__pyx_n_u_statuses,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 409, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 409, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 409, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "testall", 0) < (0)) __PYX_ERR(26, 409, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Request.pyx":413
 *         cls,
 *         requests: Sequence[Request],
 *         statuses: list[Status] | None = None             # <<<<<<<<<<<<<<
 *     ) -> tuple[bool, list[Any] | None]:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("testall", 0, 1, 2, i); __PYX_ERR(26, 409, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 409, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 409, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __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(26, 409, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_64testall(((PyTypeObject*)__pyx_v_cls), __pyx_v_requests, __pyx_v_statuses);

  /* "src/mpi4py/MPI.src/Request.pyx":409
 *         return msg
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def testall(
 *         cls,
*/

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

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_64testall(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", 0);

  /* "src/mpi4py/MPI.src/Request.pyx":418
 *         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":419
 *         """
 *         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(26, 419, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_msg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":420
 *         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(26, 420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 420, __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) != (0)) __PYX_ERR(26, 420, __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) != (0)) __PYX_ERR(26, 420, __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":409
 *         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":422
 *         return (<bint>flag, msg)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def get_status_all(
 *         cls,
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_67get_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_66get_status_all, "get_status_all(cls, requests: Sequence[Request], statuses: list[Status] | None = None) -> bool\n\nNon-destructive test for the completion of all requests.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_67get_status_all = {"get_status_all", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_67get_status_all, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_66get_status_all};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_67get_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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_requests,&__pyx_mstate_global->__pyx_n_u_statuses,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 422, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 422, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 422, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "get_status_all", 0) < (0)) __PYX_ERR(26, 422, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Request.pyx":426
 *         cls,
 *         requests: Sequence[Request],
 *         statuses: list[Status] | None = None,             # <<<<<<<<<<<<<<
 *     ) -> bool:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("get_status_all", 0, 1, 2, i); __PYX_ERR(26, 422, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 422, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 422, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __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(26, 422, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_66get_status_all(((PyTypeObject*)__pyx_v_cls), __pyx_v_requests, __pyx_v_statuses);

  /* "src/mpi4py/MPI.src/Request.pyx":422
 *         return (<bint>flag, msg)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def get_status_all(
 *         cls,
*/

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

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_66get_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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_status_all", 0);

  /* "src/mpi4py/MPI.src/Request.pyx":431
 *         Non-destructive test for the completion of all requests.
 *         """
 *         return Request.Get_status_all(requests, statuses)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_requests, __pyx_v_statuses};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_status_all, __pyx_callargs+__pyx_t_3, (3-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 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 (<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_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":433
 *         return Request.Get_status_all(requests, statuses)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def waitsome(
 *         cls,
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_69waitsome(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_68waitsome, "waitsome(cls, requests: Sequence[Request], statuses: list[Status] | None = None) -> tuple[list[int] | None, list[Any] | None]\n\nWait for some previously initiated requests to complete.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_69waitsome = {"waitsome", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_69waitsome, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_68waitsome};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_69waitsome(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_requests,&__pyx_mstate_global->__pyx_n_u_statuses,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 433, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 433, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 433, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "waitsome", 0) < (0)) __PYX_ERR(26, 433, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Request.pyx":437
 *         cls,
 *         requests: Sequence[Request],
 *         statuses: list[Status] | None = None,             # <<<<<<<<<<<<<<
 *     ) -> tuple[list[int] | None, list[Any] | None]:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("waitsome", 0, 1, 2, i); __PYX_ERR(26, 433, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 433, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 433, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __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(26, 433, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_68waitsome(((PyTypeObject*)__pyx_v_cls), __pyx_v_requests, __pyx_v_statuses);

  /* "src/mpi4py/MPI.src/Request.pyx":433
 *         return Request.Get_status_all(requests, statuses)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def waitsome(
 *         cls,
*/

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

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_68waitsome(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", 0);

  /* "src/mpi4py/MPI.src/Request.pyx":442
 *         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(26, 442, __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":433
 *         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":444
 *         return PyMPI_waitsome(requests, statuses)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def testsome(
 *         cls,
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_71testsome(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_70testsome, "testsome(cls, requests: Sequence[Request], statuses: list[Status] | None = None) -> tuple[list[int] | None, list[Any] | None]\n\nTest for completion of some previously initiated requests.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_71testsome = {"testsome", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_71testsome, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_70testsome};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_71testsome(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_requests,&__pyx_mstate_global->__pyx_n_u_statuses,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 444, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 444, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 444, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "testsome", 0) < (0)) __PYX_ERR(26, 444, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Request.pyx":448
 *         cls,
 *         requests: Sequence[Request],
 *         statuses: list[Status] | None = None,             # <<<<<<<<<<<<<<
 *     ) -> tuple[list[int] | None, list[Any] | None]:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("testsome", 0, 1, 2, i); __PYX_ERR(26, 444, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 444, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 444, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __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(26, 444, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_70testsome(((PyTypeObject*)__pyx_v_cls), __pyx_v_requests, __pyx_v_statuses);

  /* "src/mpi4py/MPI.src/Request.pyx":444
 *         return PyMPI_waitsome(requests, statuses)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def testsome(
 *         cls,
*/

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

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_70testsome(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", 0);

  /* "src/mpi4py/MPI.src/Request.pyx":453
 *         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(26, 453, __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":444
 *         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":455
 *         return PyMPI_testsome(requests, statuses)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def get_status_some(
 *         cls,
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_73get_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_72get_status_some, "get_status_some(cls, requests: Sequence[Request], statuses: list[Status] | None = None) -> list[int] | None\n\nNon-destructive test for completion of some requests.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_73get_status_some = {"get_status_some", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_73get_status_some, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_72get_status_some};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_73get_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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_requests,&__pyx_mstate_global->__pyx_n_u_statuses,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 455, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 455, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 455, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "get_status_some", 0) < (0)) __PYX_ERR(26, 455, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Request.pyx":459
 *         cls,
 *         requests: Sequence[Request],
 *         statuses: list[Status] | None = None,             # <<<<<<<<<<<<<<
 *     ) -> list[int] | None:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("get_status_some", 0, 1, 2, i); __PYX_ERR(26, 455, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 455, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 455, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __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(26, 455, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_72get_status_some(((PyTypeObject*)__pyx_v_cls), __pyx_v_requests, __pyx_v_statuses);

  /* "src/mpi4py/MPI.src/Request.pyx":455
 *         return PyMPI_testsome(requests, statuses)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def get_status_some(
 *         cls,
*/

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

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_72get_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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_status_some", 0);

  /* "src/mpi4py/MPI.src/Request.pyx":464
 *         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 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_requests, __pyx_v_statuses};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_status_some, __pyx_callargs+__pyx_t_3, (3-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 464, __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":455
 *         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_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":466
 *         return Request.Get_status_some(requests, statuses)
 * 
 *     def cancel(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Cancel a request.
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_75cancel(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_74cancel, "cancel(self) -> None\n\nCancel a request.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_75cancel = {"cancel", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_75cancel, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_74cancel};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_75cancel(PyObject *__pyx_v_self, 
#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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("cancel", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_74cancel(((struct PyMPIRequestObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_74cancel(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", 0);

  /* "src/mpi4py/MPI.src/Request.pyx":470
 *         Cancel a request.
 *         """
 *         with nogil: CHKERR( MPI_Cancel(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(26, 470, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Request.pyx":466
 *         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":478
 *     """
 * 
 *     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_SIZE
  __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 ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_request,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 478, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 478, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < (0)) __PYX_ERR(26, 478, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIRequestObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 478, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIRequestObject *)Py_None));
    }
    __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(26, 478, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, 1, "request", 0))) __PYX_ERR(26, 478, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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":479
 * 
 *     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":480
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest)))) __PYX_ERR(26, 480, __pyx_L1_error)
  ((void)((struct PyMPIPrequestObject *)__pyx_v_request));

  /* "src/mpi4py/MPI.src/Request.pyx":478
 *     """
 * 
 *     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":482
 *         <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\nInitiate a communication with a persistent request.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Prequest_3Start = {"Start", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Start", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Request.pyx":486
 *         Initiate a communication with a persistent request.
 *         """
 *         with nogil: CHKERR( MPI_Start(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(26, 486, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Request.pyx":482
 *         <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":488
 *         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\nStart a collection of persistent requests.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Prequest_5Startall = {"Startall", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_requests,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 488, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 488, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Startall", 0) < (0)) __PYX_ERR(26, 488, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Startall", 1, 1, 1, i); __PYX_ERR(26, 488, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 488, __pyx_L3_error)
    }
    __pyx_v_requests = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Startall", 1, 1, 1, __pyx_nargs); __PYX_ERR(26, 488, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Request.pyx":493
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 493, __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":494
 *         """
 *         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(26, 494, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":495
 *         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":496
 *         rs.acquire(requests)
 *         try:
 *             with nogil: CHKERR( MPI_Startall(rs.count, rs.requests) )             # <<<<<<<<<<<<<<
 *         finally:
 *             rs.release()
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*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(26, 496, __pyx_L7_error)
        }
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L4_error;
          }
          __pyx_L8:;
        }
    }
  }

  /* "src/mpi4py/MPI.src/Request.pyx":498
 *             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(26, 498, __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;
       __Pyx_ExceptionSwap(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
      if ( 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(26, 498, __pyx_L10_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);
      __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:;
      __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":488
 *         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":503
 *     # ----------------------
 * 
 *     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\nMark a given partition as ready.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Prequest_7Pready = {"Pready", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_partition,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 503, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 503, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Pready", 0) < (0)) __PYX_ERR(26, 503, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Pready", 1, 1, 1, i); __PYX_ERR(26, 503, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 503, __pyx_L3_error)
    }
    __pyx_v_partition = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_partition == (int)-1) && PyErr_Occurred())) __PYX_ERR(26, 505, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Pready", 1, 1, 1, __pyx_nargs); __PYX_ERR(26, 503, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Request.pyx":510
 *         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(26, 510, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":503
 *     # ----------------------
 * 
 *     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":512
 *         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\nMark a range of partitions as ready.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Prequest_9Pready_range = {"Pready_range", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_partition_low,&__pyx_mstate_global->__pyx_n_u_partition_high,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 512, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 512, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 512, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Pready_range", 0) < (0)) __PYX_ERR(26, 512, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Pready_range", 1, 2, 2, i); __PYX_ERR(26, 512, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 512, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 512, __pyx_L3_error)
    }
    __pyx_v_partition_low = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_partition_low == (int)-1) && PyErr_Occurred())) __PYX_ERR(26, 514, __pyx_L3_error)
    __pyx_v_partition_high = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_partition_high == (int)-1) && PyErr_Occurred())) __PYX_ERR(26, 515, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Pready_range", 1, 2, 2, __pyx_nargs); __PYX_ERR(26, 512, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Request.pyx":520
 *         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(26, 520, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":512
 *         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":522
 *         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\nMark a sequence of partitions as ready.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Prequest_11Pready_list = {"Pready_list", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_partitions,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 522, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 522, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Pready_list", 0) < (0)) __PYX_ERR(26, 522, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Pready_list", 1, 1, 1, i); __PYX_ERR(26, 522, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 522, __pyx_L3_error)
    }
    __pyx_v_partitions = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Pready_list", 1, 1, 1, __pyx_nargs); __PYX_ERR(26, 522, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":529
 *         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":530
 *         """
 *         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(26, 530, __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":531
 *         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(26, 531, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":522
 *         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":533
 *         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\nTest partial completion of a partitioned receive operation.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Prequest_13Parrived = {"Parrived", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_partition,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 533, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 533, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Parrived", 0) < (0)) __PYX_ERR(26, 533, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Parrived", 1, 1, 1, i); __PYX_ERR(26, 533, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 533, __pyx_L3_error)
    }
    __pyx_v_partition = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_partition == (int)-1) && PyErr_Occurred())) __PYX_ERR(26, 535, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Parrived", 1, 1, 1, __pyx_nargs); __PYX_ERR(26, 533, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Request.pyx":540
 *         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":541
 *         """
 *         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(26, 541, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":542
 *         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(26, 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/Request.pyx":533
 *         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":550
 *     """
 * 
 *     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_SIZE
  __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 ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_request,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 550, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 550, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < (0)) __PYX_ERR(26, 550, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIRequestObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 550, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIRequestObject *)Py_None));
    }
    __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(26, 550, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, 1, "request", 0))) __PYX_ERR(26, 550, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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":551
 * 
 *     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":552
 *     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":553
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Grequest)))) __PYX_ERR(26, 553, __pyx_L1_error)
  ((void)((struct PyMPIGrequestObject *)__pyx_v_request));

  /* "src/mpi4py/MPI.src/Request.pyx":550
 *     """
 * 
 *     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":555
 *         <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\nCreate and return a user-defined request.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Grequest_3Start = {"Start", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_query_fn,&__pyx_mstate_global->__pyx_n_u_free_fn,&__pyx_mstate_global->__pyx_n_u_cancel_fn,&__pyx_mstate_global->__pyx_n_u_args,&__pyx_mstate_global->__pyx_n_u_kwargs,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 555, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(26, 555, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(26, 555, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(26, 555, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 555, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 555, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Start", 0) < (0)) __PYX_ERR(26, 555, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Request.pyx":558
 *     def Start(
 *         cls,
 *         query_fn: Callable[..., None] | None = None,             # <<<<<<<<<<<<<<
 *         free_fn: Callable[..., None] | None = None,
 *         cancel_fn: Callable[..., None] | None = None,
*/
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "src/mpi4py/MPI.src/Request.pyx":559
 *         cls,
 *         query_fn: Callable[..., None] | None = None,
 *         free_fn: Callable[..., None] | None = None,             # <<<<<<<<<<<<<<
 *         cancel_fn: Callable[..., None] | None = None,
 *         args: tuple[Any] | None = None,
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "src/mpi4py/MPI.src/Request.pyx":560
 *         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,
*/
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "src/mpi4py/MPI.src/Request.pyx":561
 *         free_fn: Callable[..., None] | None = None,
 *         cancel_fn: Callable[..., None] | None = None,
 *         args: tuple[Any] | None = None,             # <<<<<<<<<<<<<<
 *         kwargs: dict[str, Any] | None = None,
 *     ) -> Grequest:
*/
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "src/mpi4py/MPI.src/Request.pyx":562
 *         cancel_fn: Callable[..., None] | None = None,
 *         args: tuple[Any] | None = None,
 *         kwargs: dict[str, Any] | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Grequest:
 *         """
*/
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(26, 555, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(26, 555, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(26, 555, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(26, 555, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 555, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }

      /* "src/mpi4py/MPI.src/Request.pyx":558
 *     def Start(
 *         cls,
 *         query_fn: Callable[..., None] | None = None,             # <<<<<<<<<<<<<<
 *         free_fn: Callable[..., None] | None = None,
 *         cancel_fn: Callable[..., None] | None = None,
*/
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "src/mpi4py/MPI.src/Request.pyx":559
 *         cls,
 *         query_fn: Callable[..., None] | None = None,
 *         free_fn: Callable[..., None] | None = None,             # <<<<<<<<<<<<<<
 *         cancel_fn: Callable[..., None] | None = None,
 *         args: tuple[Any] | None = None,
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "src/mpi4py/MPI.src/Request.pyx":560
 *         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,
*/
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "src/mpi4py/MPI.src/Request.pyx":561
 *         free_fn: Callable[..., None] | None = None,
 *         cancel_fn: Callable[..., None] | None = None,
 *         args: tuple[Any] | None = None,             # <<<<<<<<<<<<<<
 *         kwargs: dict[str, Any] | None = None,
 *     ) -> Grequest:
*/
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "src/mpi4py/MPI.src/Request.pyx":562
 *         cancel_fn: Callable[..., None] | None = None,
 *         args: tuple[Any] | None = None,
 *         kwargs: dict[str, Any] | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Grequest:
 *         """
*/
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __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(26, 555, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":555
 *         <void>(<Grequest?>request)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Start(
 *         cls,
*/

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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;
  size_t __pyx_t_3;
  int __pyx_t_4;
  MPI_Request __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Start", 0);

  /* "src/mpi4py/MPI.src/Request.pyx":567
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Grequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 567, __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":568
 *         """
 *         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_1 = NULL;

  /* "src/mpi4py/MPI.src/Request.pyx":569
 *         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(
 *             greq_query_fn, greq_free_fn, greq_cancel_fn,
*/
  __pyx_t_3 = 1;
  {
    PyObject *__pyx_callargs[6] = {__pyx_t_1, __pyx_v_query_fn, __pyx_v_free_fn, __pyx_v_cancel_fn, __pyx_v_args, __pyx_v_kwargs};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_greq, __pyx_callargs+__pyx_t_3, (6-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 568, __pyx_L1_error)
    __Pyx_GOTREF((PyObject *)__pyx_t_2);
  }
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":570
 *         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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Request.pyx":572
 *         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_4 = __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_4 == ((int)-1))) __PYX_ERR(26, 570, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Request.pyx":570
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Request.pyx":573
 *             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":574
 *             <void*>state, &request.ob_mpi) )
 *         Py_INCREF(state)
 *         request.ob_grequest = request.ob_mpi             # <<<<<<<<<<<<<<
 *         return request
 * 
*/
  __pyx_t_5 = __pyx_v_request->__pyx_base.ob_mpi;
  __pyx_v_request->ob_grequest = __pyx_t_5;

  /* "src/mpi4py/MPI.src/Request.pyx":575
 *         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":555
 *         <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":577
 *         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\nNotify that a user-defined request is complete.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Grequest_5Complete = {"Complete", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Complete", __pyx_kwds); 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;
  size_t __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", 0);

  /* "src/mpi4py/MPI.src/Request.pyx":581
 *         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":582
 *         """
 *         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":583
 *         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 = NULL;
      __Pyx_INCREF(__pyx_v_6mpi4py_3MPI_MPIException);
      __pyx_t_4 = __pyx_v_6mpi4py_3MPI_MPIException; 
      __pyx_t_5 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_REQUEST); if (unlikely(!__pyx_t_5)) __PYX_ERR(26, 583, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
        assert(__pyx_t_3);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
        __pyx_t_6 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_5};
        __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 583, __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(26, 583, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/Request.pyx":582
 *         """
 *         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":581
 *         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":584
 *             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":585
 *                 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":586
 *         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 ??
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {
        __pyx_t_8 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Grequest_complete(__pyx_v_grequest)); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(26, 586, __pyx_L6_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L7;
        }
        __pyx_L6_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L7:;
      }
  }

  /* "src/mpi4py/MPI.src/Request.pyx":587
 *         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":577
 *         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":589
 *         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\nNotify that a user-defined request is complete.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Grequest_7complete = {"complete", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_obj,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(26, 589, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 589, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "complete", 0) < (0)) __PYX_ERR(26, 589, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(26, 589, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __pyx_v_obj = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("complete", 0, 0, 1, __pyx_nargs); __PYX_ERR(26, 589, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("complete", 0);

  /* "src/mpi4py/MPI.src/Request.pyx":593
 *         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(26, 593, __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":594
 *         """
 *         self.ob_buf = PyMPI_wrap_object(obj)
 *         Grequest.Complete(self)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_2 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Grequest);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)__pyx_v_self)};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Complete, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 594, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":589
 *         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_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_SIZE
  __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 ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_message,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(27, 6, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(27, 6, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < (0)) __PYX_ERR(27, 6, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIMessageObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(27, 6, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIMessageObject *)Py_None));
    }
    __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(27, 6, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message, 1, "message", 0))) __PYX_ERR(27, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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(27, 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(27, 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__", 0);

  /* "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_mstate_global->__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(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/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(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce__", __pyx_kwds); 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__", 0);

  /* "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(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/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__", 0);

  /* "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_PyLong_FromSize_t(__pyx_fuse_2__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/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\nCreate object from MPI handle.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Message_11fromhandle = {"fromhandle", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_handle,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(27, 27, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(27, 27, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "fromhandle", 0) < (0)) __PYX_ERR(27, 27, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("fromhandle", 1, 1, 1, i); __PYX_ERR(27, 27, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(27, 27, __pyx_L3_error)
    }
    __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:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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_PyLong_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_2__pyx_f_6mpi4py_3MPI_fromhandle(((MPI_Message)((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/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\nDo nothing.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Message_13free = {"free", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("free", __pyx_kwds); 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", 0);

  /* "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(27, 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\nBlocking test for a matched message.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Message_15Probe = {"Probe", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_comm,&__pyx_mstate_global->__pyx_n_u_source,&__pyx_mstate_global->__pyx_n_u_tag,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(27, 43, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(27, 43, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(27, 43, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(27, 43, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(27, 43, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Probe", 0) < (0)) __PYX_ERR(27, 43, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Message.pyx":49
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Self:
 *         """
*/
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Probe", 0, 1, 4, i); __PYX_ERR(27, 43, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(27, 43, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(27, 43, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(27, 43, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(27, 43, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __pyx_v_comm = ((struct PyMPICommObject *)values[0]);
    if (values[1]) {
      __pyx_v_source = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(27, 47, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_mstate_global->__pyx_k__10;
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(27, 48, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_mstate_global->__pyx_k__11;
    }
    __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(27, 43, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, 0, "comm", 0))) __PYX_ERR(27, 46, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(27, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(27, 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)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(27, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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(27, 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\nNonblocking test for a matched message.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Message_17Iprobe = {"Iprobe", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_comm,&__pyx_mstate_global->__pyx_n_u_source,&__pyx_mstate_global->__pyx_n_u_tag,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(27, 62, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(27, 62, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(27, 62, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(27, 62, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(27, 62, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Iprobe", 0) < (0)) __PYX_ERR(27, 62, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Message.pyx":68
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Self | None:
 *         """
*/
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Iprobe", 0, 1, 4, i); __PYX_ERR(27, 62, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(27, 62, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(27, 62, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(27, 62, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(27, 62, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __pyx_v_comm = ((struct PyMPICommObject *)values[0]);
    if (values[1]) {
      __pyx_v_source = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(27, 66, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_mstate_global->__pyx_k__12;
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(27, 67, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_mstate_global->__pyx_k__13;
    }
    __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(27, 62, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, 0, "comm", 0))) __PYX_ERR(27, 65, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(27, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(27, 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
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(27, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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(27, 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\nBlocking receive of matched message.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Message_19Recv = {"Recv", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(27, 86, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(27, 86, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(27, 86, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Recv", 0) < (0)) __PYX_ERR(27, 86, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Message.pyx":89
 *         self,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Recv", 0, 1, 2, i); __PYX_ERR(27, 86, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(27, 86, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(27, 86, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __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(27, 86, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(27, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(27, 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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(27, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(27, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nNonblocking receive of matched message.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Message_21Irecv = {"Irecv", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(27, 106, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(27, 106, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Irecv", 0) < (0)) __PYX_ERR(27, 106, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Irecv", 1, 1, 1, i); __PYX_ERR(27, 106, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(27, 106, __pyx_L3_error)
    }
    __pyx_v_buf = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Irecv", 1, 1, 1, __pyx_nargs); __PYX_ERR(27, 106, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(27, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(27, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nBlocking test for a matched message.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Message_23probe = {"probe", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_comm,&__pyx_mstate_global->__pyx_n_u_source,&__pyx_mstate_global->__pyx_n_u_tag,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(27, 127, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(27, 127, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(27, 127, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(27, 127, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(27, 127, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "probe", 0) < (0)) __PYX_ERR(27, 127, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Message.pyx":133
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Self:
 *         """
*/
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("probe", 0, 1, 4, i); __PYX_ERR(27, 127, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(27, 127, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(27, 127, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(27, 127, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(27, 127, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __pyx_v_comm = ((struct PyMPICommObject *)values[0]);
    if (values[1]) {
      __pyx_v_source = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(27, 131, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_mstate_global->__pyx_k__14;
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(27, 132, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_mstate_global->__pyx_k__15;
    }
    __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(27, 127, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, 0, "comm", 0))) __PYX_ERR(27, 130, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(27, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(27, 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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(27, 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(27, 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\nNonblocking test for a matched message.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Message_25iprobe = {"iprobe", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_comm,&__pyx_mstate_global->__pyx_n_u_source,&__pyx_mstate_global->__pyx_n_u_tag,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(27, 144, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(27, 144, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(27, 144, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(27, 144, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(27, 144, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "iprobe", 0) < (0)) __PYX_ERR(27, 144, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Message.pyx":150
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Self | None:
 *         """
*/
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("iprobe", 0, 1, 4, i); __PYX_ERR(27, 144, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(27, 144, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(27, 144, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(27, 144, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(27, 144, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __pyx_v_comm = ((struct PyMPICommObject *)values[0]);
    if (values[1]) {
      __pyx_v_source = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(27, 148, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_mstate_global->__pyx_k__16;
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(27, 149, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_mstate_global->__pyx_k__17;
    }
    __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(27, 144, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, 0, "comm", 0))) __PYX_ERR(27, 147, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(27, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(27, 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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(27, 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(27, 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\nBlocking receive of matched message.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Message_27recv = {"recv", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(27, 163, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(27, 163, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "recv", 0) < (0)) __PYX_ERR(27, 163, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(27, 163, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __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(27, 163, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(27, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(27, 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(27, 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\nNonblocking receive of matched message.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Message_29irecv = {"irecv", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("irecv", __pyx_kwds); 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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 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(27, 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             # <<<<<<<<<<<<<<
 * 
 *     # Integer 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 toint(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate object to integer handle.
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_31toint(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_30toint, "toint(self) -> int\n\nTranslate object to integer handle.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Message_31toint = {"toint", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_31toint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_30toint};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_31toint(PyObject *__pyx_v_self, 
#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("toint (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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("toint", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("toint", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Message_30toint(((struct PyMPIMessageObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_30toint(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("toint", 0);

  /* "src/mpi4py/MPI.src/Message.pyx":194
 *         Translate object to integer handle.
 *         """
 *         return MPI_Message_toint(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_int(MPI_Message_toint(__pyx_v_self->ob_mpi)); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 194, __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 toint(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate object to integer handle.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Message.toint", __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":196
 *         return MPI_Message_toint(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromint(cls, arg: int, /) -> Message:
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_33fromint(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Message_32fromint, "fromint(cls, arg: int, /) -> Message\n\nTranslate integer handle to object.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Message_33fromint = {"fromint", (PyCFunction)__pyx_pw_6mpi4py_3MPI_7Message_33fromint, METH_O, __pyx_doc_6mpi4py_3MPI_7Message_32fromint};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_33fromint(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fromint (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Message_32fromint(((PyTypeObject*)__pyx_v_cls), ((PyObject *)__pyx_v_arg));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_32fromint(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, 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("fromint", 0);

  /* "src/mpi4py/MPI.src/Message.pyx":201
 *         Translate integer handle to object.
 *         """
 *         return fromhandle(MPI_Message_fromint(arg))             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_As_int(__pyx_v_arg); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(27, 201, __pyx_L1_error)
  __pyx_t_2 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Message_fromint(__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 201, __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":196
 *         return MPI_Message_toint(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromint(cls, arg: int, /) -> Message:
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Message.fromint", __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":206
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_35py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_34py2f, "py2f(self) -> int\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Message_35py2f = {"py2f", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_35py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_34py2f};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_35py2f(PyObject *__pyx_v_self, 
#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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("py2f", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Message_34py2f(((struct PyMPIMessageObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_34py2f(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", 0);

  /* "src/mpi4py/MPI.src/Message.pyx":209
 *         """
 *         """
 *         return MPI_Message_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_MPI_Fint(MPI_Message_c2f(__pyx_v_self->ob_mpi)); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 209, __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":206
 *     # --------------
 * 
 *     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":211
 *         return MPI_Message_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Message:
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_37f2py(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_36f2py, "f2py(cls, arg: int) -> Message\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Message_37f2py = {"f2py", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_37f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_36f2py};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_37f2py(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_arg,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(27, 211, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(27, 211, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "f2py", 0) < (0)) __PYX_ERR(27, 211, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, i); __PYX_ERR(27, 211, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(27, 211, __pyx_L3_error)
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, __pyx_nargs); __PYX_ERR(27, 211, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_36f2py(((PyTypeObject*)__pyx_v_cls), __pyx_v_arg);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_36f2py(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", 0);

  /* "src/mpi4py/MPI.src/Message.pyx":215
 *         """
 *         """
 *         return fromhandle(MPI_Message_f2c(arg))             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_As_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_1 == ((MPI_Fint)-1)) && PyErr_Occurred())) __PYX_ERR(27, 215, __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(27, 215, __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":211
 *         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_SIZE
  __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 ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_op,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(28, 6, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(28, 6, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < (0)) __PYX_ERR(28, 6, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIOpObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(28, 6, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIOpObject *)Py_None));
    }
    __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(28, 6, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, 1, "op", 0))) __PYX_ERR(28, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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(28, 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(28, 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__", 0);

  /* "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_mstate_global->__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(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/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(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce__", __pyx_kwds); 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__", 0);

  /* "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(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/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_SIZE
  __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 ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_y,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(28, 22, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(28, 22, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(28, 22, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__call__", 0) < (0)) __PYX_ERR(28, 22, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__call__", 1, 2, 2, i); __PYX_ERR(28, 22, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(28, 22, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(28, 22, __pyx_L3_error)
    }
    __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(28, 22, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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__", 0);

  /* "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(28, 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__", 0);

  /* "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_PyLong_FromSize_t(__pyx_fuse_3__pyx_f_6mpi4py_3MPI_tohandle(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 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\nCreate object from MPI handle.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_2Op_13fromhandle = {"fromhandle", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_handle,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(28, 31, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(28, 31, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "fromhandle", 0) < (0)) __PYX_ERR(28, 31, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("fromhandle", 1, 1, 1, i); __PYX_ERR(28, 31, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(28, 31, __pyx_L3_error)
    }
    __pyx_v_handle = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fromhandle", 1, 1, 1, __pyx_nargs); __PYX_ERR(28, 31, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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_PyLong_As_size_t(__pyx_v_handle); if (unlikely((__pyx_t_1 == ((Py_uintptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(28, 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(28, 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\nCall `Free` if not null or predefined.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_2Op_15free = {"free", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("free", __pyx_kwds); 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", 0);

  /* "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(28, 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\nCreate a user-defined reduction operation.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_2Op_17Create = {"Create", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_function,&__pyx_mstate_global->__pyx_n_u_commute,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(28, 47, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(28, 47, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(28, 47, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create", 0) < (0)) __PYX_ERR(28, 47, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Create", 0, 1, 2, i); __PYX_ERR(28, 47, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(28, 47, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(28, 47, __pyx_L3_error)
        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(28, 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(28, 47, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(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_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(28, 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(28, 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(((PyObject *)(((PyTypeObject*)PyExc_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(28, 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(28, 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(28, 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(28, 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(28, 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\nFree a user-defined reduction operation.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_2Op_19Free = {"Free", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Free", __pyx_kwds); 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) {
  MPI_Op __pyx_v_save;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Op __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("Free", 0);

  /* "src/mpi4py/MPI.src/Op.pyx":74
 *         Free a user-defined reduction operation.
 *         """
 *         cdef MPI_Op save = self.ob_mpi             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Op_free(&self.ob_mpi) )
 *         if constobj(self): self.ob_mpi = save
*/
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_save = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Op.pyx":75
 *         """
 *         cdef MPI_Op save = self.ob_mpi
 *         CHKERR( MPI_Op_free(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 *         if constobj(self): self.ob_mpi = save
 *         op_user_del(self)
*/
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Op_free((&__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(28, 75, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":76
 *         cdef MPI_Op save = self.ob_mpi
 *         CHKERR( MPI_Op_free(&self.ob_mpi) )
 *         if constobj(self): self.ob_mpi = save             # <<<<<<<<<<<<<<
 *         op_user_del(self)
 * 
*/
  __pyx_t_3 = (__pyx_fuse_3__pyx_f_6mpi4py_3MPI_constobj(__pyx_v_self) != 0);
  if (__pyx_t_3) {
    __pyx_v_self->ob_mpi = __pyx_v_save;
  }

  /* "src/mpi4py/MPI.src/Op.pyx":77
 *         CHKERR( MPI_Op_free(&self.ob_mpi) )
 *         if constobj(self): self.ob_mpi = save
 *         op_user_del(self)             # <<<<<<<<<<<<<<
 * 
 *     # Process-local reduction
*/
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_op_user_del(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(28, 77, __pyx_L1_error)

  /* "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":82
 *     # -----------------------
 * 
 *     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\nQuery reduction operations for their commutativity.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_2Op_21Is_commutative = {"Is_commutative", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Is_commutative", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Op.pyx":86
 *         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":87
 *         """
 *         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(28, 87, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":88
 *         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(28, 88, __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":82
 *     # -----------------------
 * 
 *     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":92
 *     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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/mpi4py/MPI.src/Op.pyx":93
 *         """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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Is_commutative, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 93, __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":92
 *     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_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":95
 *             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\nApply a reduction operation to local data.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_2Op_23Reduce_local = {"Reduce_local", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_inbuf,&__pyx_mstate_global->__pyx_n_u_inoutbuf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(28, 95, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(28, 95, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(28, 95, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Reduce_local", 0) < (0)) __PYX_ERR(28, 95, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Reduce_local", 1, 2, 2, i); __PYX_ERR(28, 95, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(28, 95, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(28, 95, __pyx_L3_error)
    }
    __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(28, 95, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Op.pyx":100
 *         """
 *         # 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(28, 100, __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":101
 *         # 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(28, 101, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":102
 *         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(28, 102, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":103
 *         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(28, 103, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":105
 *         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) )
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Op.pyx":106
 *         # 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(28, 105, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Op.pyx":105
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Op.pyx":95
 *             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":110
 *     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__", 0);

  /* "src/mpi4py/MPI.src/Op.pyx":111
 *         """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":112
 *         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":113
 *             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(28, 113, __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":114
 *             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(28, 114, __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":115
 *                 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(28, 115, __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":116
 *                 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(28, 116, __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":117
 *                 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(28, 117, __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":118
 *                 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(28, 118, __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":119
 *                 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(28, 119, __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":120
 *                 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(28, 120, __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":121
 *                 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(28, 121, __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":122
 *                 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(28, 122, __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":123
 *                 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(28, 123, __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":124
 *                 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(28, 124, __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":125
 *                 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(28, 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
 *                 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(28, 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_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(28, 127, __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":110
 *     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":133
 *     # --------------
 * 
 *     def toint(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate object to integer handle.
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_25toint(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_24toint, "toint(self) -> int\n\nTranslate object to integer handle.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_2Op_25toint = {"toint", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_2Op_25toint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_2Op_24toint};
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_25toint(PyObject *__pyx_v_self, 
#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("toint (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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("toint", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("toint", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_2Op_24toint(((struct PyMPIOpObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_24toint(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("toint", 0);

  /* "src/mpi4py/MPI.src/Op.pyx":137
 *         Translate object to integer handle.
 *         """
 *         return MPI_Op_toint(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_int(MPI_Op_toint(__pyx_v_self->ob_mpi)); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 137, __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":133
 *     # --------------
 * 
 *     def toint(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate object to integer handle.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Op.toint", __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":139
 *         return MPI_Op_toint(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromint(cls, arg: int, /) -> Op:
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_27fromint(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_2Op_26fromint, "fromint(cls, arg: int, /) -> Op\n\nTranslate integer handle to object.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_2Op_27fromint = {"fromint", (PyCFunction)__pyx_pw_6mpi4py_3MPI_2Op_27fromint, METH_O, __pyx_doc_6mpi4py_3MPI_2Op_26fromint};
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_27fromint(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fromint (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_2Op_26fromint(((PyTypeObject*)__pyx_v_cls), ((PyObject *)__pyx_v_arg));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_26fromint(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, 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("fromint", 0);

  /* "src/mpi4py/MPI.src/Op.pyx":144
 *         Translate integer handle to object.
 *         """
 *         return fromhandle(MPI_Op_fromint(arg))             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_As_int(__pyx_v_arg); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(28, 144, __pyx_L1_error)
  __pyx_t_2 = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Op_fromint(__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 144, __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":139
 *         return MPI_Op_toint(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromint(cls, arg: int, /) -> Op:
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Op.fromint", __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":149
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_29py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_28py2f, "py2f(self) -> int\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_2Op_29py2f = {"py2f", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_2Op_29py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_2Op_28py2f};
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_29py2f(PyObject *__pyx_v_self, 
#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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("py2f", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_2Op_28py2f(((struct PyMPIOpObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_28py2f(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", 0);

  /* "src/mpi4py/MPI.src/Op.pyx":152
 *         """
 *         """
 *         return MPI_Op_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_MPI_Fint(MPI_Op_c2f(__pyx_v_self->ob_mpi)); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 152, __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":149
 *     # --------------
 * 
 *     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":154
 *         return MPI_Op_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Op:
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_31f2py(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_30f2py, "f2py(cls, arg: int) -> Op\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_2Op_31f2py = {"f2py", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_2Op_31f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_2Op_30f2py};
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_31f2py(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_arg,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(28, 154, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(28, 154, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "f2py", 0) < (0)) __PYX_ERR(28, 154, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, i); __PYX_ERR(28, 154, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(28, 154, __pyx_L3_error)
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, __pyx_nargs); __PYX_ERR(28, 154, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_30f2py(((PyTypeObject*)__pyx_v_cls), __pyx_v_arg);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_30f2py(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", 0);

  /* "src/mpi4py/MPI.src/Op.pyx":158
 *         """
 *         """
 *         return fromhandle(MPI_Op_f2c(arg))             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_As_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_1 == ((MPI_Fint)-1)) && PyErr_Occurred())) __PYX_ERR(28, 158, __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(28, 158, __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":154
 *         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_SIZE
  __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 ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_group,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(29, 6, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(29, 6, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < (0)) __PYX_ERR(29, 6, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIGroupObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(29, 6, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIGroupObject *)Py_None));
    }
    __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(29, 6, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, 1, "group", 0))) __PYX_ERR(29, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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(29, 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(29, 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__", 0);

  /* "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_mstate_global->__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(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/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(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce__", __pyx_kwds); 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__", 0);

  /* "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(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/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__", 0);

  /* "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_PyLong_FromSize_t(__pyx_fuse_4__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/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\nCreate object from MPI handle.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_11fromhandle = {"fromhandle", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_handle,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(29, 27, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(29, 27, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "fromhandle", 0) < (0)) __PYX_ERR(29, 27, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("fromhandle", 1, 1, 1, i); __PYX_ERR(29, 27, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(29, 27, __pyx_L3_error)
    }
    __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:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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_PyLong_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_4__pyx_f_6mpi4py_3MPI_fromhandle(((MPI_Group)((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/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\nCall `Free` if not null or predefined.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_13free = {"free", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("free", __pyx_kwds); 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", 0);

  /* "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(29, 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\nReturn the number of processes in a group.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_15Get_size = {"Get_size", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_size", __pyx_kwds); 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", 0);

  /* "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(29, 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_PyLong_From_int(__pyx_v_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_size, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 54, __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":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_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\nReturn the rank of this process in a group.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_17Get_rank = {"Get_rank", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_rank", __pyx_kwds); 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", 0);

  /* "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(29, 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_PyLong_From_int(__pyx_v_rank); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_rank, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 67, __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":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_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\nTranslate ranks in a group to those in another group.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_19Translate_ranks = {"Translate_ranks", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_ranks,&__pyx_mstate_global->__pyx_n_u_group,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(29, 69, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(29, 69, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(29, 69, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Translate_ranks", 0) < (0)) __PYX_ERR(29, 69, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Group.pyx":71
 *     def Translate_ranks(
 *         self,
 *         ranks: Sequence[int] | None = None,             # <<<<<<<<<<<<<<
 *         Group group: Group | None = None,
 *     ) -> list[int]:
*/
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "src/mpi4py/MPI.src/Group.pyx":72
 *         self,
 *         ranks: Sequence[int] | None = None,
 *         Group group: Group | None = None,             # <<<<<<<<<<<<<<
 *     ) -> list[int]:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIGroupObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(29, 69, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(29, 69, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }

      /* "src/mpi4py/MPI.src/Group.pyx":71
 *     def Translate_ranks(
 *         self,
 *         ranks: Sequence[int] | None = None,             # <<<<<<<<<<<<<<
 *         Group group: Group | None = None,
 *     ) -> list[int]:
*/
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "src/mpi4py/MPI.src/Group.pyx":72
 *         self,
 *         ranks: Sequence[int] | None = None,
 *         Group group: Group | None = None,             # <<<<<<<<<<<<<<
 *     ) -> list[int]:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIGroupObject *)Py_None));
    }
    __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(29, 69, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, 1, "group", 0))) __PYX_ERR(29, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(29, 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(29, 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(29, 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(29, 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(29, 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(29, 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(29, 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;
       __Pyx_ExceptionSwap(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
      if ( 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(29, 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) )
 *         #
*/
        }
      }
      __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:;
      __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(29, 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_PyLong_From_int((__pyx_v_iranks2[__pyx_8genexpr8__pyx_v_i])); if (unlikely(!__pyx_t_14)) __PYX_ERR(29, 102, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_14))) __PYX_ERR(29, 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\nCompare two groups.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_21Compare = {"Compare", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_group,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(29, 105, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(29, 105, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Compare", 0) < (0)) __PYX_ERR(29, 105, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Compare", 1, 1, 1, i); __PYX_ERR(29, 105, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(29, 105, __pyx_L3_error)
    }
    __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(29, 105, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, 0, "group", 0))) __PYX_ERR(29, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(29, 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_PyLong_From_int(__pyx_v_flag); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 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\nDuplicate a group.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_23Dup = {"Dup", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Dup", __pyx_kwds); 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", 0);

  /* "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(29, 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(29, 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\nCreate a new group from the union of two existing groups.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_25Union = {"Union", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_group1,&__pyx_mstate_global->__pyx_n_u_group2,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(29, 125, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(29, 125, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(29, 125, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Union", 0) < (0)) __PYX_ERR(29, 125, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Union", 1, 2, 2, i); __PYX_ERR(29, 125, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(29, 125, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(29, 125, __pyx_L3_error)
    }
    __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(29, 125, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, 0, "group1", 0))) __PYX_ERR(29, 126, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group2), __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, 0, "group2", 0))) __PYX_ERR(29, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(29, 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(29, 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\nCreate a new group from the intersection of two existing groups.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_27Intersection = {"Intersection", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_group1,&__pyx_mstate_global->__pyx_n_u_group2,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(29, 135, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(29, 135, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(29, 135, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Intersection", 0) < (0)) __PYX_ERR(29, 135, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Intersection", 1, 2, 2, i); __PYX_ERR(29, 135, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(29, 135, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(29, 135, __pyx_L3_error)
    }
    __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(29, 135, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, 0, "group1", 0))) __PYX_ERR(29, 136, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group2), __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, 0, "group2", 0))) __PYX_ERR(29, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(29, 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(29, 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\nCreate a new group from the difference of two existing groups.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_29Difference = {"Difference", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_group1,&__pyx_mstate_global->__pyx_n_u_group2,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(29, 147, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(29, 147, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(29, 147, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Difference", 0) < (0)) __PYX_ERR(29, 147, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Difference", 1, 2, 2, i); __PYX_ERR(29, 147, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(29, 147, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(29, 147, __pyx_L3_error)
    }
    __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(29, 147, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, 0, "group1", 0))) __PYX_ERR(29, 148, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group2), __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, 0, "group2", 0))) __PYX_ERR(29, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(29, 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(29, 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\nCreate a new group by including listed members.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_31Incl = {"Incl", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_ranks,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(29, 157, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(29, 157, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Incl", 0) < (0)) __PYX_ERR(29, 157, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Incl", 1, 1, 1, i); __PYX_ERR(29, 157, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(29, 157, __pyx_L3_error)
    }
    __pyx_v_ranks = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Incl", 1, 1, 1, __pyx_nargs); __PYX_ERR(29, 157, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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(29, 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(29, 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(29, 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\nCreate a new group by excluding listed members.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_33Excl = {"Excl", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_ranks,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(29, 167, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(29, 167, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Excl", 0) < (0)) __PYX_ERR(29, 167, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Excl", 1, 1, 1, i); __PYX_ERR(29, 167, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(29, 167, __pyx_L3_error)
    }
    __pyx_v_ranks = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Excl", 1, 1, 1, __pyx_nargs); __PYX_ERR(29, 167, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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(29, 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(29, 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(29, 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\nCreate a new group by including ranges of members.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_35Range_incl = {"Range_incl", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_ranks,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(29, 177, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(29, 177, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Range_incl", 0) < (0)) __PYX_ERR(29, 177, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Range_incl", 1, 1, 1, i); __PYX_ERR(29, 177, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(29, 177, __pyx_L3_error)
    }
    __pyx_v_ranks = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Range_incl", 1, 1, 1, __pyx_nargs); __PYX_ERR(29, 177, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(29, 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(29, 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_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 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(29, 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_INCREF(__pyx_t_6);
        __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1);
        __Pyx_INCREF(__pyx_t_7);
        __pyx_t_8 = PyTuple_GET_ITEM(sequence, 2);
        __Pyx_INCREF(__pyx_t_8);
      } else {
        __pyx_t_6 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_6)) __PYX_ERR(29, 187, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_6);
        __pyx_t_7 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_7)) __PYX_ERR(29, 187, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_7);
        __pyx_t_8 = __Pyx_PyList_GetItemRefFast(sequence, 2, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_8)) __PYX_ERR(29, 187, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_8);
      }
      #else
      __pyx_t_6 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(29, 187, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(29, 187, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = __Pyx_PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_8)) __PYX_ERR(29, 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(29, 187, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_10 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __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(29, 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(29, 187, __pyx_L1_error)
      __pyx_L6_unpacking_done:;
    }
    __pyx_t_11 = __Pyx_PyLong_As_int(__pyx_t_6); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(29, 187, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_12 = __Pyx_PyLong_As_int(__pyx_t_7); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(29, 187, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_13 = __Pyx_PyLong_As_int(__pyx_t_8); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(29, 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(29, 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(29, 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\nCreate a new group by excluding ranges of members.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_37Range_excl = {"Range_excl", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_ranks,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(29, 192, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(29, 192, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Range_excl", 0) < (0)) __PYX_ERR(29, 192, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Range_excl", 1, 1, 1, i); __PYX_ERR(29, 192, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(29, 192, __pyx_L3_error)
    }
    __pyx_v_ranks = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Range_excl", 1, 1, 1, __pyx_nargs); __PYX_ERR(29, 192, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(29, 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(29, 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_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 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(29, 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_INCREF(__pyx_t_6);
        __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1);
        __Pyx_INCREF(__pyx_t_7);
        __pyx_t_8 = PyTuple_GET_ITEM(sequence, 2);
        __Pyx_INCREF(__pyx_t_8);
      } else {
        __pyx_t_6 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_6)) __PYX_ERR(29, 202, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_6);
        __pyx_t_7 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_7)) __PYX_ERR(29, 202, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_7);
        __pyx_t_8 = __Pyx_PyList_GetItemRefFast(sequence, 2, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_8)) __PYX_ERR(29, 202, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_8);
      }
      #else
      __pyx_t_6 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(29, 202, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(29, 202, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = __Pyx_PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_8)) __PYX_ERR(29, 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(29, 202, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_10 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __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(29, 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(29, 202, __pyx_L1_error)
      __pyx_L6_unpacking_done:;
    }
    __pyx_t_11 = __Pyx_PyLong_As_int(__pyx_t_6); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(29, 202, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_12 = __Pyx_PyLong_As_int(__pyx_t_7); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(29, 202, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_13 = __Pyx_PyLong_As_int(__pyx_t_8); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(29, 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(29, 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(29, 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\nCreate a new group from session and process set.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_39Create_from_session_pset = {"Create_from_session_pset", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_session,&__pyx_mstate_global->__pyx_n_u_pset_name,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(29, 207, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(29, 207, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(29, 207, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create_from_session_pset", 0) < (0)) __PYX_ERR(29, 207, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Create_from_session_pset", 1, 2, 2, i); __PYX_ERR(29, 207, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(29, 207, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(29, 207, __pyx_L3_error)
    }
    __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(29, 207, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, 0, "session", 0))) __PYX_ERR(29, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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(29, 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(29, 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(29, 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\nFree a group.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_41Free = {"Free", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Free", __pyx_kwds); 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) {
  MPI_Group __pyx_v_save;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Group __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("Free", 0);

  /* "src/mpi4py/MPI.src/Group.pyx":230
 *         Free a group.
 *         """
 *         cdef MPI_Group save = self.ob_mpi             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Group_free(&self.ob_mpi) )
 *         if constobj(self): self.ob_mpi = save
*/
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_save = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Group.pyx":231
 *         """
 *         cdef MPI_Group save = self.ob_mpi
 *         CHKERR( MPI_Group_free(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 *         if constobj(self): self.ob_mpi = save
 * 
*/
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_free((&__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(29, 231, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":232
 *         cdef MPI_Group save = self.ob_mpi
 *         CHKERR( MPI_Group_free(&self.ob_mpi) )
 *         if constobj(self): self.ob_mpi = save             # <<<<<<<<<<<<<<
 * 
 *     # Integer Handle
*/
  __pyx_t_3 = (__pyx_fuse_4__pyx_f_6mpi4py_3MPI_constobj(__pyx_v_self) != 0);
  if (__pyx_t_3) {
    __pyx_v_self->ob_mpi = __pyx_v_save;
  }

  /* "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":237
 *     # --------------
 * 
 *     def toint(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate object to integer handle.
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_43toint(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_42toint, "toint(self) -> int\n\nTranslate object to integer handle.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_43toint = {"toint", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_43toint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_42toint};
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_43toint(PyObject *__pyx_v_self, 
#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("toint (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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("toint", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("toint", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_5Group_42toint(((struct PyMPIGroupObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_42toint(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("toint", 0);

  /* "src/mpi4py/MPI.src/Group.pyx":241
 *         Translate object to integer handle.
 *         """
 *         return MPI_Group_toint(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_int(MPI_Group_toint(__pyx_v_self->ob_mpi)); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 241, __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":237
 *     # --------------
 * 
 *     def toint(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate object to integer handle.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Group.toint", __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":243
 *         return MPI_Group_toint(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromint(cls, arg: int, /) -> Group:
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_45fromint(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_5Group_44fromint, "fromint(cls, arg: int, /) -> Group\n\nTranslate integer handle to object.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_45fromint = {"fromint", (PyCFunction)__pyx_pw_6mpi4py_3MPI_5Group_45fromint, METH_O, __pyx_doc_6mpi4py_3MPI_5Group_44fromint};
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_45fromint(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fromint (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_5Group_44fromint(((PyTypeObject*)__pyx_v_cls), ((PyObject *)__pyx_v_arg));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_44fromint(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, 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("fromint", 0);

  /* "src/mpi4py/MPI.src/Group.pyx":248
 *         Translate integer handle to object.
 *         """
 *         return fromhandle(MPI_Group_fromint(arg))             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_As_int(__pyx_v_arg); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(29, 248, __pyx_L1_error)
  __pyx_t_2 = __pyx_fuse_4__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Group_fromint(__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 248, __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":243
 *         return MPI_Group_toint(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromint(cls, arg: int, /) -> Group:
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Group.fromint", __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":253
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_47py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_46py2f, "py2f(self) -> int\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_47py2f = {"py2f", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_47py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_46py2f};
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_47py2f(PyObject *__pyx_v_self, 
#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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("py2f", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_5Group_46py2f(((struct PyMPIGroupObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_46py2f(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", 0);

  /* "src/mpi4py/MPI.src/Group.pyx":256
 *         """
 *         """
 *         return MPI_Group_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_MPI_Fint(MPI_Group_c2f(__pyx_v_self->ob_mpi)); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 256, __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":253
 *     # --------------
 * 
 *     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":258
 *         return MPI_Group_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Group:
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_49f2py(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_48f2py, "f2py(cls, arg: int) -> Group\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_49f2py = {"f2py", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_49f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_48f2py};
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_49f2py(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_arg,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(29, 258, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(29, 258, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "f2py", 0) < (0)) __PYX_ERR(29, 258, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, i); __PYX_ERR(29, 258, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(29, 258, __pyx_L3_error)
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, __pyx_nargs); __PYX_ERR(29, 258, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_48f2py(((PyTypeObject*)__pyx_v_cls), __pyx_v_arg);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_48f2py(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", 0);

  /* "src/mpi4py/MPI.src/Group.pyx":262
 *         """
 *         """
 *         return fromhandle(MPI_Group_f2c(arg))             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_As_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_1 == ((MPI_Fint)-1)) && PyErr_Occurred())) __PYX_ERR(29, 262, __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(29, 262, __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":258
 *         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_SIZE
  __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 ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(30, 6, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(30, 6, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < (0)) __PYX_ERR(30, 6, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIInfoObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(30, 6, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIInfoObject *)Py_None));
    }
    __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(30, 6, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 1, "info", 0))) __PYX_ERR(30, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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(30, 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(30, 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__", 0);

  /* "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_mstate_global->__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(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/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(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce__", __pyx_kwds); 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__", 0);

  /* "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(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/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__", 0);

  /* "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_PyLong_FromSize_t(__pyx_fuse_5__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/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\nCreate object from MPI handle.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_11fromhandle = {"fromhandle", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_handle,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(30, 27, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(30, 27, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "fromhandle", 0) < (0)) __PYX_ERR(30, 27, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("fromhandle", 1, 1, 1, i); __PYX_ERR(30, 27, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(30, 27, __pyx_L3_error)
    }
    __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:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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_PyLong_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_5__pyx_f_6mpi4py_3MPI_fromhandle(((MPI_Info)((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/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\nCall `Free` if not null or predefined.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_13free = {"free", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("free", __pyx_kwds); 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", 0);

  /* "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(30, 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\nCreate a new info object.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_15Create = {"Create", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_items,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(30, 43, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(30, 43, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create", 0) < (0)) __PYX_ERR(30, 43, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Info.pyx":51
 *             Iterable[tuple[str, str]] |
 *             None
 *         ) = None,             # <<<<<<<<<<<<<<
 *     ) -> Self:
 *         """
*/
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(30, 43, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __pyx_v_items = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create", 0, 0, 1, __pyx_nargs); __PYX_ERR(30, 43, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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;
  size_t __pyx_t_13;
  PyObject *(*__pyx_t_14)(PyObject *);
  PyObject *__pyx_t_15 = NULL;
  PyObject *(*__pyx_t_16)(PyObject *);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create", 0);

  /* "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(30, 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(30, 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_mstate_global->__pyx_n_u_keys); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(30, 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(30, 62, __pyx_L4_error)
        }
        __pyx_t_1 = __Pyx_dict_iterator(__pyx_v_items, 0, __pyx_mstate_global->__pyx_n_u_keys, (&__pyx_t_9), (&__pyx_t_3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 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(30, 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 = ((PyObject *)__pyx_v_info);
          __Pyx_INCREF(__pyx_t_11);
          __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_v_items, __pyx_v_key); if (unlikely(!__pyx_t_12)) __PYX_ERR(30, 63, __pyx_L4_error)
          __Pyx_GOTREF(__pyx_t_12);
          __pyx_t_13 = 0;
          {
            PyObject *__pyx_callargs[3] = {__pyx_t_11, __pyx_v_key, __pyx_t_12};
            __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Set, __pyx_callargs+__pyx_t_13, (3-__pyx_t_13) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
            if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 63, __pyx_L4_error)
            __Pyx_GOTREF(__pyx_t_1);
          }
          __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_14 = NULL;
        } else {
          __pyx_t_9 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_items); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 65, __pyx_L4_error)
          __Pyx_GOTREF(__pyx_t_2);
          __pyx_t_14 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_14)) __PYX_ERR(30, 65, __pyx_L4_error)
        }
        for (;;) {
          if (likely(!__pyx_t_14)) {
            if (likely(PyList_CheckExact(__pyx_t_2))) {
              {
                Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
                #if !CYTHON_ASSUME_SAFE_SIZE
                if (unlikely((__pyx_temp < 0))) __PYX_ERR(30, 65, __pyx_L4_error)
                #endif
                if (__pyx_t_9 >= __pyx_temp) break;
              }
              __pyx_t_1 = __Pyx_PyList_GetItemRefFast(__pyx_t_2, __pyx_t_9, __Pyx_ReferenceSharing_OwnStrongReference);
              ++__pyx_t_9;
            } else {
              {
                Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
                #if !CYTHON_ASSUME_SAFE_SIZE
                if (unlikely((__pyx_temp < 0))) __PYX_ERR(30, 65, __pyx_L4_error)
                #endif
                if (__pyx_t_9 >= __pyx_temp) break;
              }
              #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
              __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_9));
              #else
              __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_9);
              #endif
              ++__pyx_t_9;
            }
            if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 65, __pyx_L4_error)
          } else {
            __pyx_t_1 = __pyx_t_14(__pyx_t_2);
            if (unlikely(!__pyx_t_1)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(30, 65, __pyx_L4_error)
                PyErr_Clear();
              }
              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(30, 65, __pyx_L4_error)
            }
            #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
            if (likely(PyTuple_CheckExact(sequence))) {
              __pyx_t_12 = PyTuple_GET_ITEM(sequence, 0);
              __Pyx_INCREF(__pyx_t_12);
              __pyx_t_11 = PyTuple_GET_ITEM(sequence, 1);
              __Pyx_INCREF(__pyx_t_11);
            } else {
              __pyx_t_12 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
              if (unlikely(!__pyx_t_12)) __PYX_ERR(30, 65, __pyx_L4_error)
              __Pyx_XGOTREF(__pyx_t_12);
              __pyx_t_11 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
              if (unlikely(!__pyx_t_11)) __PYX_ERR(30, 65, __pyx_L4_error)
              __Pyx_XGOTREF(__pyx_t_11);
            }
            #else
            __pyx_t_12 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_12)) __PYX_ERR(30, 65, __pyx_L4_error)
            __Pyx_GOTREF(__pyx_t_12);
            __pyx_t_11 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(30, 65, __pyx_L4_error)
            __Pyx_GOTREF(__pyx_t_11);
            #endif
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          } else {
            Py_ssize_t index = -1;
            __pyx_t_15 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_15)) __PYX_ERR(30, 65, __pyx_L4_error)
            __Pyx_GOTREF(__pyx_t_15);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_16 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_15);
            index = 0; __pyx_t_12 = __pyx_t_16(__pyx_t_15); if (unlikely(!__pyx_t_12)) goto __pyx_L15_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_12);
            index = 1; __pyx_t_11 = __pyx_t_16(__pyx_t_15); if (unlikely(!__pyx_t_11)) goto __pyx_L15_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_11);
            if (__Pyx_IternextUnpackEndCheck(__pyx_t_16(__pyx_t_15), 2) < (0)) __PYX_ERR(30, 65, __pyx_L4_error)
            __pyx_t_16 = NULL;
            __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
            goto __pyx_L16_unpacking_done;
            __pyx_L15_unpacking_failed:;
            __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
            __pyx_t_16 = NULL;
            if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
            __PYX_ERR(30, 65, __pyx_L4_error)
            __pyx_L16_unpacking_done:;
          }
          __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_12);
          __pyx_t_12 = 0;
          __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_11);
          __pyx_t_11 = 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_11 = ((PyObject *)__pyx_v_info);
          __Pyx_INCREF(__pyx_t_11);
          __pyx_t_13 = 0;
          {
            PyObject *__pyx_callargs[3] = {__pyx_t_11, __pyx_v_key, __pyx_v_value};
            __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Set, __pyx_callargs+__pyx_t_13, (3-__pyx_t_13) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 66, __pyx_L4_error)
            __Pyx_GOTREF(__pyx_t_1);
          }
          __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_15); __pyx_t_15 = 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_11) < 0) __PYX_ERR(30, 67, __pyx_L6_except_error)
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_1);
      __Pyx_XGOTREF(__pyx_t_11);

      /* "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(30, 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_11);
      __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_1, __pyx_t_11);
      __pyx_t_2 = 0;  __pyx_t_1 = 0;  __pyx_t_11 = 0; 
      __PYX_ERR(30, 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_15);
  __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\nCreate a new environment info object.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_17Create_env = {"Create_env", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_args,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(30, 72, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(30, 72, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create_env", 0) < (0)) __PYX_ERR(30, 72, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Info.pyx":73
 * 
 *     @classmethod
 *     def Create_env(cls, args: Sequence[str] | None = None) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Create a new environment info object.
*/
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(30, 72, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __pyx_v_args = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_env", 0, 0, 1, __pyx_nargs); __PYX_ERR(30, 72, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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(30, 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(30, 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(30, 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\nFree an info object.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_19Free = {"Free", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Free", __pyx_kwds); 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) {
  MPI_Info __pyx_v_save;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Info __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("Free", 0);

  /* "src/mpi4py/MPI.src/Info.pyx":89
 *         Free an info object.
 *         """
 *         cdef MPI_Info save = self.ob_mpi             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Info_free(&self.ob_mpi) )
 *         if constobj(self): self.ob_mpi = save
*/
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_save = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Info.pyx":90
 *         """
 *         cdef MPI_Info save = self.ob_mpi
 *         CHKERR( MPI_Info_free(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 *         if constobj(self): self.ob_mpi = save
 * 
*/
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Info_free((&__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(30, 90, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":91
 *         cdef MPI_Info save = self.ob_mpi
 *         CHKERR( MPI_Info_free(&self.ob_mpi) )
 *         if constobj(self): self.ob_mpi = save             # <<<<<<<<<<<<<<
 * 
 *     def Dup(self) -> Self:
*/
  __pyx_t_3 = (__pyx_fuse_5__pyx_f_6mpi4py_3MPI_constobj(__pyx_v_self) != 0);
  if (__pyx_t_3) {
    __pyx_v_self->ob_mpi = __pyx_v_save;
  }

  /* "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":93
 *         if constobj(self): self.ob_mpi = save
 * 
 *     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\nDuplicate an existing info object.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_21Dup = {"Dup", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Dup", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Info.pyx":97
 *         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(30, 97, __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":98
 *         """
 *         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(30, 98, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":99
 *         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":93
 *         if constobj(self): self.ob_mpi = save
 * 
 *     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":101
 *         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\nRetrieve the value associated with a key.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_23Get = {"Get", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_key,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(30, 101, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(30, 101, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Get", 0) < (0)) __PYX_ERR(30, 101, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Get", 1, 1, 1, i); __PYX_ERR(30, 101, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(30, 101, __pyx_L3_error)
    }
    __pyx_v_key = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get", 1, 1, 1, __pyx_nargs); __PYX_ERR(30, 101, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":105
 *         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":106
 *         """
 *         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":107
 *         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":108
 *         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":109
 *         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(30, 109, __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":110
 *         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(30, 110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_unused = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":111
 *         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(30, 111, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":112
 *         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":113
 *         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(30, 113, __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":101
 *         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":115
 *         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\nStore a value associated with a key.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_25Set = {"Set", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_key,&__pyx_mstate_global->__pyx_n_u_value,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(30, 115, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(30, 115, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(30, 115, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Set", 0) < (0)) __PYX_ERR(30, 115, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Set", 1, 2, 2, i); __PYX_ERR(30, 115, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(30, 115, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(30, 115, __pyx_L3_error)
    }
    __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(30, 115, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":119
 *         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":120
 *         """
 *         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":121
 *         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(30, 121, __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":122
 *         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(30, 122, __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":123
 *         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(30, 123, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":115
 *         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":125
 *         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\nRemove a (key, value) pair from info.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_27Delete = {"Delete", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_key,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(30, 125, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(30, 125, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Delete", 0) < (0)) __PYX_ERR(30, 125, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Delete", 1, 1, 1, i); __PYX_ERR(30, 125, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(30, 125, __pyx_L3_error)
    }
    __pyx_v_key = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Delete", 1, 1, 1, __pyx_nargs); __PYX_ERR(30, 125, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":129
 *         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":130
 *         """
 *         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(30, 130, __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":131
 *         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(30, 131, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":125
 *         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":133
 *         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\nReturn the number of currently defined keys in info.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_29Get_nkeys = {"Get_nkeys", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_nkeys", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Info.pyx":137
 *         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":138
 *         """
 *         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(30, 138, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":139
 *         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_PyLong_From_int(__pyx_v_nkeys); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 139, __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":133
 *         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":141
 *         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\nReturn the *n*-th defined key in info.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_31Get_nthkey = {"Get_nthkey", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_n,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(30, 141, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(30, 141, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Get_nthkey", 0) < (0)) __PYX_ERR(30, 141, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Get_nthkey", 1, 1, 1, i); __PYX_ERR(30, 141, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(30, 141, __pyx_L3_error)
    }
    __pyx_v_n = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(30, 141, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_nthkey", 1, 1, 1, __pyx_nargs); __PYX_ERR(30, 141, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 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
*/
  (__pyx_v_ckey[0]) = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":147
 *         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(30, 147, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":148
 *         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":149
 *         CHKERR( MPI_Info_get_nthkey(self.ob_mpi, n, ckey) )
 *         ckey[MPI_MAX_INFO_KEY] = 0  # just in case
 *         return mpistr(ckey)             # <<<<<<<<<<<<<<
 * 
 *     # Integer Handle
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_v_ckey); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 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/Info.pyx":141
 *         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":154
 *     # --------------
 * 
 *     def toint(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate object to integer handle.
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_33toint(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_32toint, "toint(self) -> int\n\nTranslate object to integer handle.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_33toint = {"toint", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_33toint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_32toint};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_33toint(PyObject *__pyx_v_self, 
#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("toint (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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("toint", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("toint", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_32toint(((struct PyMPIInfoObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_32toint(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("toint", 0);

  /* "src/mpi4py/MPI.src/Info.pyx":158
 *         Translate object to integer handle.
 *         """
 *         return MPI_Info_toint(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_int(MPI_Info_toint(__pyx_v_self->ob_mpi)); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 158, __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":154
 *     # --------------
 * 
 *     def toint(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate object to integer handle.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Info.toint", __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":160
 *         return MPI_Info_toint(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromint(cls, arg: int, /) -> Info:
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_35fromint(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Info_34fromint, "fromint(cls, arg: int, /) -> Info\n\nTranslate integer handle to object.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_35fromint = {"fromint", (PyCFunction)__pyx_pw_6mpi4py_3MPI_4Info_35fromint, METH_O, __pyx_doc_6mpi4py_3MPI_4Info_34fromint};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_35fromint(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fromint (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_34fromint(((PyTypeObject*)__pyx_v_cls), ((PyObject *)__pyx_v_arg));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_34fromint(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, 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("fromint", 0);

  /* "src/mpi4py/MPI.src/Info.pyx":165
 *         Translate integer handle to object.
 *         """
 *         return fromhandle(MPI_Info_fromint(arg))             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_As_int(__pyx_v_arg); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(30, 165, __pyx_L1_error)
  __pyx_t_2 = __pyx_fuse_5__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Info_fromint(__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 165, __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":160
 *         return MPI_Info_toint(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromint(cls, arg: int, /) -> Info:
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Info.fromint", __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":170
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_37py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_36py2f, "py2f(self) -> int\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_37py2f = {"py2f", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_37py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_36py2f};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_37py2f(PyObject *__pyx_v_self, 
#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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("py2f", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_36py2f(((struct PyMPIInfoObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_36py2f(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", 0);

  /* "src/mpi4py/MPI.src/Info.pyx":173
 *         """
 *         """
 *         return MPI_Info_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_MPI_Fint(MPI_Info_c2f(__pyx_v_self->ob_mpi)); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 173, __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":170
 *     # --------------
 * 
 *     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":175
 *         return MPI_Info_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Info:
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_39f2py(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_38f2py, "f2py(cls, arg: int) -> Info\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_39f2py = {"f2py", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_39f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_38f2py};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_39f2py(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_arg,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(30, 175, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(30, 175, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "f2py", 0) < (0)) __PYX_ERR(30, 175, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, i); __PYX_ERR(30, 175, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(30, 175, __pyx_L3_error)
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, __pyx_nargs); __PYX_ERR(30, 175, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_38f2py(((PyTypeObject*)__pyx_v_cls), __pyx_v_arg);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_38f2py(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", 0);

  /* "src/mpi4py/MPI.src/Info.pyx":179
 *         """
 *         """
 *         return fromhandle(MPI_Info_f2c(arg))             # <<<<<<<<<<<<<<
 * 
 *     # Python mapping emulation
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_As_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_1 == ((MPI_Fint)-1)) && PyErr_Occurred())) __PYX_ERR(30, 179, __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(30, 179, __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":175
 *         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":184
 *     # ------------------------
 * 
 *     def __len__(self) -> int:             # <<<<<<<<<<<<<<
 *         if not self: return 0
 *         return self.Get_nkeys()
*/

/* Python wrapper */
static Py_ssize_t __pyx_pw_6mpi4py_3MPI_4Info_41__len__(PyObject *__pyx_v_self); /*proto*/
static Py_ssize_t __pyx_pw_6mpi4py_3MPI_4Info_41__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_40__len__(((struct PyMPIInfoObject *)__pyx_v_self));

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

static Py_ssize_t __pyx_pf_6mpi4py_3MPI_4Info_40__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;
  size_t __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__len__", 0);

  /* "src/mpi4py/MPI.src/Info.pyx":185
 * 
 *     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(30, 185, __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":186
 *     def __len__(self) -> int:
 *         if not self: return 0
 *         return self.Get_nkeys()             # <<<<<<<<<<<<<<
 * 
 *     def __contains__(self, key: str) -> bool:
*/
  __pyx_t_4 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_nkeys, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 186, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(30, 186, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_6;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Info.pyx":184
 *     # ------------------------
 * 
 *     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_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":188
 *         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_43__contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_4Info_43__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_42__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_42__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":189
 * 
 *     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(30, 189, __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":190
 *     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":192
 *         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":193
 *         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":194
 *         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(30, 194, __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":195
 *         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(30, 195, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":196
 *         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":188
 *         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":198
 *         return <bint>flag
 * 
 *     def __iter__(self) -> Iterator[str]:             # <<<<<<<<<<<<<<
 *         return iter(self.keys())
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_45__iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_45__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_44__iter__(((struct PyMPIInfoObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_44__iter__(struct PyMPIInfoObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iter__", 0);

  /* "src/mpi4py/MPI.src/Info.pyx":199
 * 
 *     def __iter__(self) -> Iterator[str]:
 *         return iter(self.keys())             # <<<<<<<<<<<<<<
 * 
 *     def __getitem__(self, key: str) -> str:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_keys, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 199, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 199, __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":198
 *         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_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":201
 *         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_47__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_47__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_46__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_46__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;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getitem__", 0);

  /* "src/mpi4py/MPI.src/Info.pyx":202
 * 
 *     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(30, 202, __pyx_L1_error)
  __pyx_t_2 = (!__pyx_t_1);
  if (unlikely(__pyx_t_2)) {
    __pyx_t_4 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_key};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_KeyError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 202, __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(30, 202, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/Info.pyx":203
 *     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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_key};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 203, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_v_value = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":204
 *         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_4 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_key};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_KeyError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 204, __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(30, 204, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/Info.pyx":205
 *         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":201
 *         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_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":207
 *         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_49__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_4Info_49__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_48__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_48__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;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setitem__", 0);

  /* "src/mpi4py/MPI.src/Info.pyx":208
 * 
 *     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(30, 208, __pyx_L1_error)
  __pyx_t_2 = (!__pyx_t_1);
  if (unlikely(__pyx_t_2)) {
    __pyx_t_4 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_key};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_KeyError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 208, __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(30, 208, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/Info.pyx":209
 *     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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_v_key, __pyx_v_value};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Set, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 209, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":207
 *         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_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":211
 *         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_51__delitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_4Info_51__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_50__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_50__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;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__delitem__", 0);

  /* "src/mpi4py/MPI.src/Info.pyx":212
 * 
 *     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(30, 212, __pyx_L1_error)
  __pyx_t_2 = (!__pyx_t_1);
  if (unlikely(__pyx_t_2)) {
    __pyx_t_4 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_key};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_KeyError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 212, __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(30, 212, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/Info.pyx":213
 *     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(30, 213, __pyx_L1_error)
  if (unlikely(__pyx_t_2)) {
    __pyx_t_4 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_key};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_KeyError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 213, __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(30, 213, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/Info.pyx":214
 *         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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_key};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Delete, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 214, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":211
 *         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_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":216
 *         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_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_4Info_52get, "get(self, key: str, default: str | None = None) -> str | None\n\nRetrieve value by key.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_53get = {"get", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_53get, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_52get};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_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_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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_key,&__pyx_mstate_global->__pyx_n_u_default,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(30, 216, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(30, 216, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(30, 216, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "get", 0) < (0)) __PYX_ERR(30, 216, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("get", 0, 1, 2, i); __PYX_ERR(30, 216, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(30, 216, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(30, 216, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __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(30, 216, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_52get(((struct PyMPIInfoObject *)__pyx_v_self), __pyx_v_key, __pyx_v_default);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_52get(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;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get", 0);

  /* "src/mpi4py/MPI.src/Info.pyx":218
 *     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(30, 218, __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":219
 *         """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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_key};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 219, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_v_value = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":220
 *         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":221
 *         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":216
 *         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_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":223
 *         return value
 * 
 *     def keys(self) -> list[str]:             # <<<<<<<<<<<<<<
 *         """Return list of keys."""
 *         if not self: return []
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_55keys(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_54keys, "keys(self) -> list[str]\n\nReturn list of keys.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_55keys = {"keys", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_55keys, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_54keys};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_55keys(PyObject *__pyx_v_self, 
#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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("keys", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_54keys(((struct PyMPIInfoObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_54keys(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;
  size_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("keys", 0);

  /* "src/mpi4py/MPI.src/Info.pyx":225
 *     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(30, 225, __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(30, 225, __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":226
 *         """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(30, 226, __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":227
 *         if not self: return []
 *         cdef list keys = []
 *         cdef int nkeys = self.Get_nkeys()             # <<<<<<<<<<<<<<
 *         cdef object key
 *         for k in range(nkeys):
*/
  __pyx_t_4 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_nkeys, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 227, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_t_6 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(30, 227, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_nkeys = __pyx_t_6;

  /* "src/mpi4py/MPI.src/Info.pyx":229
 *         cdef int nkeys = self.Get_nkeys()
 *         cdef object key
 *         for k in range(nkeys):             # <<<<<<<<<<<<<<
 *             key = self.Get_nthkey(k)
 *             keys.append(key)
*/
  __pyx_t_6 = __pyx_v_nkeys;
  __pyx_t_7 = __pyx_t_6;
  for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
    __pyx_v_k = __pyx_t_8;

    /* "src/mpi4py/MPI.src/Info.pyx":230
 *         cdef object key
 *         for k in range(nkeys):
 *             key = self.Get_nthkey(k)             # <<<<<<<<<<<<<<
 *             keys.append(key)
 *         return keys
*/
    __pyx_t_4 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_9 = __Pyx_PyLong_From_int(__pyx_v_k); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 230, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_9};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_nthkey, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 230, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Info.pyx":231
 *         for k in range(nkeys):
 *             key = self.Get_nthkey(k)
 *             keys.append(key)             # <<<<<<<<<<<<<<
 *         return keys
 * 
*/
    __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_keys, __pyx_v_key); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(30, 231, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/Info.pyx":232
 *             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":223
 *         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_9);
  __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":234
 *         return keys
 * 
 *     def values(self) -> list[str]:             # <<<<<<<<<<<<<<
 *         """Return list of values."""
 *         if not self: return []
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_57values(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_56values, "values(self) -> list[str]\n\nReturn list of values.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_57values = {"values", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_57values, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_56values};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_57values(PyObject *__pyx_v_self, 
#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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("values", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_56values(((struct PyMPIInfoObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_56values(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;
  size_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("values", 0);

  /* "src/mpi4py/MPI.src/Info.pyx":236
 *     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(30, 236, __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(30, 236, __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":237
 *         """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(30, 237, __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":238
 *         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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_nkeys, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 238, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_t_6 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(30, 238, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_nkeys = __pyx_t_6;

  /* "src/mpi4py/MPI.src/Info.pyx":240
 *         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_6 = __pyx_v_nkeys;
  __pyx_t_7 = __pyx_t_6;
  for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
    __pyx_v_k = __pyx_t_8;

    /* "src/mpi4py/MPI.src/Info.pyx":241
 *         cdef object key, val
 *         for k in range(nkeys):
 *             key = self.Get_nthkey(k)             # <<<<<<<<<<<<<<
 *             val = self.Get(key)
 *             values.append(val)
*/
    __pyx_t_4 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_9 = __Pyx_PyLong_From_int(__pyx_v_k); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 241, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_9};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_nthkey, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 241, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Info.pyx":242
 *         for k in range(nkeys):
 *             key = self.Get_nthkey(k)
 *             val = self.Get(key)             # <<<<<<<<<<<<<<
 *             values.append(val)
 *         return values
*/
    __pyx_t_9 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_v_key};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 242, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Info.pyx":243
 *             key = self.Get_nthkey(k)
 *             val = self.Get(key)
 *             values.append(val)             # <<<<<<<<<<<<<<
 *         return values
 * 
*/
    __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_values, __pyx_v_val); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(30, 243, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/Info.pyx":244
 *             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":234
 *         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_9);
  __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":246
 *         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_59items(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_58items, "items(self) -> list[tuple[str, str]]\n\nReturn list of items.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_59items = {"items", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_59items, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_58items};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_59items(PyObject *__pyx_v_self, 
#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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("items", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_58items(((struct PyMPIInfoObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_58items(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;
  size_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("items", 0);

  /* "src/mpi4py/MPI.src/Info.pyx":248
 *     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(30, 248, __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(30, 248, __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":249
 *         """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(30, 249, __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":250
 *         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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_nkeys, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 250, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_t_6 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(30, 250, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_nkeys = __pyx_t_6;

  /* "src/mpi4py/MPI.src/Info.pyx":252
 *         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_6 = __pyx_v_nkeys;
  __pyx_t_7 = __pyx_t_6;
  for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
    __pyx_v_k = __pyx_t_8;

    /* "src/mpi4py/MPI.src/Info.pyx":253
 *         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 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_9 = __Pyx_PyLong_From_int(__pyx_v_k); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 253, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_9};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_nthkey, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 253, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Info.pyx":254
 *         for k in range(nkeys):
 *             key = self.Get_nthkey(k)
 *             value = self.Get(key)             # <<<<<<<<<<<<<<
 *             items.append((key, value))
 *         return items
*/
    __pyx_t_9 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_v_key};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 254, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Info.pyx":255
 *             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(30, 255, __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) != (0)) __PYX_ERR(30, 255, __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) != (0)) __PYX_ERR(30, 255, __pyx_L1_error);
    __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_items, __pyx_t_3); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(30, 255, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }

  /* "src/mpi4py/MPI.src/Info.pyx":256
 *             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":246
 *         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_9);
  __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":258
 *         return items
 * 
 *     def update(             # <<<<<<<<<<<<<<
 *         self,
 *         items: Info | Mapping[str, str] | Iterable[tuple[str, str]] = (),
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_61update(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_60update, "update(self, items: Info | Mapping[str, str] | Iterable[tuple[str, str]] = (), **kwds: str) -> None\n\nUpdate contents.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_61update = {"update", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_61update, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_60update};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_61update(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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 ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_items,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(30, 258, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(30, 258, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, __pyx_v_kwds, values, kwd_pos_args, __pyx_kwds_len, "update", 1) < (0)) __PYX_ERR(30, 258, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Info.pyx":260
 *     def update(
 *         self,
 *         items: Info | Mapping[str, str] | Iterable[tuple[str, str]] = (),             # <<<<<<<<<<<<<<
 *         **kwds: str,
 *     ) -> None:
*/
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_empty_tuple));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(30, 258, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_empty_tuple));
    }
    __pyx_v_items = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("update", 0, 0, 1, __pyx_nargs); __PYX_ERR(30, 258, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_60update(((struct PyMPIInfoObject *)__pyx_v_self), __pyx_v_items, __pyx_v_kwds);

  /* "src/mpi4py/MPI.src/Info.pyx":258
 *         return items
 * 
 *     def update(             # <<<<<<<<<<<<<<
 *         self,
 *         items: Info | Mapping[str, str] | Iterable[tuple[str, str]] = (),
*/

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_60update(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;
  size_t __pyx_t_11;
  PyObject *(*__pyx_t_12)(PyObject *);
  PyObject *__pyx_t_13 = NULL;
  PyObject *(*__pyx_t_14)(PyObject *);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("update", 0);

  /* "src/mpi4py/MPI.src/Info.pyx":264
 *     ) -> 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(30, 264, __pyx_L1_error)
  __pyx_t_2 = (!__pyx_t_1);
  if (unlikely(__pyx_t_2)) {
    __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_KeyError))), 0, 0, 0);
    __PYX_ERR(30, 264, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/Info.pyx":266
 *         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_mstate_global->__pyx_n_u_keys); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(30, 266, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/Info.pyx":267
 *         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(30, 267, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_dict_iterator(__pyx_v_items, 0, __pyx_mstate_global->__pyx_n_u_keys, (&__pyx_t_5), (&__pyx_t_6)); if (unlikely(!__pyx_t_7)) __PYX_ERR(30, 267, __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(30, 267, __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":268
 *         if hasattr(items, 'keys'):
 *             for key in items.keys():
 *                 self.Set(key, items[key])             # <<<<<<<<<<<<<<
 *         else:
 *             for key, value in items:
*/
      __pyx_t_9 = ((PyObject *)__pyx_v_self);
      __Pyx_INCREF(__pyx_t_9);
      __pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_v_items, __pyx_v_key); if (unlikely(!__pyx_t_10)) __PYX_ERR(30, 268, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = 0;
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_9, __pyx_v_key, __pyx_t_10};
        __pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Set, __pyx_callargs+__pyx_t_11, (3-__pyx_t_11) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        if (unlikely(!__pyx_t_7)) __PYX_ERR(30, 268, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
      }
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Info.pyx":266
 *         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":270
 *                 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_12 = NULL;
    } else {
      __pyx_t_5 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_items); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 270, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_12 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_12)) __PYX_ERR(30, 270, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_12)) {
        if (likely(PyList_CheckExact(__pyx_t_3))) {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(30, 270, __pyx_L1_error)
            #endif
            if (__pyx_t_5 >= __pyx_temp) break;
          }
          __pyx_t_7 = __Pyx_PyList_GetItemRefFast(__pyx_t_3, __pyx_t_5, __Pyx_ReferenceSharing_OwnStrongReference);
          ++__pyx_t_5;
        } else {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(30, 270, __pyx_L1_error)
            #endif
            if (__pyx_t_5 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_7 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5));
          #else
          __pyx_t_7 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_5);
          #endif
          ++__pyx_t_5;
        }
        if (unlikely(!__pyx_t_7)) __PYX_ERR(30, 270, __pyx_L1_error)
      } else {
        __pyx_t_7 = __pyx_t_12(__pyx_t_3);
        if (unlikely(!__pyx_t_7)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(30, 270, __pyx_L1_error)
            PyErr_Clear();
          }
          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(30, 270, __pyx_L1_error)
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_10 = PyTuple_GET_ITEM(sequence, 0);
          __Pyx_INCREF(__pyx_t_10);
          __pyx_t_9 = PyTuple_GET_ITEM(sequence, 1);
          __Pyx_INCREF(__pyx_t_9);
        } else {
          __pyx_t_10 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
          if (unlikely(!__pyx_t_10)) __PYX_ERR(30, 270, __pyx_L1_error)
          __Pyx_XGOTREF(__pyx_t_10);
          __pyx_t_9 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
          if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 270, __pyx_L1_error)
          __Pyx_XGOTREF(__pyx_t_9);
        }
        #else
        __pyx_t_10 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(30, 270, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_9 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 270, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        #endif
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_13 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_13)) __PYX_ERR(30, 270, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_14 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_13);
        index = 0; __pyx_t_10 = __pyx_t_14(__pyx_t_13); if (unlikely(!__pyx_t_10)) goto __pyx_L9_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_10);
        index = 1; __pyx_t_9 = __pyx_t_14(__pyx_t_13); if (unlikely(!__pyx_t_9)) goto __pyx_L9_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_9);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_13), 2) < (0)) __PYX_ERR(30, 270, __pyx_L1_error)
        __pyx_t_14 = NULL;
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        goto __pyx_L10_unpacking_done;
        __pyx_L9_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __pyx_t_14 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        __PYX_ERR(30, 270, __pyx_L1_error)
        __pyx_L10_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_10);
      __pyx_t_10 = 0;
      __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_9);
      __pyx_t_9 = 0;

      /* "src/mpi4py/MPI.src/Info.pyx":271
 *         else:
 *             for key, value in items:
 *                 self.Set(key, value)             # <<<<<<<<<<<<<<
 *         for key, value in kwds.items():
 *             self.Set(key, value)
*/
      __pyx_t_9 = ((PyObject *)__pyx_v_self);
      __Pyx_INCREF(__pyx_t_9);
      __pyx_t_11 = 0;
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_9, __pyx_v_key, __pyx_v_value};
        __pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Set, __pyx_callargs+__pyx_t_11, (3-__pyx_t_11) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_7)) __PYX_ERR(30, 271, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
      }
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "src/mpi4py/MPI.src/Info.pyx":270
 *                 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":272
 *             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_mstate_global->__pyx_n_u_items, (&__pyx_t_4), (&__pyx_t_6)); if (unlikely(!__pyx_t_7)) __PYX_ERR(30, 272, __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_9, NULL, __pyx_t_6);
    if (unlikely(__pyx_t_8 == 0)) break;
    if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(30, 272, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_7);
    __pyx_t_7 = 0;
    __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_9);
    __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/Info.pyx":273
 *                 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 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_7);
    __pyx_t_11 = 0;
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_v_key, __pyx_v_value};
      __pyx_t_9 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Set, __pyx_callargs+__pyx_t_11, (3-__pyx_t_11) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 273, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
    }
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":258
 *         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_13);
  __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":275
 *             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_63pop(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_62pop, "pop(self, key: str, *default: str) -> str\n\nPop value by key.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_63pop = {"pop", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_63pop, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_62pop};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_63pop(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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 ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_key,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(30, 275, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        default:
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(30, 275, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
      }
      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 (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, used_pos_args, __pyx_kwds_len, "pop", 0) < (0)) __PYX_ERR(30, 275, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("pop", 0, 1, 1, i); __PYX_ERR(30, 275, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs < 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(30, 275, __pyx_L3_error)
    }
    __pyx_v_key = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("pop", 0, 1, 1, __pyx_nargs); __PYX_ERR(30, 275, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_62pop(((struct PyMPIInfoObject *)__pyx_v_self), __pyx_v_key, __pyx_v_default);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_62pop(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;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("pop", 0);

  /* "src/mpi4py/MPI.src/Info.pyx":277
 *     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":278
 *         """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(30, 278, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Info.pyx":279
 *         cdef object value = None
 *         if self:
 *             value = self.Get(key)             # <<<<<<<<<<<<<<
 *         if value is not None:
 *             self.Delete(key)
*/
    __pyx_t_3 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_key};
      __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 279, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/Info.pyx":278
 *         """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":280
 *         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":281
 *             value = self.Get(key)
 *         if value is not None:
 *             self.Delete(key)             # <<<<<<<<<<<<<<
 *             return value
 *         if default:
*/
    __pyx_t_3 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_key};
      __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Delete, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 281, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/Info.pyx":282
 *         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":280
 *         if self:
 *             value = self.Get(key)
 *         if value is not None:             # <<<<<<<<<<<<<<
 *             self.Delete(key)
 *             return value
*/
  }

  /* "src/mpi4py/MPI.src/Info.pyx":283
 *             self.Delete(key)
 *             return value
 *         if default:             # <<<<<<<<<<<<<<
 *             value, = default
 *             return value
*/
  {
    Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_v_default);
    if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(30, 283, __pyx_L1_error)
    __pyx_t_1 = (__pyx_temp != 0);
  }

  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Info.pyx":284
 *             return value
 *         if default:
 *             value, = default             # <<<<<<<<<<<<<<
 *             return value
 *         raise KeyError(key)
*/
    if (1) {
      PyObject* sequence = __pyx_v_default;
      Py_ssize_t size = __Pyx_PyTuple_GET_SIZE(sequence);
      if (unlikely(size != 1)) {
        if (size > 1) __Pyx_RaiseTooManyValuesError(1);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(30, 284, __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 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 284, __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":285
 *         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":283
 *             self.Delete(key)
 *             return value
 *         if default:             # <<<<<<<<<<<<<<
 *             value, = default
 *             return value
*/
  }

  /* "src/mpi4py/MPI.src/Info.pyx":286
 *             value, = default
 *             return value
 *         raise KeyError(key)             # <<<<<<<<<<<<<<
 * 
 *     def popitem(self) -> tuple[str, str]:
*/
  __pyx_t_3 = NULL;
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_key};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_KeyError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 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(30, 286, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":275
 *             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_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":288
 *         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_65popitem(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_64popitem, "popitem(self) -> tuple[str, str]\n\nPop first item.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_65popitem = {"popitem", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_65popitem, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_64popitem};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_65popitem(PyObject *__pyx_v_self, 
#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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("popitem", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_64popitem(((struct PyMPIInfoObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_64popitem(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;
  size_t __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("popitem", 0);

  /* "src/mpi4py/MPI.src/Info.pyx":290
 *     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(30, 290, __pyx_L1_error)
  __pyx_t_2 = (!__pyx_t_1);
  if (unlikely(__pyx_t_2)) {
    __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_KeyError))), 0, 0, 0);
    __PYX_ERR(30, 290, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/Info.pyx":292
 *         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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_nkeys, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 292, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_t_6 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(30, 292, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_nkeys = __pyx_t_6;

  /* "src/mpi4py/MPI.src/Info.pyx":293
 *         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(((PyObject *)(((PyTypeObject*)PyExc_KeyError))), 0, 0, 0);
    __PYX_ERR(30, 293, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/Info.pyx":294
 *         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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_PyLong_From_long((__pyx_v_nkeys - 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(30, 294, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_7};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_nthkey, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 294, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_v_key = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":295
 *         if nkeys == 0: raise KeyError
 *         key = self.Get_nthkey(nkeys - 1)
 *         value = self.Get(key)             # <<<<<<<<<<<<<<
 *         self.Delete(key)
 *         return (key, value)
*/
  __pyx_t_7 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_7);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_key};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 295, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_v_value = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":296
 *         key = self.Get_nthkey(nkeys - 1)
 *         value = self.Get(key)
 *         self.Delete(key)             # <<<<<<<<<<<<<<
 *         return (key, value)
 * 
*/
  __pyx_t_7 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_7);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_key};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Delete, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 296, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":297
 *         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(30, 297, __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) != (0)) __PYX_ERR(30, 297, __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) != (0)) __PYX_ERR(30, 297, __pyx_L1_error);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Info.pyx":288
 *         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_7);
  __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":299
 *         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_67copy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_66copy, "copy(self) -> Self\n\nCopy contents.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_67copy = {"copy", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_67copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_66copy};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_67copy(PyObject *__pyx_v_self, 
#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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("copy", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_66copy(((struct PyMPIInfoObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_66copy(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;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("copy", 0);

  /* "src/mpi4py/MPI.src/Info.pyx":301
 *     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(30, 301, __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(30, 301, __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":302
 *         """Copy contents."""
 *         if not self: return <Info>New(type(self))
 *         return self.Dup()             # <<<<<<<<<<<<<<
 * 
 *     def clear(self) -> None:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Dup, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 302, __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":299
 *         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_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":304
 *         return self.Dup()
 * 
 *     def clear(self) -> None:             # <<<<<<<<<<<<<<
 *         """Clear contents."""
 *         if not self: return None
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_69clear(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_68clear, "clear(self) -> None\n\nClear contents.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_69clear = {"clear", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_69clear, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_68clear};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_69clear(PyObject *__pyx_v_self, 
#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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("clear", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_68clear(((struct PyMPIInfoObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_68clear(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;
  size_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("clear", 0);

  /* "src/mpi4py/MPI.src/Info.pyx":306
 *     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(30, 306, __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":308
 *         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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_nkeys, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 308, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_t_6 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(30, 308, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_nkeys = __pyx_t_6;

  /* "src/mpi4py/MPI.src/Info.pyx":309
 *         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":310
 *         cdef int k = 0, nkeys = self.Get_nkeys()
 *         while k < nkeys:
 *             key = self.Get_nthkey(0)             # <<<<<<<<<<<<<<
 *             self.Delete(key)
 *             k += 1
*/
    __pyx_t_4 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_int_0};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_nthkey, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 310, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Info.pyx":311
 *         while k < nkeys:
 *             key = self.Get_nthkey(0)
 *             self.Delete(key)             # <<<<<<<<<<<<<<
 *             k += 1
 * 
*/
    __pyx_t_4 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_key};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Delete, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 311, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Info.pyx":312
 *             key = self.Get_nthkey(0)
 *             self.Delete(key)
 *             k += 1             # <<<<<<<<<<<<<<
 * 
 * 
*/
    __pyx_v_k = (__pyx_v_k + 1);
  }

  /* "src/mpi4py/MPI.src/Info.pyx":304
 *         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_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_SIZE
  __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 ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_errhandler,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(31, 6, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(31, 6, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < (0)) __PYX_ERR(31, 6, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIErrhandlerObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(31, 6, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIErrhandlerObject *)Py_None));
    }
    __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(31, 6, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler, 1, "errhandler", 0))) __PYX_ERR(31, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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(31, 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(31, 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__", 0);

  /* "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_mstate_global->__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(31, 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(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce__", __pyx_kwds); 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__", 0);

  /* "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(31, 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__", 0);

  /* "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_PyLong_FromSize_t(__pyx_fuse_6__pyx_f_6mpi4py_3MPI_tohandle(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 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\nCreate object from MPI handle.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_10Errhandler_11fromhandle = {"fromhandle", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_handle,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(31, 27, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(31, 27, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "fromhandle", 0) < (0)) __PYX_ERR(31, 27, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("fromhandle", 1, 1, 1, i); __PYX_ERR(31, 27, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(31, 27, __pyx_L3_error)
    }
    __pyx_v_handle = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fromhandle", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 27, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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_PyLong_As_size_t(__pyx_v_handle); if (unlikely((__pyx_t_1 == ((Py_uintptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(31, 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(31, 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\nCall `Free` if not null.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_10Errhandler_13free = {"free", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("free", __pyx_kwds); 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", 0);

  /* "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(31, 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\nFree an error handler.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_10Errhandler_15Free = {"Free", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Free", __pyx_kwds); 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) {
  MPI_Errhandler __pyx_v_save;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Errhandler __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("Free", 0);

  /* "src/mpi4py/MPI.src/Errhandler.pyx":47
 *         Free an error handler.
 *         """
 *         cdef MPI_Errhandler save = self.ob_mpi             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Errhandler_free(&self.ob_mpi) )
 *         if constobj(self): self.ob_mpi = save
*/
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_save = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Errhandler.pyx":48
 *         """
 *         cdef MPI_Errhandler save = self.ob_mpi
 *         CHKERR( MPI_Errhandler_free(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 *         if constobj(self): self.ob_mpi = save
 * 
*/
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Errhandler_free((&__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 48, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Errhandler.pyx":49
 *         cdef MPI_Errhandler save = self.ob_mpi
 *         CHKERR( MPI_Errhandler_free(&self.ob_mpi) )
 *         if constobj(self): self.ob_mpi = save             # <<<<<<<<<<<<<<
 * 
 *     # Integer Handle
*/
  __pyx_t_3 = (__pyx_fuse_6__pyx_f_6mpi4py_3MPI_constobj(__pyx_v_self) != 0);
  if (__pyx_t_3) {
    __pyx_v_self->ob_mpi = __pyx_v_save;
  }

  /* "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":54
 *     # --------------
 * 
 *     def toint(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate object to integer handle.
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_10Errhandler_17toint(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_16toint, "toint(self) -> int\n\nTranslate object to integer handle.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_10Errhandler_17toint = {"toint", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_10Errhandler_17toint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_10Errhandler_16toint};
static PyObject *__pyx_pw_6mpi4py_3MPI_10Errhandler_17toint(PyObject *__pyx_v_self, 
#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("toint (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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("toint", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("toint", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_10Errhandler_16toint(((struct PyMPIErrhandlerObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_16toint(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("toint", 0);

  /* "src/mpi4py/MPI.src/Errhandler.pyx":58
 *         Translate object to integer handle.
 *         """
 *         return MPI_Errhandler_toint(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_int(MPI_Errhandler_toint(__pyx_v_self->ob_mpi)); 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/Errhandler.pyx":54
 *     # --------------
 * 
 *     def toint(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate object to integer handle.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Errhandler.toint", __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_toint(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromint(cls, arg: int, /) -> Errhandler:
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_10Errhandler_19fromint(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_10Errhandler_18fromint, "fromint(cls, arg: int, /) -> Errhandler\n\nTranslate integer handle to object.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_10Errhandler_19fromint = {"fromint", (PyCFunction)__pyx_pw_6mpi4py_3MPI_10Errhandler_19fromint, METH_O, __pyx_doc_6mpi4py_3MPI_10Errhandler_18fromint};
static PyObject *__pyx_pw_6mpi4py_3MPI_10Errhandler_19fromint(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fromint (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_10Errhandler_18fromint(((PyTypeObject*)__pyx_v_cls), ((PyObject *)__pyx_v_arg));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_18fromint(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, 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("fromint", 0);

  /* "src/mpi4py/MPI.src/Errhandler.pyx":65
 *         Translate integer handle to object.
 *         """
 *         return fromhandle(MPI_Errhandler_fromint(arg))             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_As_int(__pyx_v_arg); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 65, __pyx_L1_error)
  __pyx_t_2 = __pyx_fuse_6__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Errhandler_fromint(__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/Errhandler.pyx":60
 *         return MPI_Errhandler_toint(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromint(cls, arg: int, /) -> Errhandler:
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Errhandler.fromint", __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":70
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_10Errhandler_21py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_20py2f, "py2f(self) -> int\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_10Errhandler_21py2f = {"py2f", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_10Errhandler_21py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_10Errhandler_20py2f};
static PyObject *__pyx_pw_6mpi4py_3MPI_10Errhandler_21py2f(PyObject *__pyx_v_self, 
#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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("py2f", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_10Errhandler_20py2f(((struct PyMPIErrhandlerObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_20py2f(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", 0);

  /* "src/mpi4py/MPI.src/Errhandler.pyx":73
 *         """
 *         """
 *         return MPI_Errhandler_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_MPI_Fint(MPI_Errhandler_c2f(__pyx_v_self->ob_mpi)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 73, __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":70
 *     # --------------
 * 
 *     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":75
 *         return MPI_Errhandler_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Errhandler:
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_10Errhandler_23f2py(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_22f2py, "f2py(cls, arg: int) -> Errhandler\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_10Errhandler_23f2py = {"f2py", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_10Errhandler_23f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_10Errhandler_22f2py};
static PyObject *__pyx_pw_6mpi4py_3MPI_10Errhandler_23f2py(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_arg,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(31, 75, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(31, 75, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "f2py", 0) < (0)) __PYX_ERR(31, 75, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, i); __PYX_ERR(31, 75, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(31, 75, __pyx_L3_error)
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 75, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_22f2py(((PyTypeObject*)__pyx_v_cls), __pyx_v_arg);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_22f2py(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", 0);

  /* "src/mpi4py/MPI.src/Errhandler.pyx":79
 *         """
 *         """
 *         return fromhandle(MPI_Errhandler_f2c(arg))             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_As_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_1 == ((MPI_Fint)-1)) && PyErr_Occurred())) __PYX_ERR(31, 79, __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(31, 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/Errhandler.pyx":75
 *         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_SIZE
  __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 ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_session,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(32, 6, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(32, 6, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < (0)) __PYX_ERR(32, 6, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPISessionObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(32, 6, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPISessionObject *)Py_None));
    }
    __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(32, 6, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, 1, "session", 0))) __PYX_ERR(32, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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(32, 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(32, 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__", 0);

  /* "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_mstate_global->__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(32, 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(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce__", __pyx_kwds); 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__", 0);

  /* "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(32, 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__", 0);

  /* "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_PyLong_FromSize_t(__pyx_fuse_7__pyx_f_6mpi4py_3MPI_tohandle(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 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\nCreate object from MPI handle.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_11fromhandle = {"fromhandle", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_handle,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(32, 27, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(32, 27, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "fromhandle", 0) < (0)) __PYX_ERR(32, 27, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("fromhandle", 1, 1, 1, i); __PYX_ERR(32, 27, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(32, 27, __pyx_L3_error)
    }
    __pyx_v_handle = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fromhandle", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 27, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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_PyLong_As_size_t(__pyx_v_handle); if (unlikely((__pyx_t_1 == ((Py_uintptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(32, 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(32, 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\nCall `Finalize` if not null.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_13free = {"free", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("free", __pyx_kwds); 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", 0);

  /* "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(32, 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\nCreate a new session.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_15Init = {"Init", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_info,&__pyx_mstate_global->__pyx_n_u_errhandler,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(32, 42, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(32, 42, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(32, 42, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Init", 0) < (0)) __PYX_ERR(32, 42, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__18);

      /* "src/mpi4py/MPI.src/Session.pyx":46
 *         cls,
 *         Info info: Info = INFO_NULL,
 *         Errhandler errhandler: Errhandler | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Self:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIErrhandlerObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(32, 42, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(32, 42, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__18);
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIErrhandlerObject *)Py_None));
    }
    __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(32, 42, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(32, 45, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_errhandler), __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler, 1, "errhandler", 0))) __PYX_ERR(32, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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 const )MPI_ERRHANDLER_NULL) && PyErr_Occurred())) __PYX_ERR(32, 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(32, 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) )
 *         options_set_errhandler(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(32, 53, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":55
 *         CHKERR( MPI_Session_init(
 *             info.ob_mpi, cerrhdl, &session.ob_mpi) )
 *         options_set_errhandler(session.ob_mpi)             # <<<<<<<<<<<<<<
 *         return session
 * 
*/
  __pyx_t_4 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_options_set_errhandler(__pyx_v_session->ob_mpi); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(32, 55, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":56
 *             info.ob_mpi, cerrhdl, &session.ob_mpi) )
 *         options_set_errhandler(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\nFinalize a session.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_17Finalize = {"Finalize", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Finalize", __pyx_kwds); 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) {
  MPI_Session __pyx_v_save;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Session __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("Finalize", 0);

  /* "src/mpi4py/MPI.src/Session.pyx":62
 *         Finalize a session.
 *         """
 *         cdef MPI_Session save = self.ob_mpi             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Session_finalize(&self.ob_mpi) )
 *         if constobj(self): self.ob_mpi = save
*/
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_save = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Session.pyx":63
 *         """
 *         cdef MPI_Session save = self.ob_mpi
 *         CHKERR( MPI_Session_finalize(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 *         if constobj(self): self.ob_mpi = save
 * 
*/
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Session_finalize((&__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(32, 63, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":64
 *         cdef MPI_Session save = self.ob_mpi
 *         CHKERR( MPI_Session_finalize(&self.ob_mpi) )
 *         if constobj(self): self.ob_mpi = save             # <<<<<<<<<<<<<<
 * 
 *     def Get_num_psets(self, Info info: Info = INFO_NULL) -> int:
*/
  __pyx_t_3 = (__pyx_fuse_7__pyx_f_6mpi4py_3MPI_constobj(__pyx_v_self) != 0);
  if (__pyx_t_3) {
    __pyx_v_self->ob_mpi = __pyx_v_save;
  }

  /* "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":66
 *         if constobj(self): self.ob_mpi = save
 * 
 *     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\nNumber of available process sets.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_19Get_num_psets = {"Get_num_psets", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(32, 66, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(32, 66, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Get_num_psets", 0) < (0)) __PYX_ERR(32, 66, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__19);
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(32, 66, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__19);
    }
    __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(32, 66, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(32, 66, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/Session.pyx":70
 *         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":71
 *         """
 *         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(32, 71, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":73
 *         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_PyLong_From_int(__pyx_v_num_psets); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 73, __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":66
 *         if constobj(self): self.ob_mpi = save
 * 
 *     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":75
 *         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\nName of the *n*-th process set.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_21Get_nth_pset = {"Get_nth_pset", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_n,&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(32, 75, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(32, 75, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(32, 75, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Get_nth_pset", 0) < (0)) __PYX_ERR(32, 75, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__20);
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Get_nth_pset", 0, 1, 2, i); __PYX_ERR(32, 75, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(32, 75, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(32, 75, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__20);
    }
    __pyx_v_n = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(32, 75, __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(32, 75, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(32, 75, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/Session.pyx":79
 *         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":80
 *         """
 *         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":81
 *         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(32, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_unused = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":82
 *         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(32, 82, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":84
 *         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(32, 84, __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":75
 *         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":86
 *         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\nReturn the current hints for a session.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_23Get_info = {"Get_info", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_info", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Session.pyx":90
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 90, __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":91
 *         """
 *         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(32, 91, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":93
 *         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":86
 *         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":95
 *         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\nReturn the current hints for a session and process set.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_25Get_pset_info = {"Get_pset_info", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pset_name,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(32, 95, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(32, 95, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Get_pset_info", 0) < (0)) __PYX_ERR(32, 95, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Get_pset_info", 1, 1, 1, i); __PYX_ERR(32, 95, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(32, 95, __pyx_L3_error)
    }
    __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(32, 95, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":99
 *         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":100
 *         """
 *         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(32, 100, __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":101
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 101, __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":102
 *         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(32, 102, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":104
 *         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":95
 *         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":106
 *         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\nCreate a new group from session and process set.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_27Create_group = {"Create_group", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pset_name,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(32, 106, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(32, 106, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create_group", 0) < (0)) __PYX_ERR(32, 106, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Create_group", 1, 1, 1, i); __PYX_ERR(32, 106, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(32, 106, __pyx_L3_error)
    }
    __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(32, 106, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":110
 *         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":111
 *         """
 *         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(32, 111, __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":112
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 112, __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":113
 *         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(32, 113, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":115
 *         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":106
 *         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":120
 *     # ---------------------------
 * 
 *     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\nAttach a user-provided buffer for sending in buffered mode.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_29Attach_buffer = {"Attach_buffer", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(32, 120, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(32, 120, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Attach_buffer", 0) < (0)) __PYX_ERR(32, 120, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Attach_buffer", 1, 1, 1, i); __PYX_ERR(32, 120, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(32, 120, __pyx_L3_error)
    }
    __pyx_v_buf = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Attach_buffer", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 120, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":124
 *         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":125
 *         """
 *         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":126
 *         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(32, 126, __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":127
 *         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
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Session.pyx":128
 *         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(32, 127, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Session.pyx":127
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Session.pyx":129
 *         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(32, 129, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":120
 *     # ---------------------------
 * 
 *     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":131
 *         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\nRemove an existing attached buffer.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_31Detach_buffer = {"Detach_buffer", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Detach_buffer", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Session.pyx":135
 *         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":136
 *         """
 *         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":137
 *         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
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Session.pyx":138
 *         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(32, 137, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Session.pyx":137
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Session.pyx":139
 *         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(32, 139, __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":131
 *         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":141
 *         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\nBlock until all buffered messages have been transmitted.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_33Flush_buffer = {"Flush_buffer", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Flush_buffer", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Session.pyx":145
 *         Block until all buffered messages have been transmitted.
 *         """
 *         with nogil: CHKERR( MPI_Session_flush_buffer(self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Iflush_buffer(self) -> Request:
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(32, 145, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Session.pyx":141
 *         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":147
 *         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\nNonblocking flush for buffered messages.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_35Iflush_buffer = {"Iflush_buffer", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Iflush_buffer", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Session.pyx":151
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 151, __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":152
 *         """
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Session_iflush_buffer(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &request.ob_mpi) )
 *         return request  # ~> MPI-4.1
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Session.pyx":153
 *         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(32, 152, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Session.pyx":152
 *         """
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Session.pyx":154
 *         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":147
 *         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":159
 *     # --------------
 * 
 *     @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\nCreate a new error handler for sessions.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_37Create_errhandler = {"Create_errhandler", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_errhandler_fn,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(32, 159, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(32, 159, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create_errhandler", 0) < (0)) __PYX_ERR(32, 159, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Create_errhandler", 1, 1, 1, i); __PYX_ERR(32, 159, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(32, 159, __pyx_L3_error)
    }
    __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, 159, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Session.pyx":167
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 167, __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":168
 *         """
 *         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":169
 *         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(32, 169, __pyx_L1_error)
  __pyx_v_index = __pyx_t_3;

  /* "src/mpi4py/MPI.src/Session.pyx":170
 *         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":171
 *         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(32, 171, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Session.pyx":170
 *         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":172
 *         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(32, 172, __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":173
 *             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(32, 173, __pyx_L5_except_error)

      /* "src/mpi4py/MPI.src/Session.pyx":174
 *         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, 174, __pyx_L5_except_error)
    }

    /* "src/mpi4py/MPI.src/Session.pyx":170
 *         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":175
 *             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":159
 *     # --------------
 * 
 *     @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":177
 *         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\nGet the error handler for a session.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_39Get_errhandler = {"Get_errhandler", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_errhandler", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Session.pyx":181
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 181, __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":182
 *         """
 *         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(32, 182, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":183
 *         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":177
 *         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":185
 *         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\nSet the error handler for a session.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_41Set_errhandler = {"Set_errhandler", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_errhandler,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(32, 185, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(32, 185, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Set_errhandler", 0) < (0)) __PYX_ERR(32, 185, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Set_errhandler", 1, 1, 1, i); __PYX_ERR(32, 185, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(32, 185, __pyx_L3_error)
    }
    __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, 185, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler, 0, "errhandler", 0))) __PYX_ERR(32, 185, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/Session.pyx":189
 *         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(32, 189, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":185
 *         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":191
 *         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\nCall the error handler installed on a session.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_43Call_errhandler = {"Call_errhandler", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_errorcode,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(32, 191, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(32, 191, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Call_errhandler", 0) < (0)) __PYX_ERR(32, 191, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Call_errhandler", 1, 1, 1, i); __PYX_ERR(32, 191, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(32, 191, __pyx_L3_error)
    }
    __pyx_v_errorcode = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) __PYX_ERR(32, 191, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Call_errhandler", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 191, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Session.pyx":195
 *         Call the error handler installed on a session.
 *         """
 *         CHKERR( MPI_Session_call_errhandler(self.ob_mpi, errorcode) )             # <<<<<<<<<<<<<<
 * 
 *     # Integer 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(32, 195, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":191
 *         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":200
 *     # --------------
 * 
 *     def toint(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate object to integer handle.
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_45toint(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_44toint, "toint(self) -> int\n\nTranslate object to integer handle.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_45toint = {"toint", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_45toint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_44toint};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_45toint(PyObject *__pyx_v_self, 
#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("toint (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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("toint", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("toint", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Session_44toint(((struct PyMPISessionObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_44toint(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("toint", 0);

  /* "src/mpi4py/MPI.src/Session.pyx":204
 *         Translate object to integer handle.
 *         """
 *         return MPI_Session_toint(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_int(MPI_Session_toint(__pyx_v_self->ob_mpi)); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 204, __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":200
 *     # --------------
 * 
 *     def toint(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate object to integer handle.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Session.toint", __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":206
 *         return MPI_Session_toint(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromint(cls, arg: int, /) -> Session:
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_47fromint(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Session_46fromint, "fromint(cls, arg: int, /) -> Session\n\nTranslate integer handle to object.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_47fromint = {"fromint", (PyCFunction)__pyx_pw_6mpi4py_3MPI_7Session_47fromint, METH_O, __pyx_doc_6mpi4py_3MPI_7Session_46fromint};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_47fromint(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fromint (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Session_46fromint(((PyTypeObject*)__pyx_v_cls), ((PyObject *)__pyx_v_arg));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_46fromint(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, 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("fromint", 0);

  /* "src/mpi4py/MPI.src/Session.pyx":211
 *         Translate integer handle to object.
 *         """
 *         return fromhandle(MPI_Session_fromint(arg))             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_As_int(__pyx_v_arg); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(32, 211, __pyx_L1_error)
  __pyx_t_2 = __pyx_fuse_7__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Session_fromint(__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 211, __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":206
 *         return MPI_Session_toint(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromint(cls, arg: int, /) -> Session:
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Session.fromint", __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":216
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_49py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_48py2f, "py2f(self) -> int\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_49py2f = {"py2f", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_49py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_48py2f};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_49py2f(PyObject *__pyx_v_self, 
#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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("py2f", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Session_48py2f(((struct PyMPISessionObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_48py2f(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", 0);

  /* "src/mpi4py/MPI.src/Session.pyx":219
 *         """
 *         """
 *         return MPI_Session_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_MPI_Fint(MPI_Session_c2f(__pyx_v_self->ob_mpi)); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 219, __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":216
 *     # --------------
 * 
 *     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":221
 *         return MPI_Session_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Session:
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_51f2py(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_50f2py, "f2py(cls, arg: int) -> Session\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_51f2py = {"f2py", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_51f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_50f2py};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_51f2py(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_arg,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(32, 221, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(32, 221, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "f2py", 0) < (0)) __PYX_ERR(32, 221, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, i); __PYX_ERR(32, 221, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(32, 221, __pyx_L3_error)
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 221, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_50f2py(((PyTypeObject*)__pyx_v_cls), __pyx_v_arg);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_50f2py(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", 0);

  /* "src/mpi4py/MPI.src/Session.pyx":225
 *         """
 *         """
 *         return fromhandle(MPI_Session_f2c(arg))             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_As_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_1 == ((MPI_Fint)-1)) && PyErr_Occurred())) __PYX_ERR(32, 225, __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(32, 225, __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":221
 *         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_SIZE
  __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 ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_comm,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 39, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 39, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < (0)) __PYX_ERR(33, 39, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPICommObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 39, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPICommObject *)Py_None));
    }
    __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(33, 39, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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(33, 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(33, 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__", 0);

  /* "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_mstate_global->__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(33, 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(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce__", __pyx_kwds); 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__", 0);

  /* "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(33, 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__", 0);

  /* "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_PyLong_FromSize_t(__pyx_fuse_8__pyx_f_6mpi4py_3MPI_tohandle(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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\nCreate object from MPI handle.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_11fromhandle = {"fromhandle", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_handle,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 60, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 60, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "fromhandle", 0) < (0)) __PYX_ERR(33, 60, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("fromhandle", 1, 1, 1, i); __PYX_ERR(33, 60, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 60, __pyx_L3_error)
    }
    __pyx_v_handle = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fromhandle", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 60, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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_PyLong_As_size_t(__pyx_v_handle); if (unlikely((__pyx_t_1 == ((Py_uintptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 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\nCall `Free` if not null or predefined.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_13free = {"free", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("free", __pyx_kwds); 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", 0);

  /* "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(33, 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\nAccess the group associated with a communicator.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_15Get_group = {"Get_group", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_group", __pyx_kwds); 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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 81, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_group, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 87, __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":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_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\nReturn the number of processes in a communicator.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_17Get_size = {"Get_size", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_size", __pyx_kwds); 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", 0);

  /* "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(33, 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_PyLong_From_int(__pyx_v_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_size, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 103, __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":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_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\nReturn the rank of this process in a communicator.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_19Get_rank = {"Get_rank", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_rank", __pyx_kwds); 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", 0);

  /* "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(33, 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_PyLong_From_int(__pyx_v_rank); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_rank, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 116, __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":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_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\nCompare two communicators.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_21Compare = {"Compare", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_comm,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 118, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 118, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Compare", 0) < (0)) __PYX_ERR(33, 118, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Compare", 1, 1, 1, i); __PYX_ERR(33, 118, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 118, __pyx_L3_error)
    }
    __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(33, 118, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, 0, "comm", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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_PyLong_From_int(__pyx_v_flag); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 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\nClone an existing communicator.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_23Clone = {"Clone", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Clone", __pyx_kwds); 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", 0);

  /* "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) )
 *         options_set_errhandler(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(33, 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) )             # <<<<<<<<<<<<<<
 *         options_set_errhandler(comm.ob_mpi)
 *         return comm
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 135, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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) )
 *         options_set_errhandler(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
*/
  __pyx_t_3 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_options_set_errhandler(__pyx_v_comm->ob_mpi); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 136, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":137
 *         with nogil: CHKERR( MPI_Comm_dup(self.ob_mpi, &comm.ob_mpi) )
 *         options_set_errhandler(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\nDuplicate a communicator.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_25Dup = {"Dup", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 139, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 139, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Dup", 0) < (0)) __PYX_ERR(33, 139, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIInfoObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 139, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIInfoObject *)Py_None));
    }
    __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(33, 139, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 1, "info", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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 const )MPI_INFO_NULL) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 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:
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*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(33, 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:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L6;
          }
          __pyx_L5_error: {
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            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) )
 *         options_set_errhandler(comm.ob_mpi)
*/
  /*else*/ {
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "src/mpi4py/MPI.src/Comm.pyx":150
 *         else:
 *             with nogil: CHKERR( MPI_Comm_dup_with_info(
 *                 self.ob_mpi, cinfo, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         options_set_errhandler(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(33, 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) )
 *         options_set_errhandler(comm.ob_mpi)
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L9;
          }
          __pyx_L8_error: {
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            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) )
 *         options_set_errhandler(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
*/
  __pyx_t_5 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_options_set_errhandler(__pyx_v_comm->ob_mpi); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(33, 151, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":152
 *                 self.ob_mpi, cinfo, &comm.ob_mpi) )
 *         options_set_errhandler(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\nDuplicate a communicator with hints.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_27Dup_with_info = {"Dup_with_info", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 154, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 154, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Dup_with_info", 0) < (0)) __PYX_ERR(33, 154, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Dup_with_info", 1, 1, 1, i); __PYX_ERR(33, 154, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 154, __pyx_L3_error)
    }
    __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(33, 154, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(33, 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) )
 *         options_set_errhandler(comm.ob_mpi)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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) )             # <<<<<<<<<<<<<<
 *         options_set_errhandler(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(33, 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) )
 *         options_set_errhandler(comm.ob_mpi)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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) )
 *         options_set_errhandler(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
*/
  __pyx_t_3 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_options_set_errhandler(__pyx_v_comm->ob_mpi); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 161, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":162
 *             self.ob_mpi, info.ob_mpi, &comm.ob_mpi) )
 *         options_set_errhandler(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\nNonblocking duplicate a communicator.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_29Idup = {"Idup", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 164, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 164, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Idup", 0) < (0)) __PYX_ERR(33, 164, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIInfoObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 164, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIInfoObject *)Py_None));
    }
    __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(33, 164, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 1, "info", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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 const )MPI_INFO_NULL) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 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) )
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*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(33, 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:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L6;
          }
          __pyx_L5_error: {
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            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*/ {
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*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) )             # <<<<<<<<<<<<<<
 *         options_set_errhandler(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(33, 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:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L9;
          }
          __pyx_L8_error: {
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            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) )
 *         options_set_errhandler(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return (comm, request)
 * 
*/
  __pyx_t_5 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_options_set_errhandler(__pyx_v_comm->ob_mpi); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(33, 179, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":180
 *                 &comm.ob_mpi, &request.ob_mpi) )
 *         options_set_errhandler(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(33, 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)) != (0)) __PYX_ERR(33, 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)) != (0)) __PYX_ERR(33, 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\nNonblocking duplicate a communicator with hints.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_31Idup_with_info = {"Idup_with_info", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 182, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 182, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Idup_with_info", 0) < (0)) __PYX_ERR(33, 182, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Idup_with_info", 1, 1, 1, i); __PYX_ERR(33, 182, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 182, __pyx_L3_error)
    }
    __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(33, 182, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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) )             # <<<<<<<<<<<<<<
 *         options_set_errhandler(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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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) )
 *         options_set_errhandler(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return (comm, request)
 * 
*/
  __pyx_t_3 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_options_set_errhandler(__pyx_v_comm->ob_mpi); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 191, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":192
 *             &comm.ob_mpi, &request.ob_mpi) )
 *         options_set_errhandler(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(33, 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)) != (0)) __PYX_ERR(33, 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)) != (0)) __PYX_ERR(33, 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\nCreate communicator from group.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_33Create = {"Create", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_group,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 194, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 194, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create", 0) < (0)) __PYX_ERR(33, 194, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Create", 1, 1, 1, i); __PYX_ERR(33, 194, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 194, __pyx_L3_error)
    }
    __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(33, 194, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, 0, "group", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm);
  __pyx_v_cls = __pyx_mstate_global->__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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm); 
  if (__pyx_t_1) {
    __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm);
    __Pyx_DECREF_SET(__pyx_v_cls, __pyx_mstate_global->__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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intercomm); 
  if (__pyx_t_1) {
    __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intercomm);
    __Pyx_DECREF_SET(__pyx_v_cls, __pyx_mstate_global->__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(33, 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) )
 *         options_set_errhandler(comm.ob_mpi)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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) )             # <<<<<<<<<<<<<<
 *         options_set_errhandler(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(33, 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) )
 *         options_set_errhandler(comm.ob_mpi)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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) )
 *         options_set_errhandler(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
*/
  __pyx_t_4 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_options_set_errhandler(__pyx_v_comm->ob_mpi); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(33, 204, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":205
 *             self.ob_mpi, group.ob_mpi, &comm.ob_mpi) )
 *         options_set_errhandler(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\nSplit communicator by color and key.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_35Split = {"Split", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_color,&__pyx_mstate_global->__pyx_n_u_key,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 207, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 207, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 207, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Split", 0) < (0)) __PYX_ERR(33, 207, __pyx_L3_error)
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 207, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 207, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_color = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_color == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 207, __pyx_L3_error)
    } else {
      __pyx_v_color = ((int)0);
    }
    if (values[1]) {
      __pyx_v_key = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_key == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 207, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm);
  __pyx_v_cls = __pyx_mstate_global->__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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm); 
  if (__pyx_t_1) {
    __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm);
    __Pyx_DECREF_SET(__pyx_v_cls, __pyx_mstate_global->__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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intercomm); 
  if (__pyx_t_1) {
    __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intercomm);
    __Pyx_DECREF_SET(__pyx_v_cls, __pyx_mstate_global->__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(33, 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) )
 *         options_set_errhandler(comm.ob_mpi)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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) )             # <<<<<<<<<<<<<<
 *         options_set_errhandler(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(33, 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) )
 *         options_set_errhandler(comm.ob_mpi)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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) )
 *         options_set_errhandler(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
*/
  __pyx_t_4 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_options_set_errhandler(__pyx_v_comm->ob_mpi); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(33, 217, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":218
 *             self.ob_mpi, color, key, &comm.ob_mpi) )
 *         options_set_errhandler(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\nSplit communicator by split type.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_37Split_type = {"Split_type", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_split_type,&__pyx_mstate_global->__pyx_n_u_key,&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 220, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 220, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 220, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 220, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Split_type", 0) < (0)) __PYX_ERR(33, 220, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__21);
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Split_type", 0, 1, 3, i); __PYX_ERR(33, 220, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 220, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 220, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 220, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__21);
    }
    __pyx_v_split_type = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_split_type == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 222, __pyx_L3_error)
    if (values[1]) {
      __pyx_v_key = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_key == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 220, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm);
  __pyx_v_cls = __pyx_mstate_global->__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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm); 
  if (__pyx_t_1) {
    __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm);
    __Pyx_DECREF_SET(__pyx_v_cls, __pyx_mstate_global->__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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intercomm); 
  if (__pyx_t_1) {
    __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intercomm);
    __Pyx_DECREF_SET(__pyx_v_cls, __pyx_mstate_global->__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(33, 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) )
 *         options_set_errhandler(comm.ob_mpi)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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) )             # <<<<<<<<<<<<<<
 *         options_set_errhandler(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(33, 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) )
 *         options_set_errhandler(comm.ob_mpi)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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) )
 *         options_set_errhandler(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
*/
  __pyx_t_4 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_options_set_errhandler(__pyx_v_comm->ob_mpi); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(33, 235, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":236
 *             self.ob_mpi, split_type, key, info.ob_mpi, &comm.ob_mpi) )
 *         options_set_errhandler(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\nFree a communicator.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_39Free = {"Free", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Free", __pyx_kwds); 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) {
  MPI_Comm __pyx_v_save;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Comm __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("Free", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":245
 *         Free a communicator.
 *         """
 *         cdef MPI_Comm save = self.ob_mpi             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_free(&self.ob_mpi) )
 *         if constobj(self): self.ob_mpi = save
*/
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_save = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Comm.pyx":246
 *         """
 *         cdef MPI_Comm save = self.ob_mpi
 *         with nogil: CHKERR( MPI_Comm_free(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 *         if constobj(self): self.ob_mpi = save
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_free((&__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(33, 246, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":247
 *         cdef MPI_Comm save = self.ob_mpi
 *         with nogil: CHKERR( MPI_Comm_free(&self.ob_mpi) )
 *         if constobj(self): self.ob_mpi = save             # <<<<<<<<<<<<<<
 * 
 *     # Process Fault Tolerance
*/
  __pyx_t_3 = (__pyx_fuse_8__pyx_f_6mpi4py_3MPI_constobj(__pyx_v_self) != 0);
  if (__pyx_t_3) {
    __pyx_v_self->ob_mpi = __pyx_v_save;
  }

  /* "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\nRevoke a communicator.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_41Revoke = {"Revoke", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Revoke", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":256
 *         Revoke a communicator.
 *         """
 *         with nogil: CHKERR( MPI_Comm_revoke(self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Is_revoked(self) -> bool:
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 256, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nIndicate whether the communicator has been revoked.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_43Is_revoked = {"Is_revoked", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Is_revoked", __pyx_kwds); 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", 0);

  /* "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
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 263, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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(33, 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\nExtract the group of failed processes.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_45Get_failed = {"Get_failed", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_failed", __pyx_kwds); 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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 271, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nAcknowledge failures on a communicator.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_47Ack_failed = {"Ack_failed", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_num_to_ack,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 274, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 274, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Ack_failed", 0) < (0)) __PYX_ERR(33, 274, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 274, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __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(33, 274, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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_PyLong_As_int(__pyx_v_num_to_ack); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 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
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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_PyLong_From_int(__pyx_v_num_acked); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 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\nBlocking agreement.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_49Agree = {"Agree", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_flag,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 288, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 288, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Agree", 0) < (0)) __PYX_ERR(33, 288, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Agree", 1, 1, 1, i); __PYX_ERR(33, 288, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 288, __pyx_L3_error)
    }
    __pyx_v_flag = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_flag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 288, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Agree", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 288, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":292
 *         Blocking agreement.
 *         """
 *         with nogil: CHKERR( MPI_Comm_agree(self.ob_mpi, &flag) )             # <<<<<<<<<<<<<<
 *         return flag
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 292, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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_PyLong_From_int(__pyx_v_flag); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 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\nNonblocking agreement.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_51Iagree = {"Iagree", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_flag,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 295, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 295, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Iagree", 0) < (0)) __PYX_ERR(33, 295, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Iagree", 1, 1, 1, i); __PYX_ERR(33, 295, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 295, __pyx_L3_error)
    }
    __pyx_v_flag = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iagree", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 295, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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;
  size_t __pyx_t_4;
  int __pyx_t_5;
  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, __pyx_k_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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_3 = NULL;
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_flag_expecting_int_buffer_of_len};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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_5 = __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_5 == ((int)-1))) __PYX_ERR(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nShrink a communicator to remove all failed processes.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_53Shrink = {"Shrink", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Shrink", __pyx_kwds); 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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm);
  __pyx_v_cls = __pyx_mstate_global->__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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm); 
  if (__pyx_t_1) {
    __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm);
    __Pyx_DECREF_SET(__pyx_v_cls, __pyx_mstate_global->__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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intercomm); 
  if (__pyx_t_1) {
    __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intercomm);
    __Pyx_DECREF_SET(__pyx_v_cls, __pyx_mstate_global->__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) )
 *         options_set_errhandler(comm.ob_mpi)
*/
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_New(__pyx_v_cls); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 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) )             # <<<<<<<<<<<<<<
 *         options_set_errhandler(comm.ob_mpi)
 *         return comm
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 318, __pyx_L5_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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) )
 *         options_set_errhandler(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
*/
  __pyx_t_4 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_options_set_errhandler(__pyx_v_comm->ob_mpi); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(33, 319, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":320
 *         with nogil: CHKERR( MPI_Comm_shrink(self.ob_mpi, &comm.ob_mpi) )
 *         options_set_errhandler(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\nNonblocking shrink a communicator to remove all failed processes.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_55Ishrink = {"Ishrink", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Ishrink", __pyx_kwds); 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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm);
  __pyx_v_cls = __pyx_mstate_global->__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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm); 
  if (__pyx_t_1) {
    __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm);
    __Pyx_DECREF_SET(__pyx_v_cls, __pyx_mstate_global->__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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intercomm); 
  if (__pyx_t_1) {
    __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intercomm);
    __Pyx_DECREF_SET(__pyx_v_cls, __pyx_mstate_global->__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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 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) )
 *         options_set_errhandler(comm.ob_mpi)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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) )             # <<<<<<<<<<<<<<
 *         options_set_errhandler(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(33, 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) )
 *         options_set_errhandler(comm.ob_mpi)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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) )
 *         options_set_errhandler(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return (comm, request)
 * 
*/
  __pyx_t_4 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_options_set_errhandler(__pyx_v_comm->ob_mpi); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(33, 333, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":334
 *             self.ob_mpi, &comm.ob_mpi, &request.ob_mpi) )
 *         options_set_errhandler(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(33, 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)) != (0)) __PYX_ERR(33, 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)) != (0)) __PYX_ERR(33, 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\nSet new values for the hints associated with a communicator.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_57Set_info = {"Set_info", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 339, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 339, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Set_info", 0) < (0)) __PYX_ERR(33, 339, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Set_info", 1, 1, 1, i); __PYX_ERR(33, 339, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 339, __pyx_L3_error)
    }
    __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, 339, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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) )
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nReturn the current hints for a communicator.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_59Get_info = {"Get_info", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_info", __pyx_kwds); 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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_info, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 358, __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":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_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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":361
 * 
 *         def __set__(self, value: Info):
 *             self.Set_info(value)             # <<<<<<<<<<<<<<
 * 
 *     # Point to Point communication
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_value};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Set_info, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 361, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __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_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\nAttach a user-provided buffer for sending in buffered mode.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_61Attach_buffer = {"Attach_buffer", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 369, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 369, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Attach_buffer", 0) < (0)) __PYX_ERR(33, 369, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Attach_buffer", 1, 1, 1, i); __PYX_ERR(33, 369, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 369, __pyx_L3_error)
    }
    __pyx_v_buf = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Attach_buffer", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 369, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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(33, 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
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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(33, 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\nRemove an existing attached buffer.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_63Detach_buffer = {"Detach_buffer", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Detach_buffer", __pyx_kwds); 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", 0);

  /* "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
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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(33, 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\nBlock until all buffered messages have been transmitted.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_65Flush_buffer = {"Flush_buffer", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Flush_buffer", __pyx_kwds); 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", 0);

  /* "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:
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 394, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nNonblocking flush for buffered messages.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_67Iflush_buffer = {"Iflush_buffer", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Iflush_buffer", __pyx_kwds); 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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nBlocking 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.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_69Send = {"Send", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_dest,&__pyx_mstate_global->__pyx_n_u_tag,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 408, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 408, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 408, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 408, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Send", 0) < (0)) __PYX_ERR(33, 408, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Send", 0, 2, 3, i); __PYX_ERR(33, 408, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 408, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 408, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 408, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_dest = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 411, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 408, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nBlocking receive.\n\n.. note:: This function blocks until the message is received.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_71Recv = {"Recv", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_source,&__pyx_mstate_global->__pyx_n_u_tag,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 426, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 426, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 426, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 426, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 426, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Recv", 0) < (0)) __PYX_ERR(33, 426, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Comm.pyx":431
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Recv", 0, 1, 4, i); __PYX_ERR(33, 426, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 426, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 426, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 426, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 426, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_source = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 429, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_mstate_global->__pyx_k__22;
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 430, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_mstate_global->__pyx_k__23;
    }
    __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(33, 426, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(33, 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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nSend 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.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_73Sendrecv = {"Sendrecv", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_dest,&__pyx_mstate_global->__pyx_n_u_sendtag,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_source,&__pyx_mstate_global->__pyx_n_u_recvtag,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 447, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(33, 447, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(33, 447, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(33, 447, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 447, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 447, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 447, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 447, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Sendrecv", 0) < (0)) __PYX_ERR(33, 447, __pyx_L3_error)

      /* "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,
*/
      if (!values[3]) values[3] = __Pyx_NewRef(((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:
 *         """
*/
      if (!values[6]) values[6] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Sendrecv", 0, 2, 7, i); __PYX_ERR(33, 447, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(33, 447, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(33, 447, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(33, 447, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 447, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 447, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 447, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 447, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }

      /* "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,
*/
      if (!values[3]) values[3] = __Pyx_NewRef(((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:
 *         """
*/
      if (!values[6]) values[6] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_dest = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 450, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_sendtag = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_sendtag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 451, __pyx_L3_error)
    } else {
      __pyx_v_sendtag = ((int)0);
    }
    __pyx_v_recvbuf = values[3];
    if (values[4]) {
      __pyx_v_source = __Pyx_PyLong_As_int(values[4]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 453, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_mstate_global->__pyx_k__24;
    }
    if (values[5]) {
      __pyx_v_recvtag = __Pyx_PyLong_As_int(values[5]); if (unlikely((__pyx_v_recvtag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 454, __pyx_L3_error)
    } else {
      __pyx_v_recvtag = __pyx_mstate_global->__pyx_k__25;
    }
    __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(33, 447, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(33, 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(33, 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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(33, 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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nSend 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.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_75Sendrecv_replace = {"Sendrecv_replace", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_dest,&__pyx_mstate_global->__pyx_n_u_sendtag,&__pyx_mstate_global->__pyx_n_u_source,&__pyx_mstate_global->__pyx_n_u_recvtag,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 475, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(33, 475, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(33, 475, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 475, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 475, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 475, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 475, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Sendrecv_replace", 0) < (0)) __PYX_ERR(33, 475, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Comm.pyx":482
 *         int source: int = ANY_SOURCE,
 *         int recvtag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
      if (!values[5]) values[5] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Sendrecv_replace", 0, 2, 6, i); __PYX_ERR(33, 475, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(33, 475, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(33, 475, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 475, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 475, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 475, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 475, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[5]) values[5] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __pyx_v_buf = values[0];
    __pyx_v_dest = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 478, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_sendtag = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_sendtag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 479, __pyx_L3_error)
    } else {
      __pyx_v_sendtag = ((int)0);
    }
    if (values[3]) {
      __pyx_v_source = __Pyx_PyLong_As_int(values[3]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 480, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_mstate_global->__pyx_k__26;
    }
    if (values[4]) {
      __pyx_v_recvtag = __Pyx_PyLong_As_int(values[4]); if (unlikely((__pyx_v_recvtag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 481, __pyx_L3_error)
    } else {
      __pyx_v_recvtag = __pyx_mstate_global->__pyx_k__27;
    }
    __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(33, 475, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(33, 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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(33, 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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L7;
        }
        __pyx_L6_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nNonblocking send.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_77Isend = {"Isend", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_dest,&__pyx_mstate_global->__pyx_n_u_tag,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 507, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 507, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 507, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 507, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Isend", 0) < (0)) __PYX_ERR(33, 507, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Isend", 0, 2, 3, i); __PYX_ERR(33, 507, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 507, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 507, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 507, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_dest = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 510, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 507, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nNonblocking receive.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_79Irecv = {"Irecv", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_source,&__pyx_mstate_global->__pyx_n_u_tag,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 524, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 524, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 524, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 524, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Irecv", 0) < (0)) __PYX_ERR(33, 524, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Irecv", 0, 1, 3, i); __PYX_ERR(33, 524, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 524, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 524, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 524, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_source = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 527, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_mstate_global->__pyx_k__28;
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 528, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_mstate_global->__pyx_k__29;
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Irecv", 0, 1, 3, __pyx_nargs); __PYX_ERR(33, 524, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nNonblocking send and receive.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_81Isendrecv = {"Isendrecv", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_dest,&__pyx_mstate_global->__pyx_n_u_sendtag,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_source,&__pyx_mstate_global->__pyx_n_u_recvtag,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 541, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(33, 541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(33, 541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Isendrecv", 0) < (0)) __PYX_ERR(33, 541, __pyx_L3_error)

      /* "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,
*/
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Isendrecv", 0, 2, 6, i); __PYX_ERR(33, 541, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(33, 541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(33, 541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 541, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 541, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_dest = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 544, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_sendtag = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_sendtag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 545, __pyx_L3_error)
    } else {
      __pyx_v_sendtag = ((int)0);
    }
    __pyx_v_recvbuf = values[3];
    if (values[4]) {
      __pyx_v_source = __Pyx_PyLong_As_int(values[4]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 547, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_mstate_global->__pyx_k__30;
    }
    if (values[5]) {
      __pyx_v_recvtag = __Pyx_PyLong_As_int(values[5]); if (unlikely((__pyx_v_recvtag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 548, __pyx_L3_error)
    } else {
      __pyx_v_recvtag = __pyx_mstate_global->__pyx_k__31;
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Isendrecv", 0, 2, 6, __pyx_nargs); __PYX_ERR(33, 541, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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(33, 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)) != (0)) __PYX_ERR(33, 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)) != (0)) __PYX_ERR(33, 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\nSend 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.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_83Isendrecv_replace = {"Isendrecv_replace", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_dest,&__pyx_mstate_global->__pyx_n_u_sendtag,&__pyx_mstate_global->__pyx_n_u_source,&__pyx_mstate_global->__pyx_n_u_recvtag,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 563, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(33, 563, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 563, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 563, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 563, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 563, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Isendrecv_replace", 0) < (0)) __PYX_ERR(33, 563, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Isendrecv_replace", 0, 2, 5, i); __PYX_ERR(33, 563, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(33, 563, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 563, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 563, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 563, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 563, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_dest = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 566, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_sendtag = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_sendtag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 567, __pyx_L3_error)
    } else {
      __pyx_v_sendtag = ((int)0);
    }
    if (values[3]) {
      __pyx_v_source = __Pyx_PyLong_As_int(values[3]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 568, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_mstate_global->__pyx_k__32;
    }
    if (values[4]) {
      __pyx_v_recvtag = __Pyx_PyLong_As_int(values[4]); if (unlikely((__pyx_v_recvtag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 569, __pyx_L3_error)
    } else {
      __pyx_v_recvtag = __pyx_mstate_global->__pyx_k__33;
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Isendrecv_replace", 0, 2, 5, __pyx_nargs); __PYX_ERR(33, 563, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L7;
        }
        __pyx_L6_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nBlocking test for a message.\n\n.. note:: This function blocks until the message arrives.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_85Probe = {"Probe", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_source,&__pyx_mstate_global->__pyx_n_u_tag,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 596, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 596, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 596, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 596, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Probe", 0) < (0)) __PYX_ERR(33, 596, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Comm.pyx":600
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Literal[True]:
 *         """
*/
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 596, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 596, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 596, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    if (values[0]) {
      __pyx_v_source = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 598, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_mstate_global->__pyx_k__34;
    }
    if (values[1]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 599, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_mstate_global->__pyx_k__35;
    }
    __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(33, 596, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(33, 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
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nNonblocking test for a message.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_87Iprobe = {"Iprobe", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_source,&__pyx_mstate_global->__pyx_n_u_tag,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 612, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 612, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 612, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 612, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Iprobe", 0) < (0)) __PYX_ERR(33, 612, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Comm.pyx":616
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> bool:
 *         """
*/
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 612, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 612, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 612, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    if (values[0]) {
      __pyx_v_source = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 614, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_mstate_global->__pyx_k__36;
    }
    if (values[1]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 615, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_mstate_global->__pyx_k__37;
    }
    __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(33, 612, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(33, 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
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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(33, 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\nBlocking test for a matched message.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_89Mprobe = {"Mprobe", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_source,&__pyx_mstate_global->__pyx_n_u_tag,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 630, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 630, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 630, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 630, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Mprobe", 0) < (0)) __PYX_ERR(33, 630, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Comm.pyx":634
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Message:
 *         """
*/
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 630, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 630, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 630, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    if (values[0]) {
      __pyx_v_source = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 632, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_mstate_global->__pyx_k__38;
    }
    if (values[1]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 633, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_mstate_global->__pyx_k__39;
    }
    __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(33, 630, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(33, 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)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 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\nNonblocking test for a matched message.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_91Improbe = {"Improbe", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_source,&__pyx_mstate_global->__pyx_n_u_tag,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 647, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 647, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 647, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 647, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Improbe", 0) < (0)) __PYX_ERR(33, 647, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Comm.pyx":651
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Message | None:
 *         """
*/
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 647, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 647, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 647, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    if (values[0]) {
      __pyx_v_source = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 649, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_mstate_global->__pyx_k__40;
    }
    if (values[1]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 650, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_mstate_global->__pyx_k__41;
    }
    __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(33, 647, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(33, 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
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 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\nCreate a persistent request for a standard send.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_93Send_init = {"Send_init", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_dest,&__pyx_mstate_global->__pyx_n_u_tag,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 669, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 669, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 669, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 669, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Send_init", 0) < (0)) __PYX_ERR(33, 669, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Send_init", 0, 2, 3, i); __PYX_ERR(33, 669, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 669, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 669, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 669, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_dest = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 672, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 669, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nCreate a persistent request for a receive.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_95Recv_init = {"Recv_init", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_source,&__pyx_mstate_global->__pyx_n_u_tag,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 686, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 686, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 686, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 686, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Recv_init", 0) < (0)) __PYX_ERR(33, 686, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Recv_init", 0, 1, 3, i); __PYX_ERR(33, 686, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 686, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 686, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 686, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_source = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 689, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_mstate_global->__pyx_k__42;
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 690, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_mstate_global->__pyx_k__43;
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Recv_init", 0, 1, 3, __pyx_nargs); __PYX_ERR(33, 686, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nCreate request for a partitioned send operation.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_97Psend_init = {"Psend_init", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_partitions,&__pyx_mstate_global->__pyx_n_u_dest,&__pyx_mstate_global->__pyx_n_u_tag,&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 706, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(33, 706, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 706, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 706, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 706, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 706, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Psend_init", 0) < (0)) __PYX_ERR(33, 706, __pyx_L3_error)
      if (!values[4]) values[4] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__44);
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Psend_init", 0, 3, 5, i); __PYX_ERR(33, 706, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(33, 706, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 706, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 706, __pyx_L3_error)
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 706, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 706, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[4]) values[4] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__44);
    }
    __pyx_v_buf = values[0];
    __pyx_v_partitions = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_partitions == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 709, __pyx_L3_error)
    __pyx_v_dest = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 710, __pyx_L3_error)
    if (values[3]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[3]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 706, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nCreate request for a partitioned recv operation.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_99Precv_init = {"Precv_init", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_partitions,&__pyx_mstate_global->__pyx_n_u_source,&__pyx_mstate_global->__pyx_n_u_tag,&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 725, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(33, 725, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 725, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 725, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 725, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 725, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Precv_init", 0) < (0)) __PYX_ERR(33, 725, __pyx_L3_error)
      if (!values[4]) values[4] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__45);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Precv_init", 0, 2, 5, i); __PYX_ERR(33, 725, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(33, 725, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 725, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 725, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 725, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 725, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[4]) values[4] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__45);
    }
    __pyx_v_buf = values[0];
    __pyx_v_partitions = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_partitions == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 728, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_source = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 729, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_mstate_global->__pyx_k__46;
    }
    if (values[3]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[3]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 730, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_mstate_global->__pyx_k__47;
    }
    __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(33, 725, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nBlocking send in buffered mode.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_101Bsend = {"Bsend", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_dest,&__pyx_mstate_global->__pyx_n_u_tag,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 749, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 749, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 749, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 749, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Bsend", 0) < (0)) __PYX_ERR(33, 749, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Bsend", 0, 2, 3, i); __PYX_ERR(33, 749, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 749, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 749, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 749, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_dest = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 752, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 749, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nBlocking send in synchronous mode.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_103Ssend = {"Ssend", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_dest,&__pyx_mstate_global->__pyx_n_u_tag,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 763, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 763, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 763, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 763, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Ssend", 0) < (0)) __PYX_ERR(33, 763, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Ssend", 0, 2, 3, i); __PYX_ERR(33, 763, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 763, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 763, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 763, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_dest = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 766, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 763, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nBlocking send in ready mode.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_105Rsend = {"Rsend", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_dest,&__pyx_mstate_global->__pyx_n_u_tag,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 777, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 777, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 777, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 777, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Rsend", 0) < (0)) __PYX_ERR(33, 777, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Rsend", 0, 2, 3, i); __PYX_ERR(33, 777, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 777, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 777, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 777, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_dest = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 780, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 777, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nNonblocking send in buffered mode.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_107Ibsend = {"Ibsend", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_dest,&__pyx_mstate_global->__pyx_n_u_tag,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 793, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 793, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 793, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 793, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Ibsend", 0) < (0)) __PYX_ERR(33, 793, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Ibsend", 0, 2, 3, i); __PYX_ERR(33, 793, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 793, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 793, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 793, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_dest = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 796, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 793, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nNonblocking send in synchronous mode.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_109Issend = {"Issend", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_dest,&__pyx_mstate_global->__pyx_n_u_tag,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 810, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 810, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 810, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 810, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Issend", 0) < (0)) __PYX_ERR(33, 810, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Issend", 0, 2, 3, i); __PYX_ERR(33, 810, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 810, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 810, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 810, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_dest = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 813, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 810, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nNonblocking send in ready mode.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_111Irsend = {"Irsend", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_dest,&__pyx_mstate_global->__pyx_n_u_tag,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 827, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 827, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 827, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 827, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Irsend", 0) < (0)) __PYX_ERR(33, 827, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Irsend", 0, 2, 3, i); __PYX_ERR(33, 827, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 827, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 827, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 827, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_dest = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 830, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 827, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nPersistent request for a send in buffered mode.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_113Bsend_init = {"Bsend_init", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_dest,&__pyx_mstate_global->__pyx_n_u_tag,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 846, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 846, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 846, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 846, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Bsend_init", 0) < (0)) __PYX_ERR(33, 846, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Bsend_init", 0, 2, 3, i); __PYX_ERR(33, 846, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 846, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 846, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 846, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_dest = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 849, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 846, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nPersistent request for a send in synchronous mode.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_115Ssend_init = {"Ssend_init", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_dest,&__pyx_mstate_global->__pyx_n_u_tag,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 863, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 863, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 863, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 863, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Ssend_init", 0) < (0)) __PYX_ERR(33, 863, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Ssend_init", 0, 2, 3, i); __PYX_ERR(33, 863, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 863, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 863, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 863, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_dest = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 866, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 863, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nPersistent request for a send in ready mode.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_117Rsend_init = {"Rsend_init", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_dest,&__pyx_mstate_global->__pyx_n_u_tag,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 880, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 880, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 880, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 880, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Rsend_init", 0) < (0)) __PYX_ERR(33, 880, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Rsend_init", 0, 2, 3, i); __PYX_ERR(33, 880, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 880, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 880, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 880, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_dest = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 883, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 880, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nBarrier synchronization.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_119Barrier = {"Barrier", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Barrier", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":907
 *         Barrier synchronization.
 *         """
 *         with nogil: CHKERR( MPI_Barrier(self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Global Communication Functions
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 907, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nBroadcast data from one process to all other processes.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_121Bcast = {"Bcast", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_root,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 912, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 912, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 912, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Bcast", 0) < (0)) __PYX_ERR(33, 912, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Bcast", 0, 1, 2, i); __PYX_ERR(33, 912, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 912, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 912, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_root = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 912, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nGather data to one process from all other processes.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_123Gather = {"Gather", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_root,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 926, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 926, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 926, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 926, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Gather", 0) < (0)) __PYX_ERR(33, 926, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Gather", 0, 2, 3, i); __PYX_ERR(33, 926, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 926, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 926, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 926, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    if (values[2]) {
      __pyx_v_root = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 926, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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(33, 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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nGather Vector.\n\nGather data to one process from all other processes\nproviding different amounts of data and displacements.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_125Gatherv = {"Gatherv", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_root,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 942, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 942, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 942, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 942, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Gatherv", 0) < (0)) __PYX_ERR(33, 942, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Gatherv", 0, 2, 3, i); __PYX_ERR(33, 942, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 942, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 942, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 942, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    if (values[2]) {
      __pyx_v_root = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 942, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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(33, 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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nScatter data from one process to all other processes.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_127Scatter = {"Scatter", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_root,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 961, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 961, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 961, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 961, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Scatter", 0) < (0)) __PYX_ERR(33, 961, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Scatter", 0, 2, 3, i); __PYX_ERR(33, 961, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 961, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 961, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 961, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    if (values[2]) {
      __pyx_v_root = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 961, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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(33, 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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nScatter Vector.\n\nScatter data from one process to all other processes\nproviding different amounts of data and displacements.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_129Scatterv = {"Scatterv", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_root,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 977, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 977, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 977, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 977, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Scatterv", 0) < (0)) __PYX_ERR(33, 977, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Scatterv", 0, 2, 3, i); __PYX_ERR(33, 977, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 977, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 977, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 977, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    if (values[2]) {
      __pyx_v_root = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 977, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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(33, 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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nGather to All.\n\nGather data from all processes and broadcast the combined data to all\nother processes.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_131Allgather = {"Allgather", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 996, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 996, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 996, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Allgather", 0) < (0)) __PYX_ERR(33, 996, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Allgather", 1, 2, 2, i); __PYX_ERR(33, 996, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 996, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 996, __pyx_L3_error)
    }
    __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(33, 996, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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(33, 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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nGather to All Vector.\n\nGather data from all processes and send it to all other processes\nproviding different amounts of data and displacements.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_133Allgatherv = {"Allgatherv", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1014, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1014, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1014, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Allgatherv", 0) < (0)) __PYX_ERR(33, 1014, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Allgatherv", 1, 2, 2, i); __PYX_ERR(33, 1014, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1014, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1014, __pyx_L3_error)
    }
    __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(33, 1014, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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(33, 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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nAll to All Scatter/Gather.\n\nSend data to all processes and recv data from all processes.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_135Alltoall = {"Alltoall", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1032, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1032, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1032, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Alltoall", 0) < (0)) __PYX_ERR(33, 1032, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Alltoall", 1, 2, 2, i); __PYX_ERR(33, 1032, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1032, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1032, __pyx_L3_error)
    }
    __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(33, 1032, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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(33, 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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nAll to All Scatter/Gather Vector.\n\nSend data to all processes and recv data from all processes\nproviding different amounts of data and displacements.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_137Alltoallv = {"Alltoallv", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1049, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1049, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1049, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Alltoallv", 0) < (0)) __PYX_ERR(33, 1049, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Alltoallv", 1, 2, 2, i); __PYX_ERR(33, 1049, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1049, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1049, __pyx_L3_error)
    }
    __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(33, 1049, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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(33, 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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nAll to All Scatter/Gather General.\n\nSend/recv data to/from all processes allowing the specification of\ndifferent counts, displacements, and datatypes for each dest/source.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_139Alltoallw = {"Alltoallw", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1067, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1067, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1067, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Alltoallw", 0) < (0)) __PYX_ERR(33, 1067, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Alltoallw", 1, 2, 2, i); __PYX_ERR(33, 1067, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1067, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1067, __pyx_L3_error)
    }
    __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(33, 1067, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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(33, 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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nReduce to Root.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_141Reduce = {"Reduce", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_op,&__pyx_mstate_global->__pyx_n_u_root,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1088, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 1088, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1088, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1088, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1088, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Reduce", 0) < (0)) __PYX_ERR(33, 1088, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__48);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Reduce", 0, 2, 4, i); __PYX_ERR(33, 1088, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 1088, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1088, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1088, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1088, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__48);
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_op = ((struct PyMPIOpObject *)values[2]);
    if (values[3]) {
      __pyx_v_root = __Pyx_PyLong_As_int(values[3]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 1088, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(33, 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(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nReduce to All.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_143Allreduce = {"Allreduce", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_op,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1104, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1104, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1104, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1104, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Allreduce", 0) < (0)) __PYX_ERR(33, 1104, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__49);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Allreduce", 0, 2, 3, i); __PYX_ERR(33, 1104, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1104, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1104, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1104, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__49);
    }
    __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(33, 1104, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(33, 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(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nReduce-Scatter Block (regular, non-vector version).");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_145Reduce_scatter_block = {"Reduce_scatter_block", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_op,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1119, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1119, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1119, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1119, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Reduce_scatter_block", 0) < (0)) __PYX_ERR(33, 1119, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__50);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Reduce_scatter_block", 0, 2, 3, i); __PYX_ERR(33, 1119, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1119, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1119, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1119, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__50);
    }
    __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(33, 1119, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(33, 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(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nReduce-Scatter (vector version).");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_147Reduce_scatter = {"Reduce_scatter", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_recvcounts,&__pyx_mstate_global->__pyx_n_u_op,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1134, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 1134, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1134, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1134, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1134, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Reduce_scatter", 0) < (0)) __PYX_ERR(33, 1134, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Comm.pyx":1138
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         recvcounts: Sequence[int] | None = None,             # <<<<<<<<<<<<<<
 *         Op op: Op = SUM,
 *     ) -> None:
*/
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__51);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Reduce_scatter", 0, 2, 4, i); __PYX_ERR(33, 1134, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 1134, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1134, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1134, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1134, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__51);
    }
    __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(33, 1134, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(33, 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(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nNonblocking Barrier.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_149Ibarrier = {"Ibarrier", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Ibarrier", __pyx_kwds); 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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 1159, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nNonblocking Broadcast.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_151Ibcast = {"Ibcast", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_root,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1162, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1162, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1162, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Ibcast", 0) < (0)) __PYX_ERR(33, 1162, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Ibcast", 0, 1, 2, i); __PYX_ERR(33, 1162, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1162, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1162, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_root = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 1162, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nNonblocking Gather.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_153Igather = {"Igather", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_root,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1179, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1179, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1179, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1179, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Igather", 0) < (0)) __PYX_ERR(33, 1179, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Igather", 0, 2, 3, i); __PYX_ERR(33, 1179, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1179, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1179, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1179, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    if (values[2]) {
      __pyx_v_root = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 1179, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nNonblocking Gather Vector.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_155Igatherv = {"Igatherv", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_root,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1198, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1198, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1198, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1198, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Igatherv", 0) < (0)) __PYX_ERR(33, 1198, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Igatherv", 0, 2, 3, i); __PYX_ERR(33, 1198, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1198, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1198, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1198, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    if (values[2]) {
      __pyx_v_root = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 1198, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nNonblocking Scatter.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_157Iscatter = {"Iscatter", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_root,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1217, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1217, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1217, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1217, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Iscatter", 0) < (0)) __PYX_ERR(33, 1217, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Iscatter", 0, 2, 3, i); __PYX_ERR(33, 1217, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1217, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1217, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1217, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    if (values[2]) {
      __pyx_v_root = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 1217, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nNonblocking Scatter Vector.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_159Iscatterv = {"Iscatterv", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_root,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1236, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1236, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1236, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1236, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Iscatterv", 0) < (0)) __PYX_ERR(33, 1236, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Iscatterv", 0, 2, 3, i); __PYX_ERR(33, 1236, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1236, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1236, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1236, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    if (values[2]) {
      __pyx_v_root = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 1236, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nNonblocking Gather to All.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_161Iallgather = {"Iallgather", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1255, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1255, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1255, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Iallgather", 0) < (0)) __PYX_ERR(33, 1255, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Iallgather", 1, 2, 2, i); __PYX_ERR(33, 1255, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1255, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1255, __pyx_L3_error)
    }
    __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(33, 1255, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nNonblocking Gather to All Vector.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_163Iallgatherv = {"Iallgatherv", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1273, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1273, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1273, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Iallgatherv", 0) < (0)) __PYX_ERR(33, 1273, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Iallgatherv", 1, 2, 2, i); __PYX_ERR(33, 1273, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1273, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1273, __pyx_L3_error)
    }
    __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(33, 1273, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nNonblocking All to All Scatter/Gather.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_165Ialltoall = {"Ialltoall", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1290, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1290, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1290, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Ialltoall", 0) < (0)) __PYX_ERR(33, 1290, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Ialltoall", 1, 2, 2, i); __PYX_ERR(33, 1290, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1290, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1290, __pyx_L3_error)
    }
    __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(33, 1290, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nNonblocking All to All Scatter/Gather Vector.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_167Ialltoallv = {"Ialltoallv", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1308, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1308, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1308, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Ialltoallv", 0) < (0)) __PYX_ERR(33, 1308, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Ialltoallv", 1, 2, 2, i); __PYX_ERR(33, 1308, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1308, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1308, __pyx_L3_error)
    }
    __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(33, 1308, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nNonblocking All to All Scatter/Gather General.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_169Ialltoallw = {"Ialltoallw", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1326, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1326, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1326, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Ialltoallw", 0) < (0)) __PYX_ERR(33, 1326, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Ialltoallw", 1, 2, 2, i); __PYX_ERR(33, 1326, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1326, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1326, __pyx_L3_error)
    }
    __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(33, 1326, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nNonblocking Reduce to Root.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_171Ireduce = {"Ireduce", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_op,&__pyx_mstate_global->__pyx_n_u_root,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1344, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 1344, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1344, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1344, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1344, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Ireduce", 0) < (0)) __PYX_ERR(33, 1344, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__52);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Ireduce", 0, 2, 4, i); __PYX_ERR(33, 1344, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 1344, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1344, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1344, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1344, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__52);
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_op = ((struct PyMPIOpObject *)values[2]);
    if (values[3]) {
      __pyx_v_root = __Pyx_PyLong_As_int(values[3]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 1344, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(33, 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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nNonblocking Reduce to All.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_173Iallreduce = {"Iallreduce", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_op,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1362, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1362, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1362, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1362, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Iallreduce", 0) < (0)) __PYX_ERR(33, 1362, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__53);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Iallreduce", 0, 2, 3, i); __PYX_ERR(33, 1362, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1362, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1362, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1362, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__53);
    }
    __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(33, 1362, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(33, 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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nNonblocking Reduce-Scatter Block (regular, non-vector version).");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_175Ireduce_scatter_block = {"Ireduce_scatter_block", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_op,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1379, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1379, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1379, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1379, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Ireduce_scatter_block", 0) < (0)) __PYX_ERR(33, 1379, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__54);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Ireduce_scatter_block", 0, 2, 3, i); __PYX_ERR(33, 1379, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1379, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1379, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1379, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__54);
    }
    __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(33, 1379, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(33, 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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nNonblocking Reduce-Scatter (vector version).");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_177Ireduce_scatter = {"Ireduce_scatter", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_recvcounts,&__pyx_mstate_global->__pyx_n_u_op,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1396, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 1396, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1396, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1396, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1396, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Ireduce_scatter", 0) < (0)) __PYX_ERR(33, 1396, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Comm.pyx":1400
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         recvcounts: Sequence[int] | None = None,             # <<<<<<<<<<<<<<
 *         Op op: Op = SUM,
 *     ) -> Request:
*/
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__55);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Ireduce_scatter", 0, 2, 4, i); __PYX_ERR(33, 1396, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 1396, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1396, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1396, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1396, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__55);
    }
    __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(33, 1396, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(33, 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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nPersistent Barrier.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_179Barrier_init = {"Barrier_init", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1418, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1418, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Barrier_init", 0) < (0)) __PYX_ERR(33, 1418, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__56);
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1418, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__56);
    }
    __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(33, 1418, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nPersistent Broadcast.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_181Bcast_init = {"Bcast_init", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_root,&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1431, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1431, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1431, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1431, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Bcast_init", 0) < (0)) __PYX_ERR(33, 1431, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__57);
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Bcast_init", 0, 1, 3, i); __PYX_ERR(33, 1431, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1431, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1431, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1431, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__57);
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_root = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 1431, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(33, 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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nPersistent Gather.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_183Gather_init = {"Gather_init", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_root,&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1449, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 1449, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1449, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1449, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1449, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Gather_init", 0) < (0)) __PYX_ERR(33, 1449, __pyx_L3_error)
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__58);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Gather_init", 0, 2, 4, i); __PYX_ERR(33, 1449, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 1449, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1449, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1449, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1449, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__58);
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    if (values[2]) {
      __pyx_v_root = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 1449, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(33, 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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nPersistent Gather Vector.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_185Gatherv_init = {"Gatherv_init", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_root,&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1469, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 1469, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1469, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1469, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1469, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Gatherv_init", 0) < (0)) __PYX_ERR(33, 1469, __pyx_L3_error)
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__59);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Gatherv_init", 0, 2, 4, i); __PYX_ERR(33, 1469, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 1469, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1469, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1469, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1469, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__59);
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    if (values[2]) {
      __pyx_v_root = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 1469, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(33, 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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nPersistent Scatter.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_187Scatter_init = {"Scatter_init", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_root,&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1489, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 1489, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1489, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1489, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1489, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Scatter_init", 0) < (0)) __PYX_ERR(33, 1489, __pyx_L3_error)
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__60);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Scatter_init", 0, 2, 4, i); __PYX_ERR(33, 1489, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 1489, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1489, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1489, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1489, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__60);
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    if (values[2]) {
      __pyx_v_root = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 1489, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(33, 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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nPersistent Scatter Vector.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_189Scatterv_init = {"Scatterv_init", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_root,&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1509, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 1509, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1509, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1509, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1509, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Scatterv_init", 0) < (0)) __PYX_ERR(33, 1509, __pyx_L3_error)
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__61);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Scatterv_init", 0, 2, 4, i); __PYX_ERR(33, 1509, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 1509, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1509, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1509, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1509, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__61);
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    if (values[2]) {
      __pyx_v_root = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 1509, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(33, 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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nPersistent Gather to All.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_191Allgather_init = {"Allgather_init", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1529, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1529, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1529, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1529, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Allgather_init", 0) < (0)) __PYX_ERR(33, 1529, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__62);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Allgather_init", 0, 2, 3, i); __PYX_ERR(33, 1529, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1529, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1529, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1529, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__62);
    }
    __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(33, 1529, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(33, 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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nPersistent Gather to All Vector.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_193Allgatherv_init = {"Allgatherv_init", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1548, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1548, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1548, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1548, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Allgatherv_init", 0) < (0)) __PYX_ERR(33, 1548, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__63);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Allgatherv_init", 0, 2, 3, i); __PYX_ERR(33, 1548, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1548, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1548, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1548, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__63);
    }
    __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(33, 1548, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(33, 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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nPersistent All to All Scatter/Gather.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_195Alltoall_init = {"Alltoall_init", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1566, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1566, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1566, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1566, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Alltoall_init", 0) < (0)) __PYX_ERR(33, 1566, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__64);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Alltoall_init", 0, 2, 3, i); __PYX_ERR(33, 1566, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1566, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1566, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1566, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__64);
    }
    __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(33, 1566, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(33, 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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nPersistent All to All Scatter/Gather Vector.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_197Alltoallv_init = {"Alltoallv_init", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1585, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1585, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1585, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1585, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Alltoallv_init", 0) < (0)) __PYX_ERR(33, 1585, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__65);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Alltoallv_init", 0, 2, 3, i); __PYX_ERR(33, 1585, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1585, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1585, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1585, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__65);
    }
    __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(33, 1585, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(33, 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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nPersistent All to All Scatter/Gather General.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_199Alltoallw_init = {"Alltoallw_init", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1604, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1604, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1604, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1604, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Alltoallw_init", 0) < (0)) __PYX_ERR(33, 1604, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__66);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Alltoallw_init", 0, 2, 3, i); __PYX_ERR(33, 1604, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1604, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1604, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1604, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__66);
    }
    __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(33, 1604, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(33, 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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nPersistent Reduce to Root.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_201Reduce_init = {"Reduce_init", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_op,&__pyx_mstate_global->__pyx_n_u_root,&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1623, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(33, 1623, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 1623, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1623, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1623, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1623, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Reduce_init", 0) < (0)) __PYX_ERR(33, 1623, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__67);
      if (!values[4]) values[4] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__68);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Reduce_init", 0, 2, 5, i); __PYX_ERR(33, 1623, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(33, 1623, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 1623, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1623, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1623, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1623, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__67);
      if (!values[4]) values[4] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__68);
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_op = ((struct PyMPIOpObject *)values[2]);
    if (values[3]) {
      __pyx_v_root = __Pyx_PyLong_As_int(values[3]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 1623, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(33, 1627, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(33, 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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nPersistent Reduce to All.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_203Allreduce_init = {"Allreduce_init", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_op,&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1642, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 1642, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1642, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1642, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1642, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Allreduce_init", 0) < (0)) __PYX_ERR(33, 1642, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__69);
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__70);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Allreduce_init", 0, 2, 4, i); __PYX_ERR(33, 1642, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 1642, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1642, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1642, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1642, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__69);
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__70);
    }
    __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(33, 1642, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(33, 1646, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(33, 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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nPersistent Reduce-Scatter Block (regular, non-vector version).");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_205Reduce_scatter_block_init = {"Reduce_scatter_block_init", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_op,&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1660, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 1660, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1660, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1660, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1660, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Reduce_scatter_block_init", 0) < (0)) __PYX_ERR(33, 1660, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__71);
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__72);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Reduce_scatter_block_init", 0, 2, 4, i); __PYX_ERR(33, 1660, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 1660, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1660, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1660, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1660, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__71);
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__72);
    }
    __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(33, 1660, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(33, 1664, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(33, 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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nPersistent Reduce-Scatter (vector version).");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_207Reduce_scatter_init = {"Reduce_scatter_init", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_recvcounts,&__pyx_mstate_global->__pyx_n_u_op,&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1678, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(33, 1678, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 1678, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1678, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1678, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1678, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Reduce_scatter_init", 0) < (0)) __PYX_ERR(33, 1678, __pyx_L3_error)

      /* "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,
*/
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__73);
      if (!values[4]) values[4] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__74);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Reduce_scatter_init", 0, 2, 5, i); __PYX_ERR(33, 1678, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(33, 1678, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 1678, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1678, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1678, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1678, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__73);
      if (!values[4]) values[4] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__74);
    }
    __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(33, 1678, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(33, 1683, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(33, 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(33, 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nReturn whether the communicator is an intercommunicator.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_209Is_inter = {"Is_inter", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Is_inter", __pyx_kwds); 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", 0);

  /* "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(33, 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(33, 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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Is_inter, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 1712, __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":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_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\nReturn whether the communicator is an intracommunicator.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_211Is_intra = {"Is_intra", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Is_intra", __pyx_kwds); 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;
  size_t __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Is_intra", 0);

  /* "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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Is_inter, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 1718, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(33, 1718, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyBool_FromLong((!__pyx_t_4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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_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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Is_intra, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 1723, __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":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_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\nReturn the type of topology (if any) associated with a communicator.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_213Get_topology = {"Get_topology", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_topology", __pyx_kwds); 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", 0);

  /* "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(33, 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_PyLong_From_int(__pyx_v_topo); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_topology, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 1736, __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":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_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;
  size_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_topology, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 1741, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_t_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_UNDEFINED); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 1741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 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_4;
  __pyx_t_4 = 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_4);
  __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\nReturn the parent intercommunicator for this process.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_215Get_parent = {"Get_parent", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_parent", __pyx_kwds); 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", 0);

  /* "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) )
 *         options_set_errhandler(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) )             # <<<<<<<<<<<<<<
 *         options_set_errhandler(comm.ob_mpi)
 *         return comm
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 1752, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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) )
 *         options_set_errhandler(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
*/
  __pyx_t_1 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_options_set_errhandler(__pyx_v_comm->__pyx_base.ob_mpi); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 1753, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1754
 *         with nogil: CHKERR( MPI_Comm_get_parent(&comm.ob_mpi) )
 *         options_set_errhandler(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\nDisconnect from a communicator.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_217Disconnect = {"Disconnect", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Disconnect", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":1760
 *         Disconnect from a communicator.
 *         """
 *         with nogil: CHKERR( MPI_Comm_disconnect(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 1760, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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\nInterconnect two processes connected by a socket.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_219Join = {"Join", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_fd,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1762, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1762, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Join", 0) < (0)) __PYX_ERR(33, 1762, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Join", 1, 1, 1, i); __PYX_ERR(33, 1762, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1762, __pyx_L3_error)
    }
    __pyx_v_fd = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_fd == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 1763, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Join", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 1762, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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) )
 *         options_set_errhandler(comm.ob_mpi)
*/
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intercomm); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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) )             # <<<<<<<<<<<<<<
 *         options_set_errhandler(comm.ob_mpi)
 *         return comm
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 1768, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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) )
 *         options_set_errhandler(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
*/
  __pyx_t_3 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_options_set_errhandler(__pyx_v_comm->__pyx_base.ob_mpi); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 1769, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1770
 *         with nogil: CHKERR( MPI_Comm_join(fd, &comm.ob_mpi) )
 *         options_set_errhandler(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\nRetrieve attribute value by key.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_221Get_attr = {"Get_attr", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_keyval,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1775, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1775, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Get_attr", 0) < (0)) __PYX_ERR(33, 1775, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Get_attr", 1, 1, 1, i); __PYX_ERR(33, 1775, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1775, __pyx_L3_error)
    }
    __pyx_v_keyval = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 1775, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_attr", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 1775, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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_mstate_global->__pyx_int_0);
    __pyx_r = __pyx_mstate_global->__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_PyLong_From_int((((int *)__pyx_v_attrval)[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 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_PyLong_From_int((((int *)__pyx_v_attrval)[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 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(33, 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\nStore attribute value associated with a key.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_223Set_attr = {"Set_attr", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_keyval,&__pyx_mstate_global->__pyx_n_u_attrval,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1801, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1801, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1801, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Set_attr", 0) < (0)) __PYX_ERR(33, 1801, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Set_attr", 1, 2, 2, i); __PYX_ERR(33, 1801, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1801, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1801, __pyx_L3_error)
    }
    __pyx_v_keyval = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 1801, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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\nDelete attribute value associated with a key.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_225Delete_attr = {"Delete_attr", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_keyval,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1807, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1807, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Delete_attr", 0) < (0)) __PYX_ERR(33, 1807, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Delete_attr", 1, 1, 1, i); __PYX_ERR(33, 1807, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1807, __pyx_L3_error)
    }
    __pyx_v_keyval = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 1807, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Delete_attr", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 1807, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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\nCreate a new attribute key for communicators.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_227Create_keyval = {"Create_keyval", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_copy_fn,&__pyx_mstate_global->__pyx_n_u_delete_fn,&__pyx_mstate_global->__pyx_n_u_nopython,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1813, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1813, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1813, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1813, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create_keyval", 0) < (0)) __PYX_ERR(33, 1813, __pyx_L3_error)

      /* "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,
*/
      if (!values[0]) values[0] = __Pyx_NewRef(((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:
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((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:
 *         """
*/
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_False));
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1813, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1813, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1813, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }

      /* "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,
*/
      if (!values[0]) values[0] = __Pyx_NewRef(((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:
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((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:
 *         """
*/
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_False));
    }
    __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(33, 1813, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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;
  size_t __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_keyval", 0);

  /* "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_2 = NULL;
  __pyx_t_3 = 1;
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_2, __pyx_v_copy_fn, __pyx_v_delete_fn, __pyx_v_nopython};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_keyval, __pyx_callargs+__pyx_t_3, (4-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 1826, __pyx_L1_error)
    __Pyx_GOTREF((PyObject *)__pyx_t_1);
  }
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_1);
  __pyx_t_1 = 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_4 = __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_4 == ((int)-1))) __PYX_ERR(33, 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_4 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_set(MPI_COMM_NULL, __pyx_v_keyval, __pyx_v_state); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(33, 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_1 = __Pyx_PyLong_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 1829, __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":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\nFree an attribute key for communicators.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_229Free_keyval = {"Free_keyval", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_keyval,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1831, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1831, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Free_keyval", 0) < (0)) __PYX_ERR(33, 1831, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Free_keyval", 1, 1, 1, i); __PYX_ERR(33, 1831, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1831, __pyx_L3_error)
    }
    __pyx_v_keyval = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 1832, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Free_keyval", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 1831, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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(33, 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_PyLong_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 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\nCreate a new error handler for communicators.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_231Create_errhandler = {"Create_errhandler", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_errhandler_fn,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1844, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1844, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create_errhandler", 0) < (0)) __PYX_ERR(33, 1844, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Create_errhandler", 1, 1, 1, i); __PYX_ERR(33, 1844, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1844, __pyx_L3_error)
    }
    __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, 1844, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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(33, 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(33, 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(33, 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(33, 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(33, 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\nGet the error handler for a communicator.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_233Get_errhandler = {"Get_errhandler", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_errhandler", __pyx_kwds); 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", 0);

  /* "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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 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(33, 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\nSet the error handler for a communicator.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_235Set_errhandler = {"Set_errhandler", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_errhandler,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1870, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1870, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Set_errhandler", 0) < (0)) __PYX_ERR(33, 1870, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Set_errhandler", 1, 1, 1, i); __PYX_ERR(33, 1870, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1870, __pyx_L3_error)
    }
    __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, 1870, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler, 0, "errhandler", 0))) __PYX_ERR(33, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(33, 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\nCall the error handler installed on a communicator.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_237Call_errhandler = {"Call_errhandler", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_errorcode,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1876, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1876, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Call_errhandler", 0) < (0)) __PYX_ERR(33, 1876, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Call_errhandler", 1, 1, 1, i); __PYX_ERR(33, 1876, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1876, __pyx_L3_error)
    }
    __pyx_v_errorcode = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 1876, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Call_errhandler", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 1876, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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\nTerminate 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.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_239Abort = {"Abort", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_errorcode,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1882, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1882, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Abort", 0) < (0)) __PYX_ERR(33, 1882, __pyx_L3_error)
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1882, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_errorcode = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 1882, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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(33, 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\nGet the print name for this communicator.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_241Get_name = {"Get_name", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_name", __pyx_kwds); 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", 0);

  /* "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(33, 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(33, 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\nSet the print name for this communicator.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_243Set_name = {"Set_name", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_name_2,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1905, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1905, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Set_name", 0) < (0)) __PYX_ERR(33, 1905, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Set_name", 1, 1, 1, i); __PYX_ERR(33, 1905, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1905, __pyx_L3_error)
    }
    __pyx_v_name = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_name", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 1905, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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(33, 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(33, 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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_name, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 1916, __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":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_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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":1919
 * 
 *         def __set__(self, value: str):
 *             self.Set_name(value)             # <<<<<<<<<<<<<<
 * 
 *     # Integer Handle
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_value};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Set_name, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 1919, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __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_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 toint(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate object to integer handle.
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_245toint(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_244toint, "toint(self) -> int\n\nTranslate object to integer handle.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_245toint = {"toint", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_245toint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_244toint};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_245toint(PyObject *__pyx_v_self, 
#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("toint (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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("toint", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("toint", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_244toint(((struct PyMPICommObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_244toint(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("toint", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":1928
 *         Translate object to integer handle.
 *         """
 *         return MPI_Comm_toint(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_int(MPI_Comm_toint(__pyx_v_self->ob_mpi)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 1928, __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 toint(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate object to integer handle.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.toint", __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":1930
 *         return MPI_Comm_toint(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromint(cls, arg: int, /) -> Comm:
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_247fromint(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_246fromint, "fromint(cls, arg: int, /) -> Comm\n\nTranslate integer handle to object.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_247fromint = {"fromint", (PyCFunction)__pyx_pw_6mpi4py_3MPI_4Comm_247fromint, METH_O, __pyx_doc_6mpi4py_3MPI_4Comm_246fromint};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_247fromint(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fromint (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_246fromint(((PyTypeObject*)__pyx_v_cls), ((PyObject *)__pyx_v_arg));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_246fromint(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, 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("fromint", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":1935
 *         Translate integer handle to object.
 *         """
 *         return fromhandle(MPI_Comm_fromint(arg))             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_As_int(__pyx_v_arg); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 1935, __pyx_L1_error)
  __pyx_t_2 = __pyx_fuse_8__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Comm_fromint(__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 1935, __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":1930
 *         return MPI_Comm_toint(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromint(cls, arg: int, /) -> Comm:
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.fromint", __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":1940
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_249py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_248py2f, "py2f(self) -> int\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_249py2f = {"py2f", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_249py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_248py2f};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_249py2f(PyObject *__pyx_v_self, 
#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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("py2f", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_248py2f(((struct PyMPICommObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_248py2f(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":1943
 *         """
 *         """
 *         return MPI_Comm_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_MPI_Fint(MPI_Comm_c2f(__pyx_v_self->ob_mpi)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 1943, __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":1940
 *     # --------------
 * 
 *     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":1945
 *         return MPI_Comm_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Comm:
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_251f2py(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_250f2py, "f2py(cls, arg: int) -> Comm\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_251f2py = {"f2py", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_251f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_250f2py};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_251f2py(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_arg,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1945, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1945, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "f2py", 0) < (0)) __PYX_ERR(33, 1945, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, i); __PYX_ERR(33, 1945, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1945, __pyx_L3_error)
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 1945, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_250f2py(((PyTypeObject*)__pyx_v_cls), __pyx_v_arg);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_250f2py(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":1949
 *         """
 *         """
 *         return fromhandle(MPI_Comm_f2c(arg))             # <<<<<<<<<<<<<<
 * 
 *     # Python Communication
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_As_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_1 == ((MPI_Fint)-1)) && PyErr_Occurred())) __PYX_ERR(33, 1949, __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(33, 1949, __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":1945
 *         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":1954
 *     # --------------------
 * 
 *     def send(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_253send(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_252send, "send(self, obj: Any, dest: int, tag: int = 0) -> None\n\nSend in standard mode.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_253send = {"send", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_253send, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_252send};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_253send(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_obj,&__pyx_mstate_global->__pyx_n_u_dest,&__pyx_mstate_global->__pyx_n_u_tag,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1954, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1954, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1954, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1954, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "send", 0) < (0)) __PYX_ERR(33, 1954, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("send", 0, 2, 3, i); __PYX_ERR(33, 1954, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1954, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1954, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1954, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_obj = values[0];
    __pyx_v_dest = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 1957, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 1958, __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(33, 1954, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_252send(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_obj, __pyx_v_dest, __pyx_v_tag);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_252send(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":1961
 *     ) -> 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":1962
 *         """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(33, 1962, __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":1954
 *     # --------------------
 * 
 *     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":1964
 *         return PyMPI_send(obj, dest, tag, comm)
 * 
 *     def bsend(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_255bsend(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_254bsend, "bsend(self, obj: Any, dest: int, tag: int = 0) -> None\n\nSend in buffered mode.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_255bsend = {"bsend", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_255bsend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_254bsend};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_255bsend(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_obj,&__pyx_mstate_global->__pyx_n_u_dest,&__pyx_mstate_global->__pyx_n_u_tag,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1964, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1964, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1964, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1964, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "bsend", 0) < (0)) __PYX_ERR(33, 1964, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("bsend", 0, 2, 3, i); __PYX_ERR(33, 1964, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1964, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1964, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1964, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_obj = values[0];
    __pyx_v_dest = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 1967, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 1968, __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(33, 1964, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_254bsend(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_obj, __pyx_v_dest, __pyx_v_tag);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_254bsend(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":1971
 *     ) -> 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":1972
 *         """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(33, 1972, __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":1964
 *         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":1974
 *         return PyMPI_bsend(obj, dest, tag, comm)
 * 
 *     def ssend(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_257ssend(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_256ssend, "ssend(self, obj: Any, dest: int, tag: int = 0) -> None\n\nSend in synchronous mode.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_257ssend = {"ssend", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_257ssend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_256ssend};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_257ssend(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_obj,&__pyx_mstate_global->__pyx_n_u_dest,&__pyx_mstate_global->__pyx_n_u_tag,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1974, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1974, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1974, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1974, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "ssend", 0) < (0)) __PYX_ERR(33, 1974, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("ssend", 0, 2, 3, i); __PYX_ERR(33, 1974, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1974, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1974, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1974, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_obj = values[0];
    __pyx_v_dest = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 1977, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 1978, __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(33, 1974, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_256ssend(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_obj, __pyx_v_dest, __pyx_v_tag);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_256ssend(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":1981
 *     ) -> 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":1982
 *         """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(33, 1982, __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":1974
 *         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":1984
 *         return PyMPI_ssend(obj, dest, tag, comm)
 * 
 *     def recv(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: Buffer | None = None,
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_259recv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_258recv, "recv(self, buf: Buffer | None = None, source: int = ANY_SOURCE, tag: int = ANY_TAG, status: Status | None = None) -> Any\n\nReceive.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_259recv = {"recv", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_259recv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_258recv};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_259recv(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_source,&__pyx_mstate_global->__pyx_n_u_tag,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1984, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 1984, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1984, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1984, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1984, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "recv", 0) < (0)) __PYX_ERR(33, 1984, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Comm.pyx":1986
 *     def recv(
 *         self,
 *         buf: Buffer | None = None,             # <<<<<<<<<<<<<<
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
*/
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "src/mpi4py/MPI.src/Comm.pyx":1989
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Any:
 *         """Receive."""
*/
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 1984, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1984, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1984, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1984, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1986
 *     def recv(
 *         self,
 *         buf: Buffer | None = None,             # <<<<<<<<<<<<<<
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
*/
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "src/mpi4py/MPI.src/Comm.pyx":1989
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Any:
 *         """Receive."""
*/
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_source = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 1987, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_mstate_global->__pyx_k__75;
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 1988, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_mstate_global->__pyx_k__76;
    }
    __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(33, 1984, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(33, 1989, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_258recv(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_source, __pyx_v_tag, __pyx_v_status);

  /* "src/mpi4py/MPI.src/Comm.pyx":1984
 *         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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_258recv(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":1992
 *     ) -> 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":1993
 *         """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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(33, 1993, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/Comm.pyx":1994
 *         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(33, 1994, __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":1984
 *         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":1996
 *         return PyMPI_recv(buf, source, tag, comm, statusp)
 * 
 *     def sendrecv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_261sendrecv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_260sendrecv, "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\n\nSend and Receive.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_261sendrecv = {"sendrecv", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_261sendrecv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_260sendrecv};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_261sendrecv(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendobj,&__pyx_mstate_global->__pyx_n_u_dest,&__pyx_mstate_global->__pyx_n_u_sendtag,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_source,&__pyx_mstate_global->__pyx_n_u_recvtag,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 1996, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(33, 1996, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(33, 1996, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(33, 1996, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 1996, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1996, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1996, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1996, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "sendrecv", 0) < (0)) __PYX_ERR(33, 1996, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Comm.pyx":2001
 *         int dest: int,
 *         int sendtag: int = 0,
 *         recvbuf: Buffer | None = None,             # <<<<<<<<<<<<<<
 *         int source: int = ANY_SOURCE,
 *         int recvtag: int = ANY_TAG,
*/
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "src/mpi4py/MPI.src/Comm.pyx":2004
 *         int source: int = ANY_SOURCE,
 *         int recvtag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Any:
 *         """Send and Receive."""
*/
      if (!values[6]) values[6] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("sendrecv", 0, 2, 7, i); __PYX_ERR(33, 1996, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(33, 1996, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(33, 1996, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(33, 1996, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 1996, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 1996, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 1996, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 1996, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2001
 *         int dest: int,
 *         int sendtag: int = 0,
 *         recvbuf: Buffer | None = None,             # <<<<<<<<<<<<<<
 *         int source: int = ANY_SOURCE,
 *         int recvtag: int = ANY_TAG,
*/
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "src/mpi4py/MPI.src/Comm.pyx":2004
 *         int source: int = ANY_SOURCE,
 *         int recvtag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Any:
 *         """Send and Receive."""
*/
      if (!values[6]) values[6] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __pyx_v_sendobj = values[0];
    __pyx_v_dest = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 1999, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_sendtag = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_sendtag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2000, __pyx_L3_error)
    } else {
      __pyx_v_sendtag = ((int)0);
    }
    __pyx_v_recvbuf = values[3];
    if (values[4]) {
      __pyx_v_source = __Pyx_PyLong_As_int(values[4]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2002, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_mstate_global->__pyx_k__77;
    }
    if (values[5]) {
      __pyx_v_recvtag = __Pyx_PyLong_As_int(values[5]); if (unlikely((__pyx_v_recvtag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2003, __pyx_L3_error)
    } else {
      __pyx_v_recvtag = __pyx_mstate_global->__pyx_k__78;
    }
    __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(33, 1996, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(33, 2004, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_260sendrecv(((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":1996
 *         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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_260sendrecv(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2007
 *     ) -> 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":2008
 *         """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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(33, 2008, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/Comm.pyx":2009
 *         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":2011
 *         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(33, 2009, __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":1996
 *         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":2013
 *                               comm, statusp)
 * 
 *     def isend(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_263isend(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_262isend, "isend(self, obj: Any, dest: int, tag: int = 0) -> Request\n\nNonblocking send.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_263isend = {"isend", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_263isend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_262isend};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_263isend(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_obj,&__pyx_mstate_global->__pyx_n_u_dest,&__pyx_mstate_global->__pyx_n_u_tag,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2013, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2013, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2013, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2013, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "isend", 0) < (0)) __PYX_ERR(33, 2013, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("isend", 0, 2, 3, i); __PYX_ERR(33, 2013, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2013, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2013, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2013, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_obj = values[0];
    __pyx_v_dest = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2016, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2017, __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(33, 2013, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_262isend(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_obj, __pyx_v_dest, __pyx_v_tag);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_262isend(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2020
 *     ) -> 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":2021
 *         """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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 2021, __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":2022
 *         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(33, 2022, __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":2023
 *         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":2013
 *                               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":2025
 *         return request
 * 
 *     def ibsend(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_265ibsend(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_264ibsend, "ibsend(self, obj: Any, dest: int, tag: int = 0) -> Request\n\nNonblocking send in buffered mode.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_265ibsend = {"ibsend", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_265ibsend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_264ibsend};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_265ibsend(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_obj,&__pyx_mstate_global->__pyx_n_u_dest,&__pyx_mstate_global->__pyx_n_u_tag,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2025, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2025, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2025, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2025, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "ibsend", 0) < (0)) __PYX_ERR(33, 2025, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("ibsend", 0, 2, 3, i); __PYX_ERR(33, 2025, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2025, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2025, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2025, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_obj = values[0];
    __pyx_v_dest = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2028, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2029, __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(33, 2025, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_264ibsend(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_obj, __pyx_v_dest, __pyx_v_tag);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_264ibsend(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2032
 *     ) -> 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":2033
 *         """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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 2033, __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":2034
 *         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(33, 2034, __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":2035
 *         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":2025
 *         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":2037
 *         return request
 * 
 *     def issend(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_267issend(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_266issend, "issend(self, obj: Any, dest: int, tag: int = 0) -> Request\n\nNonblocking send in synchronous mode.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_267issend = {"issend", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_267issend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_266issend};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_267issend(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_obj,&__pyx_mstate_global->__pyx_n_u_dest,&__pyx_mstate_global->__pyx_n_u_tag,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2037, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2037, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2037, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2037, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "issend", 0) < (0)) __PYX_ERR(33, 2037, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("issend", 0, 2, 3, i); __PYX_ERR(33, 2037, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2037, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2037, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2037, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_obj = values[0];
    __pyx_v_dest = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2040, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2041, __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(33, 2037, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_266issend(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_obj, __pyx_v_dest, __pyx_v_tag);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_266issend(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2044
 *     ) -> 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":2045
 *         """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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 2045, __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":2046
 *         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(33, 2046, __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":2047
 *         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":2037
 *         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":2049
 *         return request
 * 
 *     def irecv(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: Buffer | None = None,
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_269irecv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_268irecv, "irecv(self, buf: Buffer | None = None, source: int = ANY_SOURCE, tag: int = ANY_TAG) -> Request\n\nNonblocking receive.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_269irecv = {"irecv", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_269irecv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_268irecv};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_269irecv(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_source,&__pyx_mstate_global->__pyx_n_u_tag,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2049, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2049, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2049, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2049, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "irecv", 0) < (0)) __PYX_ERR(33, 2049, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Comm.pyx":2051
 *     def irecv(
 *         self,
 *         buf: Buffer | None = None,             # <<<<<<<<<<<<<<
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
*/
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2049, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2049, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2049, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_source = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2052, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_mstate_global->__pyx_k__79;
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2053, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_mstate_global->__pyx_k__80;
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("irecv", 0, 0, 3, __pyx_nargs); __PYX_ERR(33, 2049, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_268irecv(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_source, __pyx_v_tag);

  /* "src/mpi4py/MPI.src/Comm.pyx":2049
 *         return request
 * 
 *     def irecv(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: Buffer | None = None,
*/

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_268irecv(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2056
 *     ) -> 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":2057
 *         """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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 2057, __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":2058
 *         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(33, 2058, __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":2059
 *         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":2049
 *         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":2061
 *         return request
 * 
 *     def probe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_271probe(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_270probe, "probe(self, source: int = ANY_SOURCE, tag: int = ANY_TAG, status: Status | None = None) -> Literal[True]\n\nBlocking test for a message.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_271probe = {"probe", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_271probe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_270probe};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_271probe(PyObject *__pyx_v_self, 
#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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_source,&__pyx_mstate_global->__pyx_n_u_tag,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2061, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2061, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2061, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2061, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "probe", 0) < (0)) __PYX_ERR(33, 2061, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Comm.pyx":2065
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Literal[True]:
 *         """Blocking test for a message."""
*/
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2061, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2061, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2061, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    if (values[0]) {
      __pyx_v_source = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2063, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_mstate_global->__pyx_k__81;
    }
    if (values[1]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2064, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_mstate_global->__pyx_k__82;
    }
    __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(33, 2061, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(33, 2065, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_270probe(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_source, __pyx_v_tag, __pyx_v_status);

  /* "src/mpi4py/MPI.src/Comm.pyx":2061
 *         return request
 * 
 *     def probe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_270probe(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2068
 *     ) -> 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":2069
 *         """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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(33, 2069, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/Comm.pyx":2070
 *         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(33, 2070, __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":2061
 *         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":2072
 *         return PyMPI_probe(source, tag, comm, statusp)
 * 
 *     def iprobe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_273iprobe(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_272iprobe, "iprobe(self, source: int = ANY_SOURCE, tag: int = ANY_TAG, status: Status | None = None) -> bool\n\nNonblocking test for a message.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_273iprobe = {"iprobe", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_273iprobe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_272iprobe};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_273iprobe(PyObject *__pyx_v_self, 
#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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_source,&__pyx_mstate_global->__pyx_n_u_tag,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2072, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2072, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2072, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2072, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "iprobe", 0) < (0)) __PYX_ERR(33, 2072, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Comm.pyx":2076
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> bool:
 *         """Nonblocking test for a message."""
*/
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2072, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2072, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2072, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    if (values[0]) {
      __pyx_v_source = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2074, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_mstate_global->__pyx_k__83;
    }
    if (values[1]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2075, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_mstate_global->__pyx_k__84;
    }
    __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(33, 2072, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(33, 2076, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_272iprobe(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_source, __pyx_v_tag, __pyx_v_status);

  /* "src/mpi4py/MPI.src/Comm.pyx":2072
 *         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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_272iprobe(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2079
 *     ) -> 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":2080
 *         """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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(33, 2080, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/Comm.pyx":2081
 *         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(33, 2081, __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":2072
 *         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":2083
 *         return PyMPI_iprobe(source, tag, comm, statusp)
 * 
 *     def mprobe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_275mprobe(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_274mprobe, "mprobe(self, source: int = ANY_SOURCE, tag: int = ANY_TAG, status: Status | None = None) -> Message\n\nBlocking test for a matched message.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_275mprobe = {"mprobe", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_275mprobe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_274mprobe};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_275mprobe(PyObject *__pyx_v_self, 
#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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_source,&__pyx_mstate_global->__pyx_n_u_tag,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2083, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2083, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2083, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2083, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "mprobe", 0) < (0)) __PYX_ERR(33, 2083, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Comm.pyx":2087
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Message:
 *         """Blocking test for a matched message."""
*/
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2083, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2083, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2083, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    if (values[0]) {
      __pyx_v_source = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2085, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_mstate_global->__pyx_k__85;
    }
    if (values[1]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2086, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_mstate_global->__pyx_k__86;
    }
    __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(33, 2083, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(33, 2087, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_274mprobe(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_source, __pyx_v_tag, __pyx_v_status);

  /* "src/mpi4py/MPI.src/Comm.pyx":2083
 *         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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_274mprobe(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2090
 *     ) -> 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":2091
 *         """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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(33, 2091, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/Comm.pyx":2092
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2092, __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":2093
 *         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(33, 2093, __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":2095
 *         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":2083
 *         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":2097
 *         return message
 * 
 *     def improbe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_277improbe(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_276improbe, "improbe(self, source: int = ANY_SOURCE, tag: int = ANY_TAG, status: Status | None = None) -> Message | None\n\nNonblocking test for a matched message.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_277improbe = {"improbe", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_277improbe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_276improbe};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_277improbe(PyObject *__pyx_v_self, 
#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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_source,&__pyx_mstate_global->__pyx_n_u_tag,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2097, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2097, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2097, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2097, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "improbe", 0) < (0)) __PYX_ERR(33, 2097, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Comm.pyx":2101
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Message | None:
 *         """Nonblocking test for a matched message."""
*/
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2097, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2097, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2097, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    if (values[0]) {
      __pyx_v_source = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2099, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_mstate_global->__pyx_k__87;
    }
    if (values[1]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2100, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_mstate_global->__pyx_k__88;
    }
    __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(33, 2097, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(33, 2101, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_276improbe(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_source, __pyx_v_tag, __pyx_v_status);

  /* "src/mpi4py/MPI.src/Comm.pyx":2097
 *         return message
 * 
 *     def improbe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_276improbe(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2104
 *     ) -> 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":2105
 *         """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":2106
 *         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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(33, 2106, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/Comm.pyx":2107
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2107, __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":2108
 *         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(33, 2108, __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":2110
 *         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":2111
 *                                        &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":2097
 *         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":2113
 *         return message
 * 
 *     def barrier(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Barrier synchronization.
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_279barrier(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_278barrier, "barrier(self) -> None\n\nBarrier synchronization.\n\n.. note:: This method is equivalent to `Barrier`.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_279barrier = {"barrier", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_279barrier, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_278barrier};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_279barrier(PyObject *__pyx_v_self, 
#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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("barrier", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_278barrier(((struct PyMPICommObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_278barrier(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2119
 *         .. 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":2120
 *         """
 *         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(33, 2120, __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":2113
 *         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":2122
 *         return PyMPI_barrier(comm)
 * 
 *     def bcast(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_281bcast(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_280bcast, "bcast(self, obj: Any, root: int = 0) -> Any\n\nBroadcast.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_281bcast = {"bcast", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_281bcast, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_280bcast};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_281bcast(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_obj,&__pyx_mstate_global->__pyx_n_u_root,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2122, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2122, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2122, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "bcast", 0) < (0)) __PYX_ERR(33, 2122, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("bcast", 0, 1, 2, i); __PYX_ERR(33, 2122, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2122, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2122, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_obj = values[0];
    if (values[1]) {
      __pyx_v_root = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2125, __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(33, 2122, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_280bcast(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_obj, __pyx_v_root);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_280bcast(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2128
 *     ) -> 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":2129
 *         """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(33, 2129, __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":2122
 *         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":2131
 *         return PyMPI_bcast(obj, root, comm)
 * 
 *     def gather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_283gather(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_282gather, "gather(self, sendobj: Any, root: int = 0) -> list[Any] | None\n\nGather.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_283gather = {"gather", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_283gather, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_282gather};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_283gather(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendobj,&__pyx_mstate_global->__pyx_n_u_root,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2131, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2131, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2131, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "gather", 0) < (0)) __PYX_ERR(33, 2131, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("gather", 0, 1, 2, i); __PYX_ERR(33, 2131, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2131, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2131, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendobj = values[0];
    if (values[1]) {
      __pyx_v_root = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2134, __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(33, 2131, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_282gather(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendobj, __pyx_v_root);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_282gather(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2137
 *     ) -> 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":2138
 *         """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(33, 2138, __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":2131
 *         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":2140
 *         return PyMPI_gather(sendobj, root, comm)
 * 
 *     def scatter(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Sequence[Any] | None,
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_285scatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_284scatter, "scatter(self, sendobj: Sequence[Any] | None, root: int = 0) -> Any\n\nScatter.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_285scatter = {"scatter", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_285scatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_284scatter};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_285scatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendobj,&__pyx_mstate_global->__pyx_n_u_root,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2140, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2140, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2140, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "scatter", 0) < (0)) __PYX_ERR(33, 2140, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("scatter", 0, 1, 2, i); __PYX_ERR(33, 2140, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2140, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2140, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendobj = values[0];
    if (values[1]) {
      __pyx_v_root = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2143, __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(33, 2140, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_284scatter(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendobj, __pyx_v_root);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_284scatter(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2146
 *     ) -> 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":2147
 *         """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(33, 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":2140
 *         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":2149
 *         return PyMPI_scatter(sendobj, root, comm)
 * 
 *     def allgather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_287allgather(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_286allgather, "allgather(self, sendobj: Any) -> list[Any]\n\nGather to All.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_287allgather = {"allgather", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_287allgather, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_286allgather};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_287allgather(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendobj,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2149, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2149, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "allgather", 0) < (0)) __PYX_ERR(33, 2149, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("allgather", 1, 1, 1, i); __PYX_ERR(33, 2149, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2149, __pyx_L3_error)
    }
    __pyx_v_sendobj = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("allgather", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 2149, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_286allgather(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendobj);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_286allgather(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2154
 *     ) -> 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":2155
 *         """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(33, 2155, __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_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":2157
 *         return PyMPI_allgather(sendobj, comm)
 * 
 *     def alltoall(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Sequence[Any],
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_289alltoall(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_288alltoall, "alltoall(self, sendobj: Sequence[Any]) -> list[Any]\n\nAll to All Scatter/Gather.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_289alltoall = {"alltoall", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_289alltoall, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_288alltoall};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_289alltoall(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendobj,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2157, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2157, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "alltoall", 0) < (0)) __PYX_ERR(33, 2157, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("alltoall", 1, 1, 1, i); __PYX_ERR(33, 2157, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2157, __pyx_L3_error)
    }
    __pyx_v_sendobj = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("alltoall", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 2157, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_288alltoall(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendobj);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_288alltoall(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2162
 *     ) -> 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":2163
 *         """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(33, 2163, __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":2157
 *         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":2165
 *         return PyMPI_alltoall(sendobj, comm)
 * 
 *     def reduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_291reduce(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_290reduce, "reduce(self, sendobj: Any, op: Op | Callable[[Any, Any], Any] = SUM, root: int = 0) -> Any | None\n\nReduce to Root.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_291reduce = {"reduce", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_291reduce, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_290reduce};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_291reduce(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendobj,&__pyx_mstate_global->__pyx_n_u_op,&__pyx_mstate_global->__pyx_n_u_root,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2165, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2165, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2165, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2165, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "reduce", 0) < (0)) __PYX_ERR(33, 2165, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef(__pyx_mstate_global->__pyx_k__89);
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("reduce", 0, 1, 3, i); __PYX_ERR(33, 2165, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2165, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2165, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2165, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(__pyx_mstate_global->__pyx_k__89);
    }
    __pyx_v_sendobj = values[0];
    __pyx_v_op = values[1];
    if (values[2]) {
      __pyx_v_root = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2169, __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(33, 2165, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_290reduce(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendobj, __pyx_v_op, __pyx_v_root);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_290reduce(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2172
 *     ) -> 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":2173
 *         """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(33, 2173, __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":2165
 *         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":2175
 *         return PyMPI_reduce(sendobj, op, root, comm)
 * 
 *     def allreduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_293allreduce(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_292allreduce, "allreduce(self, sendobj: Any, op: Op | Callable[[Any, Any], Any] = SUM) -> Any\n\nReduce to All.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_293allreduce = {"allreduce", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_293allreduce, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_292allreduce};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_293allreduce(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendobj,&__pyx_mstate_global->__pyx_n_u_op,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2175, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2175, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2175, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "allreduce", 0) < (0)) __PYX_ERR(33, 2175, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef(__pyx_mstate_global->__pyx_k__90);
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("allreduce", 0, 1, 2, i); __PYX_ERR(33, 2175, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2175, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2175, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(__pyx_mstate_global->__pyx_k__90);
    }
    __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(33, 2175, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_292allreduce(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendobj, __pyx_v_op);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_292allreduce(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2181
 *     ) -> 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":2182
 *         """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(33, 2182, __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":2175
 *         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":2190
 *     """
 * 
 *     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_SIZE
  __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 ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_comm,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2190, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2190, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < (0)) __PYX_ERR(33, 2190, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPICommObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2190, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPICommObject *)Py_None));
    }
    __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(33, 2190, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) __PYX_ERR(33, 2190, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2191
 * 
 *     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":2192
 *     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":2193
 *         <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":2194
 *         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(33, 2194, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2195
 *         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":2196
 *         CHKERR( MPI_Comm_test_inter(self.ob_mpi, &inter) )
 *         if inter:
 *             raise TypeError("expecting an intracommunicator")             # <<<<<<<<<<<<<<
 * 
 *     # Communicator Constructors
*/
    __pyx_t_4 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_expecting_an_intracommunicator};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2196, __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(33, 2196, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/Comm.pyx":2195
 *         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":2190
 *     """
 * 
 *     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_XDECREF(__pyx_t_4);
  __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":2201
 *     # -------------------------
 * 
 *     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\nCreate communicator from group.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_3Create_group = {"Create_group", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_group,&__pyx_mstate_global->__pyx_n_u_tag,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2201, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2201, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2201, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create_group", 0) < (0)) __PYX_ERR(33, 2201, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Create_group", 0, 1, 2, i); __PYX_ERR(33, 2201, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2201, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2201, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_group = ((struct PyMPIGroupObject *)values[0]);
    if (values[1]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2201, __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(33, 2201, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, 0, "group", 0))) __PYX_ERR(33, 2201, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2205
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 2205, __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":2206
 *         """
 *         cdef Intracomm comm = <Intracomm>New(Intracomm)
 *         with nogil: CHKERR( MPI_Comm_create_group(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, group.ob_mpi, tag, &comm.ob_mpi) )
 *         options_set_errhandler(comm.ob_mpi)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2207
 *         cdef Intracomm comm = <Intracomm>New(Intracomm)
 *         with nogil: CHKERR( MPI_Comm_create_group(
 *             self.ob_mpi, group.ob_mpi, tag, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         options_set_errhandler(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(33, 2206, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2206
 *         """
 *         cdef Intracomm comm = <Intracomm>New(Intracomm)
 *         with nogil: CHKERR( MPI_Comm_create_group(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, group.ob_mpi, tag, &comm.ob_mpi) )
 *         options_set_errhandler(comm.ob_mpi)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2208
 *         with nogil: CHKERR( MPI_Comm_create_group(
 *             self.ob_mpi, group.ob_mpi, tag, &comm.ob_mpi) )
 *         options_set_errhandler(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
*/
  __pyx_t_3 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_options_set_errhandler(__pyx_v_comm->__pyx_base.ob_mpi); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 2208, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2209
 *             self.ob_mpi, group.ob_mpi, tag, &comm.ob_mpi) )
 *         options_set_errhandler(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":2201
 *     # -------------------------
 * 
 *     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":2211
 *         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\nCreate communicator from group.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_5Create_from_group = {"Create_from_group", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_group,&__pyx_mstate_global->__pyx_n_u_stringtag,&__pyx_mstate_global->__pyx_n_u_info,&__pyx_mstate_global->__pyx_n_u_errhandler,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2211, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 2211, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2211, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2211, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2211, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create_from_group", 0) < (0)) __PYX_ERR(33, 2211, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_kp_u_org_mpi4py));
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__91);

      /* "src/mpi4py/MPI.src/Comm.pyx":2217
 *         stringtag: str = "org.mpi4py",
 *         Info info: Info = INFO_NULL,
 *         Errhandler errhandler: Errhandler | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Intracomm:
 *         """
*/
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)((struct PyMPIErrhandlerObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Create_from_group", 0, 1, 4, i); __PYX_ERR(33, 2211, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 2211, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2211, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2211, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2211, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_kp_u_org_mpi4py));
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__91);
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)((struct PyMPIErrhandlerObject *)Py_None));
    }
    __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(33, 2211, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, 0, "group", 0))) __PYX_ERR(33, 2214, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 2216, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_errhandler), __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler, 1, "errhandler", 0))) __PYX_ERR(33, 2217, __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":2211
 *         return comm
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_from_group(
 *         cls,
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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":2222
 *         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":2223
 *         """
 *         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(33, 2223, __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":2224
 *         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 const )MPI_ERRHANDLER_NULL) && PyErr_Occurred())) __PYX_ERR(33, 2224, __pyx_L1_error)
  __pyx_v_cerrhdl = __pyx_t_2;

  /* "src/mpi4py/MPI.src/Comm.pyx":2225
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 2225, __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":2226
 *         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
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2227
 *         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(33, 2226, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2226
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2228
 *         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":2211
 *         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":2230
 *         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\nCreate cartesian communicator.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_7Create_cart = {"Create_cart", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_dims,&__pyx_mstate_global->__pyx_n_u_periods,&__pyx_mstate_global->__pyx_n_u_reorder,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2230, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2230, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2230, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2230, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create_cart", 0) < (0)) __PYX_ERR(33, 2230, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Comm.pyx":2233
 *         self,
 *         dims: Sequence[int],
 *         periods: Sequence[bool] | None = None,             # <<<<<<<<<<<<<<
 *         bint reorder: bool = False,
 *     ) -> Cartcomm:
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Create_cart", 0, 1, 3, i); __PYX_ERR(33, 2230, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2230, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2230, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2230, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __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(33, 2234, __pyx_L3_error)
    } else {

      /* "src/mpi4py/MPI.src/Comm.pyx":2234
 *         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(33, 2230, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":2230
 *         return comm
 * 
 *     def Create_cart(             # <<<<<<<<<<<<<<
 *         self,
 *         dims: Sequence[int],
*/

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":2239
 *         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":2240
 *         """
 *         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(33, 2240, __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":2241
 *         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":2242
 *         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 = PyBool_Check(__pyx_v_periods); 
  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(33, 2242, __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) != (0)) __PYX_ERR(33, 2242, __pyx_L1_error);
      }
    }
    __Pyx_DECREF_SET(__pyx_v_periods, __pyx_t_1);
    __pyx_t_1 = 0;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2243
 *         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(33, 2243, __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":2245
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Cartcomm); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 2245, __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":2246
 *         #
 *         cdef Cartcomm comm = <Cartcomm>New(Cartcomm)
 *         with nogil: CHKERR( MPI_Cart_create(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, ndims, idims, iperiods, reorder, &comm.ob_mpi) )
 *         options_set_errhandler(comm.ob_mpi)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2247
 *         cdef Cartcomm comm = <Cartcomm>New(Cartcomm)
 *         with nogil: CHKERR( MPI_Cart_create(
 *             self.ob_mpi, ndims, idims, iperiods, reorder, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         options_set_errhandler(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(33, 2246, __pyx_L6_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2246
 *         #
 *         cdef Cartcomm comm = <Cartcomm>New(Cartcomm)
 *         with nogil: CHKERR( MPI_Cart_create(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, ndims, idims, iperiods, reorder, &comm.ob_mpi) )
 *         options_set_errhandler(comm.ob_mpi)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L7;
        }
        __pyx_L6_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L7:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2248
 *         with nogil: CHKERR( MPI_Cart_create(
 *             self.ob_mpi, ndims, idims, iperiods, reorder, &comm.ob_mpi) )
 *         options_set_errhandler(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
*/
  __pyx_t_4 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_options_set_errhandler(__pyx_v_comm->__pyx_base.__pyx_base.__pyx_base.ob_mpi); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(33, 2248, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2249
 *             self.ob_mpi, ndims, idims, iperiods, reorder, &comm.ob_mpi) )
 *         options_set_errhandler(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":2230
 *         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":2251
 *         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\nCreate graph communicator.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_9Create_graph = {"Create_graph", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_index,&__pyx_mstate_global->__pyx_n_u_edges,&__pyx_mstate_global->__pyx_n_u_reorder,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2251, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2251, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2251, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2251, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create_graph", 0) < (0)) __PYX_ERR(33, 2251, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Create_graph", 0, 2, 3, i); __PYX_ERR(33, 2251, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2251, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2251, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2251, __pyx_L3_error)
        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(33, 2255, __pyx_L3_error)
    } else {

      /* "src/mpi4py/MPI.src/Comm.pyx":2255
 *         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(33, 2251, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":2251
 *         return comm
 * 
 *     def Create_graph(             # <<<<<<<<<<<<<<
 *         self,
 *         index: Sequence[int],
*/

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":2260
 *         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":2261
 *         """
 *         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(33, 2261, __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":2262
 *         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":2263
 *         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(33, 2263, __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":2265
 *         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":2266
 *         # 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":2267
 *         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":2265
 *         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":2269
 *             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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Graphcomm); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 2269, __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":2270
 *         #
 *         cdef Graphcomm comm = <Graphcomm>New(Graphcomm)
 *         with nogil: CHKERR( MPI_Graph_create(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, nnodes, iindex, iedges, reorder, &comm.ob_mpi) )
 *         options_set_errhandler(comm.ob_mpi)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2271
 *         cdef Graphcomm comm = <Graphcomm>New(Graphcomm)
 *         with nogil: CHKERR( MPI_Graph_create(
 *             self.ob_mpi, nnodes, iindex, iedges, reorder, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         options_set_errhandler(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(33, 2270, __pyx_L7_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2270
 *         #
 *         cdef Graphcomm comm = <Graphcomm>New(Graphcomm)
 *         with nogil: CHKERR( MPI_Graph_create(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, nnodes, iindex, iedges, reorder, &comm.ob_mpi) )
 *         options_set_errhandler(comm.ob_mpi)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L8;
        }
        __pyx_L7_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L8:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2272
 *         with nogil: CHKERR( MPI_Graph_create(
 *             self.ob_mpi, nnodes, iindex, iedges, reorder, &comm.ob_mpi) )
 *         options_set_errhandler(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
*/
  __pyx_t_5 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_options_set_errhandler(__pyx_v_comm->__pyx_base.__pyx_base.__pyx_base.ob_mpi); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(33, 2272, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2273
 *             self.ob_mpi, nnodes, iindex, iedges, reorder, &comm.ob_mpi) )
 *         options_set_errhandler(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":2251
 *         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":2275
 *         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\nCreate distributed graph communicator.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_11Create_dist_graph_adjacent = {"Create_dist_graph_adjacent", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sources,&__pyx_mstate_global->__pyx_n_u_destinations,&__pyx_mstate_global->__pyx_n_u_sourceweights,&__pyx_mstate_global->__pyx_n_u_destweights,&__pyx_mstate_global->__pyx_n_u_info,&__pyx_mstate_global->__pyx_n_u_reorder,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2275, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(33, 2275, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(33, 2275, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 2275, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2275, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2275, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2275, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create_dist_graph_adjacent", 0) < (0)) __PYX_ERR(33, 2275, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Comm.pyx":2279
 *         sources: Sequence[int],
 *         destinations: Sequence[int],
 *         sourceweights: Sequence[int] | None = None,             # <<<<<<<<<<<<<<
 *         destweights: Sequence[int] | None = None,
 *         Info info: Info = INFO_NULL,
*/
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "src/mpi4py/MPI.src/Comm.pyx":2280
 *         destinations: Sequence[int],
 *         sourceweights: Sequence[int] | None = None,
 *         destweights: Sequence[int] | None = None,             # <<<<<<<<<<<<<<
 *         Info info: Info = INFO_NULL,
 *         bint reorder: bool = False,
*/
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[4]) values[4] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__92);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Create_dist_graph_adjacent", 0, 2, 6, i); __PYX_ERR(33, 2275, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(33, 2275, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(33, 2275, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 2275, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2275, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2275, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2275, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2279
 *         sources: Sequence[int],
 *         destinations: Sequence[int],
 *         sourceweights: Sequence[int] | None = None,             # <<<<<<<<<<<<<<
 *         destweights: Sequence[int] | None = None,
 *         Info info: Info = INFO_NULL,
*/
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "src/mpi4py/MPI.src/Comm.pyx":2280
 *         destinations: Sequence[int],
 *         sourceweights: Sequence[int] | None = None,
 *         destweights: Sequence[int] | None = None,             # <<<<<<<<<<<<<<
 *         Info info: Info = INFO_NULL,
 *         bint reorder: bool = False,
*/
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[4]) values[4] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__92);
    }
    __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(33, 2282, __pyx_L3_error)
    } else {

      /* "src/mpi4py/MPI.src/Comm.pyx":2282
 *         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(33, 2275, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 2281, __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":2275
 *         return comm
 * 
 *     def Create_dist_graph_adjacent(             # <<<<<<<<<<<<<<
 *         self,
 *         sources: Sequence[int],
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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":2287
 *         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":2288
 *         """
 *         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":2289
 *         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":2290
 *         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":2291
 *         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":2292
 *         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(33, 2292, __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":2291
 *         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":2293
 *         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(33, 2293, __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":2295
 *         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":2296
 *             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(33, 2296, __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":2295
 *         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":2297
 *         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(33, 2297, __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":2300
 *             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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Distgraphcomm); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 2300, __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":2301
 *         #
 *         cdef Distgraphcomm comm = <Distgraphcomm>New(Distgraphcomm)
 *         with nogil: CHKERR( MPI_Dist_graph_create_adjacent(             # <<<<<<<<<<<<<<
 *             self.ob_mpi,
 *             indegree,  isource, isourceweight,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2305
 *             indegree,  isource, isourceweight,
 *             outdegree, idest,   idestweight,
 *             info.ob_mpi, reorder, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         options_set_errhandler(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(33, 2301, __pyx_L6_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2301
 *         #
 *         cdef Distgraphcomm comm = <Distgraphcomm>New(Distgraphcomm)
 *         with nogil: CHKERR( MPI_Dist_graph_create_adjacent(             # <<<<<<<<<<<<<<
 *             self.ob_mpi,
 *             indegree,  isource, isourceweight,
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L7;
        }
        __pyx_L6_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L7:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2306
 *             outdegree, idest,   idestweight,
 *             info.ob_mpi, reorder, &comm.ob_mpi) )
 *         options_set_errhandler(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
*/
  __pyx_t_4 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_options_set_errhandler(__pyx_v_comm->__pyx_base.__pyx_base.__pyx_base.ob_mpi); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(33, 2306, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2307
 *             info.ob_mpi, reorder, &comm.ob_mpi) )
 *         options_set_errhandler(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":2275
 *         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":2309
 *         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\nCreate distributed graph communicator.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_13Create_dist_graph = {"Create_dist_graph", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sources,&__pyx_mstate_global->__pyx_n_u_degrees,&__pyx_mstate_global->__pyx_n_u_destinations,&__pyx_mstate_global->__pyx_n_u_weights,&__pyx_mstate_global->__pyx_n_u_info,&__pyx_mstate_global->__pyx_n_u_reorder,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2309, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(33, 2309, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(33, 2309, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 2309, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2309, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2309, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2309, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create_dist_graph", 0) < (0)) __PYX_ERR(33, 2309, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Comm.pyx":2314
 *         degrees: Sequence[int],
 *         destinations: Sequence[int],
 *         weights: Sequence[int] | None = None,             # <<<<<<<<<<<<<<
 *         Info info: Info = INFO_NULL,
 *         bint reorder: bool = False,
*/
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[4]) values[4] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__93);
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Create_dist_graph", 0, 3, 6, i); __PYX_ERR(33, 2309, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(33, 2309, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(33, 2309, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 2309, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2309, __pyx_L3_error)
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2309, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2309, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[4]) values[4] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__93);
    }
    __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(33, 2316, __pyx_L3_error)
    } else {

      /* "src/mpi4py/MPI.src/Comm.pyx":2316
 *         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(33, 2309, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 2315, __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":2309
 *         return comm
 * 
 *     def Create_dist_graph(             # <<<<<<<<<<<<<<
 *         self,
 *         sources: Sequence[int],
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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":2321
 *         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":2322
 *         """
 *         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":2323
 *         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":2324
 *         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(33, 2324, __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":2325
 *         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(33, 2325, __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":2326
 *         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":2327
 *         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(33, 2327, __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":2328
 *         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(33, 2328, __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":2330
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Distgraphcomm); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 2330, __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":2331
 *         #
 *         cdef Distgraphcomm comm = <Distgraphcomm>New(Distgraphcomm)
 *         with nogil: CHKERR( MPI_Dist_graph_create(             # <<<<<<<<<<<<<<
 *             self.ob_mpi,
 *             nv, isource, idegree, idest, iweight,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2334
 *             self.ob_mpi,
 *             nv, isource, idegree, idest, iweight,
 *             info.ob_mpi, reorder, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         options_set_errhandler(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(33, 2331, __pyx_L6_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2331
 *         #
 *         cdef Distgraphcomm comm = <Distgraphcomm>New(Distgraphcomm)
 *         with nogil: CHKERR( MPI_Dist_graph_create(             # <<<<<<<<<<<<<<
 *             self.ob_mpi,
 *             nv, isource, idegree, idest, iweight,
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L7;
        }
        __pyx_L6_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L7:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2335
 *             nv, isource, idegree, idest, iweight,
 *             info.ob_mpi, reorder, &comm.ob_mpi) )
 *         options_set_errhandler(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
*/
  __pyx_t_2 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_options_set_errhandler(__pyx_v_comm->__pyx_base.__pyx_base.__pyx_base.ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(33, 2335, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2336
 *             info.ob_mpi, reorder, &comm.ob_mpi) )
 *         options_set_errhandler(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":2309
 *         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":2338
 *         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\nCreate intercommunicator.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_15Create_intercomm = {"Create_intercomm", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_local_leader,&__pyx_mstate_global->__pyx_n_u_peer_comm,&__pyx_mstate_global->__pyx_n_u_remote_leader,&__pyx_mstate_global->__pyx_n_u_tag,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2338, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 2338, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2338, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2338, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2338, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create_intercomm", 0) < (0)) __PYX_ERR(33, 2338, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Create_intercomm", 0, 3, 4, i); __PYX_ERR(33, 2338, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 2338, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2338, __pyx_L3_error)
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2338, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2338, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_local_leader = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_local_leader == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2340, __pyx_L3_error)
    __pyx_v_peer_comm = ((struct PyMPIIntracommObject *)values[1]);
    __pyx_v_remote_leader = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_remote_leader == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2342, __pyx_L3_error)
    if (values[3]) {
      __pyx_v_tag = __Pyx_PyLong_As_int(values[3]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2343, __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(33, 2338, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm, 0, "peer_comm", 0))) __PYX_ERR(33, 2341, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2348
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intercomm); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 2348, __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":2349
 *         """
 *         cdef Intercomm comm = <Intercomm>New(Intercomm)
 *         with nogil: CHKERR( MPI_Intercomm_create(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, local_leader,
 *             peer_comm.ob_mpi, remote_leader,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2352
 *             self.ob_mpi, local_leader,
 *             peer_comm.ob_mpi, remote_leader,
 *             tag, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         options_set_errhandler(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(33, 2349, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2349
 *         """
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2353
 *             peer_comm.ob_mpi, remote_leader,
 *             tag, &comm.ob_mpi) )
 *         options_set_errhandler(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
*/
  __pyx_t_3 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_options_set_errhandler(__pyx_v_comm->__pyx_base.ob_mpi); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 2353, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2354
 *             tag, &comm.ob_mpi) )
 *         options_set_errhandler(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":2338
 *         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":2359
 *     # ----------------------------
 * 
 *     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\nDetermine optimal process placement on a Cartesian topology.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_17Cart_map = {"Cart_map", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_dims,&__pyx_mstate_global->__pyx_n_u_periods,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2359, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2359, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2359, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Cart_map", 0) < (0)) __PYX_ERR(33, 2359, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Comm.pyx":2362
 *         self,
 *         dims: Sequence[int],
 *         periods: Sequence[bool] | None = None,             # <<<<<<<<<<<<<<
 *     ) -> int:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Cart_map", 0, 1, 2, i); __PYX_ERR(33, 2359, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2359, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2359, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __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(33, 2359, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":2359
 *     # ----------------------------
 * 
 *     def Cart_map(             # <<<<<<<<<<<<<<
 *         self,
 *         dims: Sequence[int],
*/

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":2367
 *         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":2368
 *         """
 *         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(33, 2368, __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":2369
 *         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":2370
 *         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_2 = PyBool_Check(__pyx_v_periods); 
  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(33, 2370, __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) != (0)) __PYX_ERR(33, 2370, __pyx_L1_error);
      }
    }
    __Pyx_DECREF_SET(__pyx_v_periods, __pyx_t_1);
    __pyx_t_1 = 0;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2371
 *         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(33, 2371, __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":2372
 *         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":2373
 *         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(33, 2373, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2374
 *         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_PyLong_From_int(__pyx_v_rank); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 2374, __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":2359
 *     # ----------------------------
 * 
 *     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":2376
 *         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\nDetermine optimal process placement on a graph topology.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_19Graph_map = {"Graph_map", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_index,&__pyx_mstate_global->__pyx_n_u_edges,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2376, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2376, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2376, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Graph_map", 0) < (0)) __PYX_ERR(33, 2376, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Graph_map", 1, 2, 2, i); __PYX_ERR(33, 2376, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2376, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2376, __pyx_L3_error)
    }
    __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(33, 2376, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":2384
 *         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":2385
 *         """
 *         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(33, 2385, __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":2386
 *         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":2387
 *         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(33, 2387, __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":2389
 *         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":2390
 *         # 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":2391
 *         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":2389
 *         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":2392
 *             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":2393
 *             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(33, 2393, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2394
 *         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_PyLong_From_int(__pyx_v_rank); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 2394, __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":2376
 *         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":2401
 *     # 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\nInclusive Scan.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_21Scan = {"Scan", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_op,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2401, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2401, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2401, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2401, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Scan", 0) < (0)) __PYX_ERR(33, 2401, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__94);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Scan", 0, 2, 3, i); __PYX_ERR(33, 2401, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2401, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2401, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2401, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__94);
    }
    __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(33, 2401, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(33, 2405, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2410
 *         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(33, 2410, __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":2411
 *         """
 *         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(33, 2411, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2412
 *         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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2414
 *         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(33, 2412, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2412
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2401
 *     # 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":2418
 *     # 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\nExclusive Scan.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_23Exscan = {"Exscan", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_op,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2418, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2418, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2418, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2418, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Exscan", 0) < (0)) __PYX_ERR(33, 2418, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__95);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Exscan", 0, 2, 3, i); __PYX_ERR(33, 2418, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2418, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2418, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2418, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__95);
    }
    __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(33, 2418, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(33, 2422, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2427
 *         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(33, 2427, __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":2428
 *         """
 *         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(33, 2428, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2429
 *         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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2431
 *         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(33, 2429, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2429
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2418
 *     # 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":2435
 *     # 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\nInclusive Scan.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_25Iscan = {"Iscan", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_op,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2435, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2435, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2435, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2435, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Iscan", 0) < (0)) __PYX_ERR(33, 2435, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__96);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Iscan", 0, 2, 3, i); __PYX_ERR(33, 2435, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2435, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2435, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2435, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__96);
    }
    __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(33, 2435, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(33, 2439, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2444
 *         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(33, 2444, __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":2445
 *         """
 *         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(33, 2445, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2446
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 2446, __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":2447
 *         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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2449
 *         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(33, 2447, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2447
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2450
 *             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":2435
 *     # 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":2452
 *         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\nInclusive Scan.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_27Iexscan = {"Iexscan", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_op,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2452, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2452, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2452, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2452, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Iexscan", 0) < (0)) __PYX_ERR(33, 2452, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__97);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Iexscan", 0, 2, 3, i); __PYX_ERR(33, 2452, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2452, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2452, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2452, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__97);
    }
    __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(33, 2452, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(33, 2456, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2461
 *         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(33, 2461, __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":2462
 *         """
 *         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(33, 2462, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2463
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 2463, __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":2464
 *         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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2466
 *         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(33, 2464, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2464
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2467
 *             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":2452
 *         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":2471
 *     # 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\nPersistent Inclusive Scan.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_29Scan_init = {"Scan_init", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_op,&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2471, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 2471, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2471, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2471, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2471, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Scan_init", 0) < (0)) __PYX_ERR(33, 2471, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__98);
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__99);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Scan_init", 0, 2, 4, i); __PYX_ERR(33, 2471, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 2471, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2471, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2471, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2471, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__98);
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__99);
    }
    __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(33, 2471, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(33, 2475, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 2476, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2481
 *         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(33, 2481, __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":2482
 *         """
 *         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(33, 2482, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2483
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 2483, __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":2484
 *         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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2486
 *         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(33, 2484, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2484
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2487
 *             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":2488
 *             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":2471
 *     # 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":2490
 *         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\nPersistent Exclusive Scan.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_31Exscan_init = {"Exscan_init", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_op,&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2490, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 2490, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2490, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2490, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2490, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Exscan_init", 0) < (0)) __PYX_ERR(33, 2490, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__100);
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__101);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Exscan_init", 0, 2, 4, i); __PYX_ERR(33, 2490, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 2490, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2490, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2490, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2490, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__100);
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__101);
    }
    __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(33, 2490, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(33, 2494, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 2495, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2500
 *         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(33, 2500, __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":2501
 *         """
 *         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(33, 2501, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2502
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 2502, __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":2503
 *         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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2505
 *         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(33, 2503, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2503
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2506
 *             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":2507
 *             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":2490
 *         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":2511
 *     # 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\n\nInclusive Scan.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_33scan = {"scan", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendobj,&__pyx_mstate_global->__pyx_n_u_op,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2511, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2511, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2511, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "scan", 0) < (0)) __PYX_ERR(33, 2511, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef(__pyx_mstate_global->__pyx_k__102);
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("scan", 0, 1, 2, i); __PYX_ERR(33, 2511, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2511, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2511, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(__pyx_mstate_global->__pyx_k__102);
    }
    __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(33, 2511, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2517
 *     ) -> 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":2518
 *         """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(33, 2518, __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":2511
 *     # 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":2520
 *         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\n\nExclusive Scan.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_35exscan = {"exscan", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendobj,&__pyx_mstate_global->__pyx_n_u_op,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2520, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2520, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2520, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "exscan", 0) < (0)) __PYX_ERR(33, 2520, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef(__pyx_mstate_global->__pyx_k__103);
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("exscan", 0, 1, 2, i); __PYX_ERR(33, 2520, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2520, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2520, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(__pyx_mstate_global->__pyx_k__103);
    }
    __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(33, 2520, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2526
 *     ) -> 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":2527
 *         """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(33, 2527, __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":2520
 *         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":2534
 *     # Starting Processes
 * 
 *     def Spawn(             # <<<<<<<<<<<<<<
 *         self,
 *         command: PathLike[AnyStr] | str | bytes,
*/

/* 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: PathLike[AnyStr] | str | bytes, args: Sequence[str] | None = None, maxprocs: int = 1, info: Info = INFO_NULL, root: int = 0, errcodes: list[int] | None = None) -> Intercomm\n\nSpawn instances of a single MPI application.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_37Spawn = {"Spawn", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_command,&__pyx_mstate_global->__pyx_n_u_args,&__pyx_mstate_global->__pyx_n_u_maxprocs,&__pyx_mstate_global->__pyx_n_u_info,&__pyx_mstate_global->__pyx_n_u_root,&__pyx_mstate_global->__pyx_n_u_errcodes,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2534, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(33, 2534, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(33, 2534, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 2534, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2534, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2534, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2534, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Spawn", 0) < (0)) __PYX_ERR(33, 2534, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Comm.pyx":2537
 *         self,
 *         command: PathLike[AnyStr] | str | bytes,
 *         args: Sequence[str] | None = None,             # <<<<<<<<<<<<<<
 *         int maxprocs: int = 1,
 *         Info info: Info = INFO_NULL,
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__104);

      /* "src/mpi4py/MPI.src/Comm.pyx":2541
 *         Info info: Info = INFO_NULL,
 *         int root: int = 0,
 *         errcodes: list[int] | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Intercomm:
 *         """
*/
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Spawn", 0, 1, 6, i); __PYX_ERR(33, 2534, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(33, 2534, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(33, 2534, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 2534, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2534, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2534, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2534, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2537
 *         self,
 *         command: PathLike[AnyStr] | str | bytes,
 *         args: Sequence[str] | None = None,             # <<<<<<<<<<<<<<
 *         int maxprocs: int = 1,
 *         Info info: Info = INFO_NULL,
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__104);

      /* "src/mpi4py/MPI.src/Comm.pyx":2541
 *         Info info: Info = INFO_NULL,
 *         int root: int = 0,
 *         errcodes: list[int] | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Intercomm:
 *         """
*/
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __pyx_v_command = values[0];
    __pyx_v_args = values[1];
    if (values[2]) {
      __pyx_v_maxprocs = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_maxprocs == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2538, __pyx_L3_error)
    } else {
      __pyx_v_maxprocs = ((int)1);
    }
    __pyx_v_info = ((struct PyMPIInfoObject *)values[3]);
    if (values[4]) {
      __pyx_v_root = __Pyx_PyLong_As_int(values[4]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2540, __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(33, 2534, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 2539, __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":2534
 *     # Starting Processes
 * 
 *     def Spawn(             # <<<<<<<<<<<<<<
 *         self,
 *         command: PathLike[AnyStr] | str | bytes,
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2546
 *         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":2547
 *         """
 *         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":2548
 *         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":2550
 *         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":2551
 *         #
 *         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(33, 2551, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2553
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 *         cdef object unused1, unused2, unused3
 *         if root == rank:             # <<<<<<<<<<<<<<
 *             unused1 = asmpifspath(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":2554
 *         cdef object unused1, unused2, unused3
 *         if root == rank:
 *             unused1 = asmpifspath(command, &cmd)             # <<<<<<<<<<<<<<
 *             unused2 = asarray_argv(args, &argv)
 *         if errcodes is not None:
*/
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_asmpifspath(__pyx_v_command, (&__pyx_v_cmd)); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2554, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_v_unused1 = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2555
 *         if root == rank:
 *             unused1 = asmpifspath(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(33, 2555, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_v_unused2 = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2553
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 *         cdef object unused1, unused2, unused3
 *         if root == rank:             # <<<<<<<<<<<<<<
 *             unused1 = asmpifspath(command, &cmd)
 *             unused2 = asarray_argv(args, &argv)
*/
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2556
 *             unused1 = asmpifspath(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":2557
 *             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(33, 2557, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_v_unused3 = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2556
 *             unused1 = asmpifspath(command, &cmd)
 *             unused2 = asarray_argv(args, &argv)
 *         if errcodes is not None:             # <<<<<<<<<<<<<<
 *             unused3 = newarray(maxprocs, &ierrcodes)
 *         #
*/
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2559
 *             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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intercomm); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2559, __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":2560
 *         #
 *         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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2562
 *         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(33, 2560, __pyx_L6_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2560
 *         #
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L7;
        }
        __pyx_L6_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L7:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2564
 *             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":2565
 *         #
 *         if errcodes is not None:
 *             errcodes[:] = [ierrcodes[i] for i in range(maxprocs)]             # <<<<<<<<<<<<<<
 *         #
 *         options_set_errhandler(comm.ob_mpi)
*/
    { /* enter inner scope */
      __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 2565, __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_PyLong_From_int((__pyx_v_ierrcodes[__pyx_8genexpr9__pyx_v_i])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2565, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_3))) __PYX_ERR(33, 2565, __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_mstate_global->__pyx_slice[0], 0, 0, 1) < (0)) __PYX_ERR(33, 2565, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2564
 *             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":2567
 *             errcodes[:] = [ierrcodes[i] for i in range(maxprocs)]
 *         #
 *         options_set_errhandler(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
*/
  __pyx_t_1 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_options_set_errhandler(__pyx_v_comm->__pyx_base.ob_mpi); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 2567, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2568
 *         #
 *         options_set_errhandler(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":2534
 *     # Starting Processes
 * 
 *     def Spawn(             # <<<<<<<<<<<<<<
 *         self,
 *         command: PathLike[AnyStr] | str | bytes,
*/

  /* 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":2570
 *         return comm
 * 
 *     def Spawn_multiple(             # <<<<<<<<<<<<<<
 *         self,
 *         command: Sequence[PathLike[AnyStr] | str | bytes],
*/

/* 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[PathLike[AnyStr] | str | bytes], 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\nSpawn instances of multiple MPI applications.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_39Spawn_multiple = {"Spawn_multiple", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_command,&__pyx_mstate_global->__pyx_n_u_args,&__pyx_mstate_global->__pyx_n_u_maxprocs,&__pyx_mstate_global->__pyx_n_u_info,&__pyx_mstate_global->__pyx_n_u_root,&__pyx_mstate_global->__pyx_n_u_errcodes,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2570, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(33, 2570, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(33, 2570, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 2570, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2570, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2570, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2570, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Spawn_multiple", 0) < (0)) __PYX_ERR(33, 2570, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Comm.pyx":2573
 *         self,
 *         command: Sequence[PathLike[AnyStr] | str | bytes],
 *         args: Sequence[Sequence[str]] | None = None,             # <<<<<<<<<<<<<<
 *         maxprocs: Sequence[int] | None = None,
 *         info: Sequence[Info] | Info = INFO_NULL,
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "src/mpi4py/MPI.src/Comm.pyx":2574
 *         command: Sequence[PathLike[AnyStr] | str | bytes],
 *         args: Sequence[Sequence[str]] | None = None,
 *         maxprocs: Sequence[int] | None = None,             # <<<<<<<<<<<<<<
 *         info: Sequence[Info] | Info = INFO_NULL,
 *         int root: int = 0,
*/
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef(__pyx_mstate_global->__pyx_k__105);

      /* "src/mpi4py/MPI.src/Comm.pyx":2577
 *         info: Sequence[Info] | Info = INFO_NULL,
 *         int root: int = 0,
 *         errcodes: list[list[int]] | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Intercomm:
 *         """
*/
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Spawn_multiple", 0, 1, 6, i); __PYX_ERR(33, 2570, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(33, 2570, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(33, 2570, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 2570, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2570, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2570, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2570, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2573
 *         self,
 *         command: Sequence[PathLike[AnyStr] | str | bytes],
 *         args: Sequence[Sequence[str]] | None = None,             # <<<<<<<<<<<<<<
 *         maxprocs: Sequence[int] | None = None,
 *         info: Sequence[Info] | Info = INFO_NULL,
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "src/mpi4py/MPI.src/Comm.pyx":2574
 *         command: Sequence[PathLike[AnyStr] | str | bytes],
 *         args: Sequence[Sequence[str]] | None = None,
 *         maxprocs: Sequence[int] | None = None,             # <<<<<<<<<<<<<<
 *         info: Sequence[Info] | Info = INFO_NULL,
 *         int root: int = 0,
*/
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef(__pyx_mstate_global->__pyx_k__105);

      /* "src/mpi4py/MPI.src/Comm.pyx":2577
 *         info: Sequence[Info] | Info = INFO_NULL,
 *         int root: int = 0,
 *         errcodes: list[list[int]] | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Intercomm:
 *         """
*/
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __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_PyLong_As_int(values[4]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2576, __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(33, 2570, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":2570
 *         return comm
 * 
 *     def Spawn_multiple(             # <<<<<<<<<<<<<<
 *         self,
 *         command: Sequence[PathLike[AnyStr] | str | bytes],
*/

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2582
 *         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":2583
 *         """
 *         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":2584
 *         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":2585
 *         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":2586
 *         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":2587
 *         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":2589
 *         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":2590
 *         #
 *         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(33, 2590, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2592
 *         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":2593
 *         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(33, 2593, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_v_unused1 = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2594
 *         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(33, 2594, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_v_unused2 = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2595
 *             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(33, 2595, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_v_unused3 = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2596
 *             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(33, 2596, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_v_unused4 = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2592
 *         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":2597
 *             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":2598
 *             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":2599
 *         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":2600
 *         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(33, 2600, __pyx_L1_error)
      __pyx_v_count = ((int)__pyx_t_4);

      /* "src/mpi4py/MPI.src/Comm.pyx":2601
 *             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(33, 2601, __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":2599
 *         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":2602
 *                 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":2603
 *                 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":2604
 *             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(33, 2604, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_v_unused5 = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2598
 *             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":2606
 *             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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intercomm); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2606, __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":2607
 *         #
 *         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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2609
 *         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(33, 2607, __pyx_L9_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2607
 *         #
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L10;
        }
        __pyx_L9_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L10:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2611
 *             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":2612
 *         #
 *         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":2613
 *         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(33, 2613, __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(33, 2613, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        if (unlikely(__Pyx_ListComp_Append(__pyx_t_7, (PyObject*)__pyx_t_3))) __PYX_ERR(33, 2613, __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_mstate_global->__pyx_slice[0], 0, 0, 1) < (0)) __PYX_ERR(33, 2613, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2614
 *         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":2615
 *             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":2616
 *             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(33, 2616, __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_PyLong_From_int((__pyx_v_ierrcodes[__pyx_9genexpr11__pyx_v_j])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2616, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          if (unlikely(__Pyx_ListComp_Append(__pyx_t_7, (PyObject*)__pyx_t_3))) __PYX_ERR(33, 2616, __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_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2616, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (__Pyx_PyObject_SetSlice(__pyx_t_3, __pyx_t_7, 0, 0, NULL, NULL, &__pyx_mstate_global->__pyx_slice[0], 0, 0, 1) < (0)) __PYX_ERR(33, 2616, __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":2617
 *                 q = p + imaxprocs[i]
 *                 errcodes[i][:] = [ierrcodes[j] for j in range(p, q)]
 *                 p = q             # <<<<<<<<<<<<<<
 *         #
 *         options_set_errhandler(comm.ob_mpi)
*/
      __pyx_v_p = __pyx_v_q;
    }

    /* "src/mpi4py/MPI.src/Comm.pyx":2612
 *         #
 *         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":2619
 *                 p = q
 *         #
 *         options_set_errhandler(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
*/
  __pyx_t_1 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_options_set_errhandler(__pyx_v_comm->__pyx_base.ob_mpi); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 2619, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2620
 *         #
 *         options_set_errhandler(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":2570
 *         return comm
 * 
 *     def Spawn_multiple(             # <<<<<<<<<<<<<<
 *         self,
 *         command: Sequence[PathLike[AnyStr] | str | bytes],
*/

  /* 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":2624
 *     # 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\nAccept a request to form a new intercommunicator.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_41Accept = {"Accept", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_port_name,&__pyx_mstate_global->__pyx_n_u_info,&__pyx_mstate_global->__pyx_n_u_root,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2624, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2624, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2624, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2624, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Accept", 0) < (0)) __PYX_ERR(33, 2624, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__106);
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Accept", 0, 1, 3, i); __PYX_ERR(33, 2624, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2624, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2624, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2624, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__106);
    }
    __pyx_v_port_name = values[0];
    __pyx_v_info = ((struct PyMPIInfoObject *)values[1]);
    if (values[2]) {
      __pyx_v_root = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2628, __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(33, 2624, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 2627, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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":2633
 *         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":2634
 *         """
 *         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":2635
 *         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(33, 2635, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2636
 *         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":2637
 *         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(33, 2637, __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":2636
 *         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":2638
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intercomm); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2638, __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":2639
 *             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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2641
 *         with nogil: CHKERR( MPI_Comm_accept(
 *             cportname, info.ob_mpi, root,
 *             self.ob_mpi, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         options_set_errhandler(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(33, 2639, __pyx_L5_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2639
 *             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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L6:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2642
 *             cportname, info.ob_mpi, root,
 *             self.ob_mpi, &comm.ob_mpi) )
 *         options_set_errhandler(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
*/
  __pyx_t_1 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_options_set_errhandler(__pyx_v_comm->__pyx_base.ob_mpi); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 2642, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2643
 *             self.ob_mpi, &comm.ob_mpi) )
 *         options_set_errhandler(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":2624
 *     # 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":2647
 *     # 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\nMake a request to form a new intercommunicator.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_43Connect = {"Connect", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_port_name,&__pyx_mstate_global->__pyx_n_u_info,&__pyx_mstate_global->__pyx_n_u_root,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2647, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2647, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2647, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2647, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Connect", 0) < (0)) __PYX_ERR(33, 2647, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__107);
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Connect", 0, 1, 3, i); __PYX_ERR(33, 2647, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2647, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2647, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2647, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__107);
    }
    __pyx_v_port_name = values[0];
    __pyx_v_info = ((struct PyMPIInfoObject *)values[1]);
    if (values[2]) {
      __pyx_v_root = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2651, __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(33, 2647, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 2650, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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":2656
 *         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":2657
 *         """
 *         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":2658
 *         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(33, 2658, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2659
 *         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":2660
 *         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(33, 2660, __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":2659
 *         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":2661
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intercomm); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2661, __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":2662
 *             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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2664
 *         with nogil: CHKERR( MPI_Comm_connect(
 *             cportname, info.ob_mpi, root,
 *             self.ob_mpi, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         options_set_errhandler(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(33, 2662, __pyx_L5_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2662
 *             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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L6:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2665
 *             cportname, info.ob_mpi, root,
 *             self.ob_mpi, &comm.ob_mpi) )
 *         options_set_errhandler(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
*/
  __pyx_t_1 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_options_set_errhandler(__pyx_v_comm->__pyx_base.ob_mpi); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 2665, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2666
 *             self.ob_mpi, &comm.ob_mpi) )
 *         options_set_errhandler(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":2647
 *     # 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":2674
 *     """
 * 
 *     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_SIZE
  __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 ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_comm,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2674, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2674, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < (0)) __PYX_ERR(33, 2674, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPICommObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2674, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPICommObject *)Py_None));
    }
    __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(33, 2674, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) __PYX_ERR(33, 2674, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2675
 * 
 *     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":2676
 *     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":2677
 *         <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":2678
 *         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(33, 2678, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2679
 *         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":2680
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *         if topo == MPI_UNDEFINED:
 *             raise TypeError("expecting a topology communicator")             # <<<<<<<<<<<<<<
 * 
 *     property degrees:
*/
    __pyx_t_4 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_expecting_a_topology_communicato};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2680, __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(33, 2680, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/Comm.pyx":2679
 *         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":2674
 *     """
 * 
 *     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_XDECREF(__pyx_t_4);
  __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":2684
 *     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;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2687
 *             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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Cartcomm); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Comm.pyx":2688
 *             cdef object nneighbors
 *             if isinstance(self, Cartcomm):
 *                 dim = self.Get_dim()             # <<<<<<<<<<<<<<
 *                 return (2*dim, 2*dim)
 *             if isinstance(self, Graphcomm):
*/
    __pyx_t_3 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
      __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_dim, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 2688, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __pyx_v_dim = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2689
 *             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_PyLong_MultiplyCObj(__pyx_mstate_global->__pyx_int_2, __pyx_v_dim, 2, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 2689, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyLong_MultiplyCObj(__pyx_mstate_global->__pyx_int_2, __pyx_v_dim, 2, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2689, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2689, __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) != (0)) __PYX_ERR(33, 2689, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_3);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3) != (0)) __PYX_ERR(33, 2689, __pyx_L1_error);
    __pyx_t_2 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2687
 *             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":2690
 *                 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Graphcomm); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Comm.pyx":2691
 *                 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 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
      __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_rank, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2691, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    __pyx_v_rank = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2692
 *             if isinstance(self, Graphcomm):
 *                 rank = self.Get_rank()
 *                 nneighbors = self.Get_neighbors_count(rank)             # <<<<<<<<<<<<<<
 *                 return (nneighbors, nneighbors)
 *             if isinstance(self, Distgraphcomm):
*/
    __pyx_t_3 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_rank};
      __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_neighbors_count, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2692, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    __pyx_v_nneighbors = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2693
 *                 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_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2693, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_INCREF(__pyx_v_nneighbors);
    __Pyx_GIVEREF(__pyx_v_nneighbors);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_nneighbors) != (0)) __PYX_ERR(33, 2693, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_nneighbors);
    __Pyx_GIVEREF(__pyx_v_nneighbors);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_nneighbors) != (0)) __PYX_ERR(33, 2693, __pyx_L1_error);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2690
 *                 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":2694
 *                 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Distgraphcomm); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Comm.pyx":2695
 *                 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 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
      __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_dist_neighbors_count, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2695, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_5, 0, 2, NULL, NULL, &__pyx_mstate_global->__pyx_slice[1], 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2695, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_v_nneighbors = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2696
 *             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":2694
 *                 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":2697
 *                 nneighbors = self.Get_dist_neighbors_count()[:2]
 *                 return nneighbors
 *             raise TypeError("expecting a topology communicator")  # ~> unreachable             # <<<<<<<<<<<<<<
 * 
 *     property indegree:
*/
  __pyx_t_5 = NULL;
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_expecting_a_topology_communicato};
    __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2697, __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(33, 2697, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2684
 *     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_5);
  __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":2701
 *     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__", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2702
 *         """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_mstate_global->__pyx_n_u_degrees); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 2702, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 2702, __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":2701
 *     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":2706
 *     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__", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2707
 *         """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_mstate_global->__pyx_n_u_degrees); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 2707, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 2707, __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":2706
 *     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":2711
 *     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;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  PyObject *__pyx_t_8 = NULL;
  PyObject *(*__pyx_t_9)(PyObject *);
  int __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2714
 *             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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Cartcomm); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Comm.pyx":2715
 *             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(33, 2715, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_neighbors = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2716
 *             if isinstance(self, Cartcomm):
 *                 neighbors = []
 *                 for direction in range(self.Get_dim()):             # <<<<<<<<<<<<<<
 *                     source, dest = self.Shift(direction, 1)
 *                     neighbors.append(source)
*/
    __pyx_t_3 = NULL;
    __pyx_t_5 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
      __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_dim, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 2716, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    }
    __pyx_t_6 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(&PyRange_Type), __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 2716, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 2716, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(33, 2716, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    for (;;) {
      {
        __pyx_t_2 = __pyx_t_7(__pyx_t_4);
        if (unlikely(!__pyx_t_2)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(33, 2716, __pyx_L1_error)
            PyErr_Clear();
          }
          break;
        }
      }
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_XDECREF_SET(__pyx_v_direction, __pyx_t_2);
      __pyx_t_2 = 0;

      /* "src/mpi4py/MPI.src/Comm.pyx":2717
 *                 neighbors = []
 *                 for direction in range(self.Get_dim()):
 *                     source, dest = self.Shift(direction, 1)             # <<<<<<<<<<<<<<
 *                     neighbors.append(source)
 *                     neighbors.append(dest)
*/
      __pyx_t_3 = ((PyObject *)__pyx_v_self);
      __Pyx_INCREF(__pyx_t_3);
      __pyx_t_6 = 0;
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_direction, __pyx_mstate_global->__pyx_int_1};
        __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Shift, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 2717, __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 != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          __PYX_ERR(33, 2717, __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_INCREF(__pyx_t_3);
          __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1);
          __Pyx_INCREF(__pyx_t_5);
        } else {
          __pyx_t_3 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
          if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2717, __pyx_L1_error)
          __Pyx_XGOTREF(__pyx_t_3);
          __pyx_t_5 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
          if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2717, __pyx_L1_error)
          __Pyx_XGOTREF(__pyx_t_5);
        }
        #else
        __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2717, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_5 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2717, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_8 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 2717, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_t_9 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_8);
        index = 0; __pyx_t_3 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_3)) goto __pyx_L6_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_3);
        index = 1; __pyx_t_5 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_5)) goto __pyx_L6_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_5);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < (0)) __PYX_ERR(33, 2717, __pyx_L1_error)
        __pyx_t_9 = NULL;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L7_unpacking_done;
        __pyx_L6_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_9 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        __PYX_ERR(33, 2717, __pyx_L1_error)
        __pyx_L7_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_v_source, __pyx_t_3);
      __pyx_t_3 = 0;
      __Pyx_XDECREF_SET(__pyx_v_dest, __pyx_t_5);
      __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/Comm.pyx":2718
 *                 for direction in range(self.Get_dim()):
 *                     source, dest = self.Shift(direction, 1)
 *                     neighbors.append(source)             # <<<<<<<<<<<<<<
 *                     neighbors.append(dest)
 *                 return (neighbors, neighbors)
*/
      __pyx_t_10 = __Pyx_PyObject_Append(__pyx_v_neighbors, __pyx_v_source); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(33, 2718, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/Comm.pyx":2719
 *                     source, dest = self.Shift(direction, 1)
 *                     neighbors.append(source)
 *                     neighbors.append(dest)             # <<<<<<<<<<<<<<
 *                 return (neighbors, neighbors)
 *             if isinstance(self, Graphcomm):
*/
      __pyx_t_10 = __Pyx_PyObject_Append(__pyx_v_neighbors, __pyx_v_dest); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(33, 2719, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/Comm.pyx":2716
 *             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_4); __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2720
 *                     neighbors.append(source)
 *                     neighbors.append(dest)
 *                 return (neighbors, neighbors)             # <<<<<<<<<<<<<<
 *             if isinstance(self, Graphcomm):
 *                 rank = self.Get_rank()
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 2720, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_v_neighbors);
    __Pyx_GIVEREF(__pyx_v_neighbors);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_neighbors) != (0)) __PYX_ERR(33, 2720, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_neighbors);
    __Pyx_GIVEREF(__pyx_v_neighbors);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_neighbors) != (0)) __PYX_ERR(33, 2720, __pyx_L1_error);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2714
 *             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":2721
 *                     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Graphcomm); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Comm.pyx":2722
 *                 return (neighbors, neighbors)
 *             if isinstance(self, Graphcomm):
 *                 rank = self.Get_rank()             # <<<<<<<<<<<<<<
 *                 neighbors = self.Get_neighbors(rank)
 *                 return (neighbors, neighbors)
*/
    __pyx_t_2 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
      __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_rank, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 2722, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    }
    __pyx_v_rank = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2723
 *             if isinstance(self, Graphcomm):
 *                 rank = self.Get_rank()
 *                 neighbors = self.Get_neighbors(rank)             # <<<<<<<<<<<<<<
 *                 return (neighbors, neighbors)
 *             if isinstance(self, Distgraphcomm):
*/
    __pyx_t_2 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_rank};
      __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_neighbors, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 2723, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    }
    __pyx_v_neighbors = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2724
 *                 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_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 2724, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_v_neighbors);
    __Pyx_GIVEREF(__pyx_v_neighbors);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_neighbors) != (0)) __PYX_ERR(33, 2724, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_neighbors);
    __Pyx_GIVEREF(__pyx_v_neighbors);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_neighbors) != (0)) __PYX_ERR(33, 2724, __pyx_L1_error);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2721
 *                     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":2725
 *                 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Distgraphcomm); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Comm.pyx":2726
 *                 return (neighbors, neighbors)
 *             if isinstance(self, Distgraphcomm):
 *                 neighbors = self.Get_dist_neighbors()[:2]             # <<<<<<<<<<<<<<
 *                 return neighbors
 *             raise TypeError("expecting a topology communicator")  # ~> unreachable
*/
    __pyx_t_2 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
      __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_dist_neighbors, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 2726, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    }
    __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_t_4, 0, 2, NULL, NULL, &__pyx_mstate_global->__pyx_slice[1], 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 2726, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_neighbors = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2727
 *             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":2725
 *                 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":2728
 *                 neighbors = self.Get_dist_neighbors()[:2]
 *                 return neighbors
 *             raise TypeError("expecting a topology communicator")  # ~> unreachable             # <<<<<<<<<<<<<<
 * 
 *     property inedges:
*/
  __pyx_t_4 = NULL;
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_expecting_a_topology_communicato};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 2728, __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(33, 2728, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2711
 *     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_5);
  __Pyx_XDECREF(__pyx_t_8);
  __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":2732
 *     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__", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2733
 *         """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_mstate_global->__pyx_n_u_inoutedges); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 2733, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 2733, __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":2732
 *     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":2737
 *     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__", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2738
 *         """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_mstate_global->__pyx_n_u_inoutedges); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 2738, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 2738, __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":2737
 *     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":2743
 *     # ------------------------
 * 
 *     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\nNeighbor Gather to All.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_3Neighbor_allgather = {"Neighbor_allgather", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2743, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2743, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2743, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Neighbor_allgather", 0) < (0)) __PYX_ERR(33, 2743, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Neighbor_allgather", 1, 2, 2, i); __PYX_ERR(33, 2743, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2743, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2743, __pyx_L3_error)
    }
    __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(33, 2743, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2751
 *         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(33, 2751, __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":2752
 *         """
 *         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(33, 2752, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2753
 *         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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2756
 *             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(33, 2753, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2753
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2743
 *     # ------------------------
 * 
 *     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":2758
 *             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\nNeighbor Gather to All Vector.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_5Neighbor_allgatherv = {"Neighbor_allgatherv", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2758, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2758, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2758, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Neighbor_allgatherv", 0) < (0)) __PYX_ERR(33, 2758, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Neighbor_allgatherv", 1, 2, 2, i); __PYX_ERR(33, 2758, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2758, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2758, __pyx_L3_error)
    }
    __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(33, 2758, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2766
 *         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(33, 2766, __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":2767
 *         """
 *         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(33, 2767, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2768
 *         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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2771
 *             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(33, 2768, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2768
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2758
 *             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":2773
 *             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\nNeighbor All to All.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_7Neighbor_alltoall = {"Neighbor_alltoall", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2773, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2773, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2773, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Neighbor_alltoall", 0) < (0)) __PYX_ERR(33, 2773, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Neighbor_alltoall", 1, 2, 2, i); __PYX_ERR(33, 2773, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2773, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2773, __pyx_L3_error)
    }
    __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(33, 2773, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2781
 *         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(33, 2781, __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":2782
 *         """
 *         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(33, 2782, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2783
 *         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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2786
 *             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(33, 2783, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2783
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2773
 *             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":2788
 *             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\nNeighbor All to All Vector.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_9Neighbor_alltoallv = {"Neighbor_alltoallv", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2788, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2788, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2788, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Neighbor_alltoallv", 0) < (0)) __PYX_ERR(33, 2788, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Neighbor_alltoallv", 1, 2, 2, i); __PYX_ERR(33, 2788, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2788, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2788, __pyx_L3_error)
    }
    __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(33, 2788, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2796
 *         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(33, 2796, __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":2797
 *         """
 *         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(33, 2797, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2798
 *         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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2801
 *             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(33, 2798, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2798
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2788
 *             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":2803
 *             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\nNeighbor All to All General.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_11Neighbor_alltoallw = {"Neighbor_alltoallw", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2803, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2803, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2803, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Neighbor_alltoallw", 0) < (0)) __PYX_ERR(33, 2803, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Neighbor_alltoallw", 1, 2, 2, i); __PYX_ERR(33, 2803, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2803, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2803, __pyx_L3_error)
    }
    __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(33, 2803, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2811
 *         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(33, 2811, __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":2812
 *         """
 *         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(33, 2812, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2813
 *         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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2816
 *             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(33, 2813, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2813
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2803
 *             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":2821
 *     # ------------------------------------
 * 
 *     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\nNonblocking Neighbor Gather to All.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_13Ineighbor_allgather = {"Ineighbor_allgather", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2821, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2821, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2821, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Ineighbor_allgather", 0) < (0)) __PYX_ERR(33, 2821, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Ineighbor_allgather", 1, 2, 2, i); __PYX_ERR(33, 2821, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2821, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2821, __pyx_L3_error)
    }
    __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(33, 2821, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2829
 *         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(33, 2829, __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":2830
 *         """
 *         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(33, 2830, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2831
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 2831, __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":2832
 *         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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2835
 *             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(33, 2832, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2832
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2836
 *             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":2837
 *             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":2821
 *     # ------------------------------------
 * 
 *     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":2839
 *         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\nNonblocking Neighbor Gather to All Vector.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_15Ineighbor_allgatherv = {"Ineighbor_allgatherv", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2839, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2839, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2839, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Ineighbor_allgatherv", 0) < (0)) __PYX_ERR(33, 2839, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Ineighbor_allgatherv", 1, 2, 2, i); __PYX_ERR(33, 2839, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2839, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2839, __pyx_L3_error)
    }
    __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(33, 2839, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2847
 *         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(33, 2847, __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":2848
 *         """
 *         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(33, 2848, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2849
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 2849, __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":2850
 *         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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2853
 *             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(33, 2850, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2850
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2854
 *             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":2855
 *             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":2839
 *         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":2857
 *         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\nNonblocking Neighbor All to All.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_17Ineighbor_alltoall = {"Ineighbor_alltoall", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2857, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2857, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2857, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Ineighbor_alltoall", 0) < (0)) __PYX_ERR(33, 2857, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Ineighbor_alltoall", 1, 2, 2, i); __PYX_ERR(33, 2857, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2857, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2857, __pyx_L3_error)
    }
    __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(33, 2857, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2865
 *         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(33, 2865, __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":2866
 *         """
 *         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(33, 2866, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2867
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 2867, __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":2868
 *         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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2871
 *             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(33, 2868, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2868
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2872
 *             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":2873
 *             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":2857
 *         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":2875
 *         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\nNonblocking Neighbor All to All Vector.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_19Ineighbor_alltoallv = {"Ineighbor_alltoallv", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2875, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2875, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2875, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Ineighbor_alltoallv", 0) < (0)) __PYX_ERR(33, 2875, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Ineighbor_alltoallv", 1, 2, 2, i); __PYX_ERR(33, 2875, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2875, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2875, __pyx_L3_error)
    }
    __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(33, 2875, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2883
 *         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(33, 2883, __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":2884
 *         """
 *         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(33, 2884, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2885
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 2885, __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":2886
 *         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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2889
 *             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(33, 2886, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2886
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2890
 *             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":2891
 *             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":2875
 *         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":2893
 *         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\nNonblocking Neighbor All to All General.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_21Ineighbor_alltoallw = {"Ineighbor_alltoallw", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2893, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2893, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2893, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Ineighbor_alltoallw", 0) < (0)) __PYX_ERR(33, 2893, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Ineighbor_alltoallw", 1, 2, 2, i); __PYX_ERR(33, 2893, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2893, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2893, __pyx_L3_error)
    }
    __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(33, 2893, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2901
 *         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(33, 2901, __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":2902
 *         """
 *         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(33, 2902, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2903
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 2903, __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":2904
 *         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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2907
 *             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(33, 2904, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2904
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2908
 *             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":2909
 *             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":2893
 *         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":2914
 *     # -----------------------------------
 * 
 *     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\nPersistent Neighbor Gather to All.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_23Neighbor_allgather_init = {"Neighbor_allgather_init", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2914, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2914, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2914, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2914, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Neighbor_allgather_init", 0) < (0)) __PYX_ERR(33, 2914, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__108);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Neighbor_allgather_init", 0, 2, 3, i); __PYX_ERR(33, 2914, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2914, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2914, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2914, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__108);
    }
    __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(33, 2914, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 2918, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2923
 *         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(33, 2923, __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":2924
 *         """
 *         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(33, 2924, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2925
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 2925, __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":2926
 *         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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2929
 *             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(33, 2926, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2926
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2930
 *             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":2931
 *             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":2914
 *     # -----------------------------------
 * 
 *     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":2933
 *         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\nPersistent Neighbor Gather to All Vector.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_25Neighbor_allgatherv_init = {"Neighbor_allgatherv_init", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2933, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2933, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2933, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2933, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Neighbor_allgatherv_init", 0) < (0)) __PYX_ERR(33, 2933, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__109);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Neighbor_allgatherv_init", 0, 2, 3, i); __PYX_ERR(33, 2933, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2933, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2933, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2933, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__109);
    }
    __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(33, 2933, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 2937, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2942
 *         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(33, 2942, __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":2943
 *         """
 *         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(33, 2943, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2944
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 2944, __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":2945
 *         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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2948
 *             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(33, 2945, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2945
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2949
 *             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":2950
 *             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":2933
 *         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":2952
 *         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\nPersistent Neighbor All to All.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_27Neighbor_alltoall_init = {"Neighbor_alltoall_init", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2952, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2952, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2952, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2952, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Neighbor_alltoall_init", 0) < (0)) __PYX_ERR(33, 2952, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__110);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Neighbor_alltoall_init", 0, 2, 3, i); __PYX_ERR(33, 2952, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2952, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2952, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2952, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__110);
    }
    __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(33, 2952, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 2956, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2961
 *         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(33, 2961, __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":2962
 *         """
 *         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(33, 2962, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2963
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 2963, __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":2964
 *         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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2967
 *             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(33, 2964, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2964
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2968
 *             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":2969
 *             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":2952
 *         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":2971
 *         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\nPersistent Neighbor All to All Vector.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_29Neighbor_alltoallv_init = {"Neighbor_alltoallv_init", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2971, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2971, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2971, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2971, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Neighbor_alltoallv_init", 0) < (0)) __PYX_ERR(33, 2971, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__111);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Neighbor_alltoallv_init", 0, 2, 3, i); __PYX_ERR(33, 2971, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2971, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2971, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2971, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__111);
    }
    __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(33, 2971, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 2975, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2980
 *         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(33, 2980, __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":2981
 *         """
 *         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(33, 2981, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2982
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 2982, __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":2983
 *         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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2986
 *             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(33, 2983, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2983
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2987
 *             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":2988
 *             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":2971
 *         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":2990
 *         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\nPersistent Neighbor All to All General.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_31Neighbor_alltoallw_init = {"Neighbor_alltoallw_init", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendbuf,&__pyx_mstate_global->__pyx_n_u_recvbuf,&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 2990, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2990, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2990, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2990, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Neighbor_alltoallw_init", 0) < (0)) __PYX_ERR(33, 2990, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__112);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Neighbor_alltoallw_init", 0, 2, 3, i); __PYX_ERR(33, 2990, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 2990, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 2990, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 2990, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__112);
    }
    __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(33, 2990, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 2994, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":2999
 *         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(33, 2999, __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":3000
 *         """
 *         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(33, 3000, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3001
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 3001, __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":3002
 *         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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":3005
 *             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(33, 3002, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":3002
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3006
 *             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":3007
 *             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":2990
 *         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":3011
 *     # 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]\n\nNeighbor Gather to All.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_33neighbor_allgather = {"neighbor_allgather", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendobj,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 3011, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3011, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "neighbor_allgather", 0) < (0)) __PYX_ERR(33, 3011, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("neighbor_allgather", 1, 1, 1, i); __PYX_ERR(33, 3011, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3011, __pyx_L3_error)
    }
    __pyx_v_sendobj = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("neighbor_allgather", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 3011, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3013
 *     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":3014
 *         """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(33, 3014, __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":3011
 *     # 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":3016
 *         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]\n\nNeighbor All to All.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_35neighbor_alltoall = {"neighbor_alltoall", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sendobj,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 3016, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3016, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "neighbor_alltoall", 0) < (0)) __PYX_ERR(33, 3016, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("neighbor_alltoall", 1, 1, 1, i); __PYX_ERR(33, 3016, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3016, __pyx_L3_error)
    }
    __pyx_v_sendobj = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("neighbor_alltoall", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 3016, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3018
 *     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":3019
 *         """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(33, 3019, __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":3016
 *         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":3027
 *     """
 * 
 *     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_SIZE
  __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 ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_comm,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 3027, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3027, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < (0)) __PYX_ERR(33, 3027, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPICommObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3027, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPICommObject *)Py_None));
    }
    __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(33, 3027, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) __PYX_ERR(33, 3027, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3028
 * 
 *     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":3029
 *     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":3030
 *         <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":3031
 *         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(33, 3031, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3032
 *         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":3033
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *         if topo != MPI_CART:
 *             raise TypeError("expecting a Cartesian communicator")             # <<<<<<<<<<<<<<
 * 
 *     # Cartesian Inquiry Functions
*/
    __pyx_t_4 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_expecting_a_Cartesian_communicat};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 3033, __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(33, 3033, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/Comm.pyx":3032
 *         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":3027
 *     """
 * 
 *     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_XDECREF(__pyx_t_4);
  __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":3038
 *     # ---------------------------
 * 
 *     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\nReturn number of dimensions.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Cartcomm_3Get_dim = {"Get_dim", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_dim", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3042
 *         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":3043
 *         """
 *         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(33, 3043, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3044
 *         cdef int dim = 0
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &dim) )
 *         return dim             # <<<<<<<<<<<<<<
 * 
 *     property dim:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_dim); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 3044, __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":3038
 *     # ---------------------------
 * 
 *     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":3048
 *     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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3049
 *         """Number of dimensions."""
 *         def __get__(self) -> int:
 *             return self.Get_dim()             # <<<<<<<<<<<<<<
 * 
 *     property ndim:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_dim, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 3049, __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":3048
 *     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_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":3053
 *     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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3054
 *         """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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_dim, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 3054, __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":3053
 *     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_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":3056
 *             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\nReturn information on the cartesian topology.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Cartcomm_5Get_topo = {"Get_topo", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_topo", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3060
 *         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":3061
 *         """
 *         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(33, 3061, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3062
 *         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":3063
 *         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(33, 3063, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused1 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3064
 *         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":3065
 *         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(33, 3065, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused2 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3066
 *         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":3067
 *         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(33, 3067, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused3 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3068
 *         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(33, 3068, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3069
 *         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(33, 3069, __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_PyLong_From_int((__pyx_v_idims[__pyx_9genexpr12__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3069, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_5))) __PYX_ERR(33, 3069, __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":3070
 *         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(33, 3070, __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_PyLong_From_int((__pyx_v_iperiods[__pyx_9genexpr13__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3070, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_5))) __PYX_ERR(33, 3070, __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":3071
 *         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(33, 3071, __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_PyLong_From_int((__pyx_v_icoords[__pyx_9genexpr14__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3071, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_5))) __PYX_ERR(33, 3071, __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":3072
 *         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(33, 3072, __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) != (0)) __PYX_ERR(33, 3072, __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) != (0)) __PYX_ERR(33, 3072, __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) != (0)) __PYX_ERR(33, 3072, __pyx_L1_error);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3056
 *             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":3076
 *     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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3077
 *         """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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_topo, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 3077, __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":3076
 *     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_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":3081
 *     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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3082
 *         """Dimensions."""
 *         def __get__(self) -> list[int]:
 *             return self.Get_topo()[0]             # <<<<<<<<<<<<<<
 * 
 *     property periods:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_topo, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 3082, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 3082, __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":3081
 *     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_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":3086
 *     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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3087
 *         """Periodicity."""
 *         def __get__(self) -> list[int]:
 *             return self.Get_topo()[1]             # <<<<<<<<<<<<<<
 * 
 *     property coords:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_topo, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 3087, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 3087, __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":3086
 *     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_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":3091
 *     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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3092
 *         """Coordinates."""
 *         def __get__(self) -> list[int]:
 *             return self.Get_topo()[2]             # <<<<<<<<<<<<<<
 * 
 *     # Cartesian Translator Functions
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_topo, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 3092, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 3092, __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":3091
 *     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_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":3097
 *     # ------------------------------
 * 
 *     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\nTranslate logical coordinates to ranks.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Cartcomm_7Get_cart_rank = {"Get_cart_rank", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_coords,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 3097, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3097, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Get_cart_rank", 0) < (0)) __PYX_ERR(33, 3097, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Get_cart_rank", 1, 1, 1, i); __PYX_ERR(33, 3097, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3097, __pyx_L3_error)
    }
    __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(33, 3097, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":3101
 *         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":3102
 *         """
 *         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(33, 3102, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3103
 *         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(33, 3103, __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":3104
 *         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":3105
 *         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(33, 3105, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3106
 *         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_PyLong_From_int(__pyx_v_rank); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 3106, __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":3097
 *     # ------------------------------
 * 
 *     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":3108
 *         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\nTranslate ranks to logical coordinates.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Cartcomm_9Get_coords = {"Get_coords", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_rank,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 3108, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3108, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Get_coords", 0) < (0)) __PYX_ERR(33, 3108, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Get_coords", 1, 1, 1, i); __PYX_ERR(33, 3108, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3108, __pyx_L3_error)
    }
    __pyx_v_rank = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 3108, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_coords", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 3108, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3112
 *         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":3113
 *         """
 *         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(33, 3113, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3114
 *         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(33, 3114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3115
 *         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(33, 3115, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3116
 *         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(33, 3116, __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_PyLong_From_int((__pyx_v_icoords[__pyx_9genexpr15__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3116, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_5))) __PYX_ERR(33, 3116, __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":3117
 *         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":3108
 *         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":3122
 *     # ------------------------
 * 
 *     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\nReturn a process ranks for data shifting with `Sendrecv`.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Cartcomm_11Shift = {"Shift", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_direction,&__pyx_mstate_global->__pyx_n_u_disp,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 3122, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 3122, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3122, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Shift", 0) < (0)) __PYX_ERR(33, 3122, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Shift", 1, 2, 2, i); __PYX_ERR(33, 3122, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3122, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 3122, __pyx_L3_error)
    }
    __pyx_v_direction = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_direction == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 3122, __pyx_L3_error)
    __pyx_v_disp = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_disp == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 3122, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Shift", 1, 2, 2, __pyx_nargs); __PYX_ERR(33, 3122, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3126
 *         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":3127
 *         """
 *         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(33, 3127, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3128
 *         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_PyLong_From_int(__pyx_v_source); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 3128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_dest); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 3128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 3128, __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) != (0)) __PYX_ERR(33, 3128, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3) != (0)) __PYX_ERR(33, 3128, __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":3122
 *     # ------------------------
 * 
 *     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":3133
 *     # ----------------------------
 * 
 *     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\nReturn a lower-dimensional Cartesian topology.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Cartcomm_13Sub = {"Sub", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_remain_dims,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 3133, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3133, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Sub", 0) < (0)) __PYX_ERR(33, 3133, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Sub", 1, 1, 1, i); __PYX_ERR(33, 3133, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3133, __pyx_L3_error)
    }
    __pyx_v_remain_dims = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Sub", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 3133, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":3137
 *         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":3138
 *         """
 *         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(33, 3138, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3139
 *         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(33, 3139, __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":3140
 *         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) )
 *         options_set_errhandler(comm.ob_mpi)
*/
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_New(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Cartcomm); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 3140, __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":3141
 *         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) )             # <<<<<<<<<<<<<<
 *         options_set_errhandler(comm.ob_mpi)
 *         return comm
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 3141, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3142
 *         cdef Cartcomm comm = <Cartcomm>New(Cartcomm)
 *         with nogil: CHKERR( MPI_Cart_sub(self.ob_mpi, iremdims, &comm.ob_mpi) )
 *         options_set_errhandler(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
*/
  __pyx_t_1 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_options_set_errhandler(__pyx_v_comm->__pyx_base.__pyx_base.__pyx_base.ob_mpi); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 3142, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3143
 *         with nogil: CHKERR( MPI_Cart_sub(self.ob_mpi, iremdims, &comm.ob_mpi) )
 *         options_set_errhandler(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":3133
 *     # ----------------------------
 * 
 *     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":3148
 * # 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\nReturn a balanced distribution of processes per coordinate direction.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_33Compute_dims = {"Compute_dims", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_nnodes,&__pyx_mstate_global->__pyx_n_u_dims,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 3148, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 3148, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3148, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Compute_dims", 0) < (0)) __PYX_ERR(33, 3148, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Compute_dims", 1, 2, 2, i); __PYX_ERR(33, 3148, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3148, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 3148, __pyx_L3_error)
    }
    __pyx_v_nnodes = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_nnodes == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 3148, __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(33, 3148, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":3152
 *     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":3153
 *     """
 *     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":3154
 *     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(33, 3154, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 3154, __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":3155
 *     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(33, 3155, __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_mstate_global->__pyx_int_0);
        __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_0);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_2, __pyx_temp, __pyx_mstate_global->__pyx_int_0) != (0)) __PYX_ERR(33, 3155, __pyx_L1_error);
      }
    }
    __Pyx_DECREF_SET(__pyx_v_dims, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":3153
 *     """
 *     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":3157
 *         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(33, 3157, __pyx_L1_error)
    __pyx_v_ndims = ((int)__pyx_t_4);
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/Comm.pyx":3158
 *     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(33, 3158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3159
 *         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(33, 3159, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3160
 *     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(33, 3160, __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_PyLong_From_int((__pyx_v_idims[__pyx_9genexpr16__pyx_v_i])); if (unlikely(!__pyx_t_7)) __PYX_ERR(33, 3160, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_7))) __PYX_ERR(33, 3160, __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":3161
 *     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":3148
 * # 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":3169
 *     """
 * 
 *     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_SIZE
  __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 ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_comm,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 3169, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3169, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < (0)) __PYX_ERR(33, 3169, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPICommObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3169, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPICommObject *)Py_None));
    }
    __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(33, 3169, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) __PYX_ERR(33, 3169, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3170
 * 
 *     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":3171
 *     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":3172
 *         <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":3173
 *         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(33, 3173, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3174
 *         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":3175
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *         if topo != MPI_GRAPH:
 *             raise TypeError("expecting a general graph communicator")             # <<<<<<<<<<<<<<
 * 
 *     # Graph Inquiry Functions
*/
    __pyx_t_4 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_expecting_a_general_graph_commun};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 3175, __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(33, 3175, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/Comm.pyx":3174
 *         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":3169
 *     """
 * 
 *     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_XDECREF(__pyx_t_4);
  __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":3180
 *     # -----------------------
 * 
 *     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\nReturn the number of nodes and edges.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Graphcomm_3Get_dims = {"Get_dims", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_dims", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3184
 *         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":3185
 *         """
 *         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(33, 3185, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3186
 *         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_PyLong_From_int(__pyx_v_nnodes); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 3186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_nedges); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 3186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 3186, __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) != (0)) __PYX_ERR(33, 3186, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3) != (0)) __PYX_ERR(33, 3186, __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":3180
 *     # -----------------------
 * 
 *     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":3190
 *     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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3191
 *         """Number of nodes and edges."""
 *         def __get__(self) -> tuple[int, int]:
 *             return self.Get_dims()             # <<<<<<<<<<<<<<
 * 
 *     property nnodes:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_dims, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 3191, __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":3190
 *     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_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":3195
 *     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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3196
 *         """Number of nodes."""
 *         def __get__(self) -> int:
 *             return self.Get_dims()[0]             # <<<<<<<<<<<<<<
 * 
 *     property nedges:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_dims, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 3196, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 3196, __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":3195
 *     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_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":3200
 *     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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3201
 *         """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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_dims, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 3201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 3201, __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":3200
 *     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_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":3203
 *             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\nReturn index and edges.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Graphcomm_5Get_topo = {"Get_topo", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_topo", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3207
 *         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":3208
 *         """
 *         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(33, 3208, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3209
 *         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":3210
 *         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(33, 3210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused1 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3211
 *         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":3212
 *         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(33, 3212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused2 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3213
 *         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(33, 3213, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3214
 *         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(33, 3214, __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_PyLong_From_int((__pyx_v_iindex[__pyx_9genexpr17__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3214, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_5))) __PYX_ERR(33, 3214, __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":3215
 *         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(33, 3215, __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_PyLong_From_int((__pyx_v_iedges[__pyx_9genexpr18__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3215, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_5))) __PYX_ERR(33, 3215, __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":3216
 *         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(33, 3216, __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) != (0)) __PYX_ERR(33, 3216, __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) != (0)) __PYX_ERR(33, 3216, __pyx_L1_error);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3203
 *             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":3220
 *     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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3221
 *         """Topology information."""
 *         def __get__(self) -> tuple[list[int], list[int]]:
 *             return self.Get_topo()             # <<<<<<<<<<<<<<
 * 
 *     property index:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_topo, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 3221, __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":3220
 *     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_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":3225
 *     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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3226
 *         """Index."""
 *         def __get__(self) -> list[int]:
 *             return self.Get_topo()[0]             # <<<<<<<<<<<<<<
 * 
 *     property edges:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_topo, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 3226, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 3226, __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":3225
 *     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_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":3230
 *     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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3231
 *         """Edges."""
 *         def __get__(self) -> list[int]:
 *             return self.Get_topo()[1]             # <<<<<<<<<<<<<<
 * 
 *     # Graph Information Functions
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_topo, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 3231, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 3231, __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":3230
 *     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_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":3236
 *     # ---------------------------
 * 
 *     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\nReturn number of neighbors of a process.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Graphcomm_7Get_neighbors_count = {"Get_neighbors_count", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_rank,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 3236, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3236, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Get_neighbors_count", 0) < (0)) __PYX_ERR(33, 3236, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Get_neighbors_count", 1, 1, 1, i); __PYX_ERR(33, 3236, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3236, __pyx_L3_error)
    }
    __pyx_v_rank = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 3236, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_neighbors_count", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 3236, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3240
 *         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":3241
 *         """
 *         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(33, 3241, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3242
 *         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_PyLong_From_int(__pyx_v_nneighbors); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 3242, __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":3236
 *     # ---------------------------
 * 
 *     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":3246
 *     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;
  size_t __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__", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3247
 *         """Number of neighbors."""
 *         def __get__(self) -> int:
 *             cdef int rank = self.Get_rank()             # <<<<<<<<<<<<<<
 *             return self.Get_neighbors_count(rank)
 * 
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_rank, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 3247, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 3247, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_rank = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":3248
 *         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 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_rank); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_5};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_neighbors_count, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 3248, __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":3246
 *     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_5);
  __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":3250
 *             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\nReturn list of neighbors of a process.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Graphcomm_9Get_neighbors = {"Get_neighbors", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_rank,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 3250, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3250, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Get_neighbors", 0) < (0)) __PYX_ERR(33, 3250, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Get_neighbors", 1, 1, 1, i); __PYX_ERR(33, 3250, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3250, __pyx_L3_error)
    }
    __pyx_v_rank = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 3250, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_neighbors", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 3250, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3254
 *         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":3255
 *         """
 *         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(33, 3255, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3257
 *         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(33, 3257, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3258
 *                 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(33, 3258, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3260
 *         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(33, 3260, __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_PyLong_From_int((__pyx_v_ineighbors[__pyx_9genexpr19__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3260, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_5))) __PYX_ERR(33, 3260, __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":3261
 *                 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":3250
 *             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":3265
 *     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;
  size_t __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__", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3266
 *         """Neighbors."""
 *         def __get__(self) -> list[int]:
 *             cdef int rank = self.Get_rank()             # <<<<<<<<<<<<<<
 *             return self.Get_neighbors(rank)
 * 
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_rank, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 3266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 3266, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_rank = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":3267
 *         def __get__(self) -> list[int]:
 *             cdef int rank = self.Get_rank()
 *             return self.Get_neighbors(rank)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_rank); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_5};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_neighbors, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 3267, __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":3265
 *     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_5);
  __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":3275
 *     """
 * 
 *     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_SIZE
  __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 ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_comm,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 3275, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3275, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < (0)) __PYX_ERR(33, 3275, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPICommObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3275, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPICommObject *)Py_None));
    }
    __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(33, 3275, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) __PYX_ERR(33, 3275, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3276
 * 
 *     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":3277
 *     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":3278
 *         <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":3279
 *         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(33, 3279, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3280
 *         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":3281
 *         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_4 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_expecting_a_distributed_graph_co};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 3281, __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(33, 3281, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/Comm.pyx":3280
 *         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":3275
 *     """
 * 
 *     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_XDECREF(__pyx_t_4);
  __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":3286
 *     # --------------------------
 * 
 *     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\nReturn adjacency information for a distributed graph topology.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_13Distgraphcomm_3Get_dist_neighbors_count = {"Get_dist_neighbors_count", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_dist_neighbors_count", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3290
 *         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":3291
 *         """
 *         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":3292
 *         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":3293
 *         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(33, 3293, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3295
 *         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_PyLong_From_int(__pyx_v_indegree); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 3295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_outdegree); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 3295, __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(33, 3295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3295, __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) != (0)) __PYX_ERR(33, 3295, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3) != (0)) __PYX_ERR(33, 3295, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4) != (0)) __PYX_ERR(33, 3295, __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":3286
 *     # --------------------------
 * 
 *     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":3297
 *         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\nReturn adjacency information for a distributed graph topology.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_13Distgraphcomm_5Get_dist_neighbors = {"Get_dist_neighbors", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_dist_neighbors", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3302
 *         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":3303
 *         """
 *         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(33, 3303, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3306
 *                 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":3307
 *         #
 *         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":3308
 *         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":3310
 *         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(33, 3310, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused1 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3311
 *         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(33, 3311, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused2 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3312
 *         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":3313
 *         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(33, 3313, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_unused3 = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":3314
 *         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":3315
 *             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":3316
 *             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(33, 3316, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_unused4 = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":3317
 *                 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":3318
 *             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":3312
 *         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":3320
 *                 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(33, 3320, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3325
 *                 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(33, 3325, __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_PyLong_From_int((__pyx_v_sources[__pyx_9genexpr20__pyx_v_i])); if (unlikely(!__pyx_t_6)) __PYX_ERR(33, 3325, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(33, 3325, __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":3326
 *         #
 *         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(33, 3326, __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_PyLong_From_int((__pyx_v_destinations[__pyx_9genexpr21__pyx_v_i])); if (unlikely(!__pyx_t_6)) __PYX_ERR(33, 3326, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(33, 3326, __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":3327
 *         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(33, 3327, __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) != (0)) __PYX_ERR(33, 3327, __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) != (0)) __PYX_ERR(33, 3327, __pyx_L1_error);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None) != (0)) __PYX_ERR(33, 3327, __pyx_L1_error);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3329
 *         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(33, 3329, __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_PyLong_From_int((__pyx_v_sourceweights[__pyx_9genexpr22__pyx_v_i])); if (unlikely(!__pyx_t_6)) __PYX_ERR(33, 3329, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(33, 3329, __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":3330
 *         #
 *         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(33, 3330, __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_PyLong_From_int((__pyx_v_destweights[__pyx_9genexpr23__pyx_v_i])); if (unlikely(!__pyx_t_6)) __PYX_ERR(33, 3330, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(33, 3330, __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":3331
 *         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(33, 3331, __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) != (0)) __PYX_ERR(33, 3331, __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) != (0)) __PYX_ERR(33, 3331, __pyx_L1_error);
  __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(33, 3331, __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) != (0)) __PYX_ERR(33, 3331, __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) != (0)) __PYX_ERR(33, 3331, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_2) != (0)) __PYX_ERR(33, 3331, __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":3297
 *         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":3339
 *     """
 * 
 *     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_SIZE
  __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 ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_comm,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 3339, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3339, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < (0)) __PYX_ERR(33, 3339, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPICommObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3339, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPICommObject *)Py_None));
    }
    __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(33, 3339, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) __PYX_ERR(33, 3339, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3340
 * 
 *     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":3341
 *     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":3342
 *         <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":3343
 *         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(33, 3343, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3344
 *         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":3345
 *         CHKERR( MPI_Comm_test_inter(self.ob_mpi, &inter) )
 *         if not inter:
 *             raise TypeError("expecting an intercommunicator")             # <<<<<<<<<<<<<<
 * 
 *     # Intercommunicator Constructors
*/
    __pyx_t_4 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_expecting_an_intercommunicator};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 3345, __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(33, 3345, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/Comm.pyx":3344
 *         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":3339
 *     """
 * 
 *     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_XDECREF(__pyx_t_4);
  __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":3350
 *     # ------------------------------
 * 
 *     @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\nCreate communicator from group.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intercomm_3Create_from_groups = {"Create_from_groups", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_local_group,&__pyx_mstate_global->__pyx_n_u_local_leader,&__pyx_mstate_global->__pyx_n_u_remote_group,&__pyx_mstate_global->__pyx_n_u_remote_leader,&__pyx_mstate_global->__pyx_n_u_stringtag,&__pyx_mstate_global->__pyx_n_u_info,&__pyx_mstate_global->__pyx_n_u_errhandler,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 3350, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(33, 3350, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(33, 3350, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(33, 3350, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 3350, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 3350, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 3350, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3350, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create_from_groups", 0) < (0)) __PYX_ERR(33, 3350, __pyx_L3_error)
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_kp_u_org_mpi4py));
      if (!values[5]) values[5] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__113);

      /* "src/mpi4py/MPI.src/Comm.pyx":3359
 *         stringtag: str = "org.mpi4py",
 *         Info info: Info = INFO_NULL,
 *         Errhandler errhandler: Errhandler | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Intracomm:
 *         """
*/
      if (!values[6]) values[6] = __Pyx_NewRef((PyObject *)((struct PyMPIErrhandlerObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 4; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Create_from_groups", 0, 4, 7, i); __PYX_ERR(33, 3350, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(33, 3350, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(33, 3350, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(33, 3350, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(33, 3350, __pyx_L3_error)
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 3350, __pyx_L3_error)
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 3350, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3350, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_kp_u_org_mpi4py));
      if (!values[5]) values[5] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__113);
      if (!values[6]) values[6] = __Pyx_NewRef((PyObject *)((struct PyMPIErrhandlerObject *)Py_None));
    }
    __pyx_v_local_group = ((struct PyMPIGroupObject *)values[0]);
    __pyx_v_local_leader = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_local_leader == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 3354, __pyx_L3_error)
    __pyx_v_remote_group = ((struct PyMPIGroupObject *)values[2]);
    __pyx_v_remote_leader = __Pyx_PyLong_As_int(values[3]); if (unlikely((__pyx_v_remote_leader == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 3356, __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(33, 3350, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, 0, "local_group", 0))) __PYX_ERR(33, 3353, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_remote_group), __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, 0, "remote_group", 0))) __PYX_ERR(33, 3355, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 3358, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_errhandler), __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler, 1, "errhandler", 0))) __PYX_ERR(33, 3359, __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":3350
 *     # ------------------------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_from_groups(
 *         cls,
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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":3364
 *         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":3365
 *         """
 *         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(33, 3365, __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":3366
 *         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 const )MPI_ERRHANDLER_NULL) && PyErr_Occurred())) __PYX_ERR(33, 3366, __pyx_L1_error)
  __pyx_v_cerrhdl = __pyx_t_2;

  /* "src/mpi4py/MPI.src/Comm.pyx":3367
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intercomm); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 3367, __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":3368
 *         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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":3371
 *             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(33, 3368, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":3368
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3372
 *             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":3350
 *     # ------------------------------
 * 
 *     @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":3377
 *     # ---------------------------
 * 
 *     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\nAccess the remote group associated with the inter-communicator.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intercomm_5Get_remote_group = {"Get_remote_group", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_remote_group", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3381
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 3381, __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":3382
 *         """
 *         cdef Group group = <Group>New(Group)
 *         with nogil: CHKERR( MPI_Comm_remote_group(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &group.ob_mpi) )
 *         return group
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":3383
 *         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(33, 3382, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":3382
 *         """
 *         cdef Group group = <Group>New(Group)
 *         with nogil: CHKERR( MPI_Comm_remote_group(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &group.ob_mpi) )
 *         return group
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3384
 *         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":3377
 *     # ---------------------------
 * 
 *     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":3388
 *     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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3389
 *         """Remote group."""
 *         def __get__(self) -> Group:
 *             return self.Get_remote_group()             # <<<<<<<<<<<<<<
 * 
 *     def Get_remote_size(self) -> int:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_remote_group, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 3389, __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":3388
 *     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_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":3391
 *             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\nIntercommunicator remote size.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intercomm_7Get_remote_size = {"Get_remote_size", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_remote_size", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3395
 *         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":3396
 *         """
 *         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(33, 3396, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3397
 *         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_PyLong_From_int(__pyx_v_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 3397, __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":3391
 *             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":3401
 *     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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3402
 *         """Number of remote processes."""
 *         def __get__(self) -> int:
 *             return self.Get_remote_size()             # <<<<<<<<<<<<<<
 * 
 *     # Communicator Constructors
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_remote_size, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 3402, __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":3401
 *     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_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":3407
 *     # -------------------------
 * 
 *     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\nMerge intercommunicator into an intracommunicator.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intercomm_9Merge = {"Merge", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_high,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 3407, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3407, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Merge", 0) < (0)) __PYX_ERR(33, 3407, __pyx_L3_error)
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3407, __pyx_L3_error)
        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(33, 3407, __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(33, 3407, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3411
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 3411, __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":3412
 *         """
 *         cdef Intracomm comm = <Intracomm>New(Intracomm)
 *         with nogil: CHKERR( MPI_Intercomm_merge(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, high, &comm.ob_mpi) )
 *         options_set_errhandler(comm.ob_mpi)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":3413
 *         cdef Intracomm comm = <Intracomm>New(Intracomm)
 *         with nogil: CHKERR( MPI_Intercomm_merge(
 *             self.ob_mpi, high, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         options_set_errhandler(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(33, 3412, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":3412
 *         """
 *         cdef Intracomm comm = <Intracomm>New(Intracomm)
 *         with nogil: CHKERR( MPI_Intercomm_merge(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, high, &comm.ob_mpi) )
 *         options_set_errhandler(comm.ob_mpi)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3414
 *         with nogil: CHKERR( MPI_Intercomm_merge(
 *             self.ob_mpi, high, &comm.ob_mpi) )
 *         options_set_errhandler(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
*/
  __pyx_t_3 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_options_set_errhandler(__pyx_v_comm->__pyx_base.ob_mpi); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 3414, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3415
 *             self.ob_mpi, high, &comm.ob_mpi) )
 *         options_set_errhandler(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":3407
 *     # -------------------------
 * 
 *     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":3442
 * 
 * 
 * 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\nAttach a user-provided buffer for sending in buffered mode.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_35Attach_buffer = {"Attach_buffer", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 3442, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3442, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Attach_buffer", 0) < (0)) __PYX_ERR(33, 3442, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Attach_buffer", 1, 1, 1, i); __PYX_ERR(33, 3442, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3442, __pyx_L3_error)
    }
    __pyx_v_buf = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Attach_buffer", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 3442, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":3446
 *     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":3447
 *     """
 *     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":3448
 *     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(33, 3448, __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":3449
 *     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)
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 3449, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3450
 *     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(33, 3450, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3442
 * 
 * 
 * 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":3453
 * 
 * 
 * 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\nRemove an existing attached buffer.");
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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3457
 *     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":3458
 *     """
 *     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":3459
 *     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)
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 3459, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3460
 *     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(33, 3460, __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":3453
 * 
 * 
 * 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":3463
 * 
 * 
 * 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\nBlock until all buffered messages have been transmitted.");
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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3467
 *     Block until all buffered messages have been transmitted.
 *     """
 *     with nogil: CHKERR( MPI_Buffer_flush() )             # <<<<<<<<<<<<<<
 * 
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Buffer_flush()); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 3467, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3463
 * 
 * 
 * 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":3470
 * 
 * 
 * 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\nNonblocking flush for buffered messages.");
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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3474
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 3474, __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":3475
 *     """
 *     cdef Request request = <Request>New(Request)
 *     with nogil: CHKERR( MPI_Buffer_iflush(&request.ob_mpi) )             # <<<<<<<<<<<<<<
 *     return request  # ~> MPI-4.1
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 3475, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3476
 *     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":3470
 * 
 * 
 * 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":3485
 * # ---------------
 * 
 * def Open_port(Info info: Info = INFO_NULL) -> str:             # <<<<<<<<<<<<<<
 *     """
 *     Return an address used to connect group of processes.
*/

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__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 3485, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF((PyObject *)__Pyx_CyFunction_Defaults(struct __pyx_defaults1, __pyx_self)->arg0);
  __Pyx_GIVEREF((PyObject *)__Pyx_CyFunction_Defaults(struct __pyx_defaults1, __pyx_self)->arg0);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__Pyx_CyFunction_Defaults(struct __pyx_defaults1, __pyx_self)->arg0)) != (0)) __PYX_ERR(33, 3485, __pyx_L1_error);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 3485, __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) != (0)) __PYX_ERR(33, 3485, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, Py_None) != (0)) __PYX_ERR(33, 3485, __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\nReturn an address used to connect group of processes.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_43Open_port = {"Open_port", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_info,0};
    struct __pyx_defaults1 *__pyx_dynamic_args = __Pyx_CyFunction_Defaults(struct __pyx_defaults1, __pyx_self);
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 3485, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3485, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Open_port", 0) < (0)) __PYX_ERR(33, 3485, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)__pyx_dynamic_args->arg0);
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3485, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)__pyx_dynamic_args->arg0);
    }
    __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(33, 3485, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 3485, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/Comm.pyx":3490
 *     """
 *     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":3491
 *     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)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 3491, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3492
 *     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":3493
 *     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(33, 3493, __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":3485
 * # ---------------
 * 
 * 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":3496
 * 
 * 
 * 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\nClose a port.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_45Close_port = {"Close_port", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_port_name,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 3496, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3496, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Close_port", 0) < (0)) __PYX_ERR(33, 3496, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Close_port", 1, 1, 1, i); __PYX_ERR(33, 3496, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3496, __pyx_L3_error)
    }
    __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(33, 3496, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":3500
 *     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":3501
 *     """
 *     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(33, 3501, __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":3502
 *     cdef char *cportname = NULL
 *     port_name = asmpistr(port_name, &cportname)
 *     with nogil: CHKERR( MPI_Close_port(cportname) )             # <<<<<<<<<<<<<<
 * 
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Close_port(__pyx_v_cportname)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(33, 3502, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3496
 * 
 * 
 * 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":3508
 * # ---------------
 * 
 * def Publish_name(             # <<<<<<<<<<<<<<
 *     service_name: str,
 *     port_name: str,
*/

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__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 3508, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF((PyObject *)__Pyx_CyFunction_Defaults(struct __pyx_defaults1, __pyx_self)->arg0);
  __Pyx_GIVEREF((PyObject *)__Pyx_CyFunction_Defaults(struct __pyx_defaults1, __pyx_self)->arg0);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__Pyx_CyFunction_Defaults(struct __pyx_defaults1, __pyx_self)->arg0)) != (0)) __PYX_ERR(33, 3508, __pyx_L1_error);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 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) != (0)) __PYX_ERR(33, 3508, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, Py_None) != (0)) __PYX_ERR(33, 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_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\nPublish a service name.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_47Publish_name = {"Publish_name", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_service_name,&__pyx_mstate_global->__pyx_n_u_port_name,&__pyx_mstate_global->__pyx_n_u_info,0};
    struct __pyx_defaults1 *__pyx_dynamic_args = __Pyx_CyFunction_Defaults(struct __pyx_defaults1, __pyx_self);
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 3508, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 3508, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 3508, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3508, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Publish_name", 0) < (0)) __PYX_ERR(33, 3508, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_dynamic_args->arg0);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Publish_name", 0, 2, 3, i); __PYX_ERR(33, 3508, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 3508, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 3508, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3508, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_dynamic_args->arg0);
    }
    __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(33, 3508, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 3511, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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":3516
 *     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":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(33, 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_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(33, 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_Publish_name(csrvcname, cinfo, cportname) )
 * 
*/
  if (!(likely(__Pyx_TypeTest(((PyObject *)__pyx_v_info), __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info)))) __PYX_ERR(33, 3520, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Info(((PyObject *)__pyx_v_info)); if (unlikely(__pyx_t_2 == ((MPI_Info const )MPI_INFO_NULL) && PyErr_Occurred())) __PYX_ERR(33, 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_Publish_name(csrvcname, cinfo, cportname) )             # <<<<<<<<<<<<<<
 * 
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 3521, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3508
 * # ---------------
 * 
 * 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":3524
 * 
 * 
 * def Unpublish_name(             # <<<<<<<<<<<<<<
 *     service_name: str,
 *     port_name: str,
*/

static PyObject *__pyx_pf_6mpi4py_3MPI_114__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__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 3524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF((PyObject *)__Pyx_CyFunction_Defaults(struct __pyx_defaults1, __pyx_self)->arg0);
  __Pyx_GIVEREF((PyObject *)__Pyx_CyFunction_Defaults(struct __pyx_defaults1, __pyx_self)->arg0);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__Pyx_CyFunction_Defaults(struct __pyx_defaults1, __pyx_self)->arg0)) != (0)) __PYX_ERR(33, 3524, __pyx_L1_error);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 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) != (0)) __PYX_ERR(33, 3524, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, Py_None) != (0)) __PYX_ERR(33, 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_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\nUnpublish a service name.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_49Unpublish_name = {"Unpublish_name", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_service_name,&__pyx_mstate_global->__pyx_n_u_port_name,&__pyx_mstate_global->__pyx_n_u_info,0};
    struct __pyx_defaults1 *__pyx_dynamic_args = __Pyx_CyFunction_Defaults(struct __pyx_defaults1, __pyx_self);
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 3524, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 3524, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 3524, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3524, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Unpublish_name", 0) < (0)) __PYX_ERR(33, 3524, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_dynamic_args->arg0);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Unpublish_name", 0, 2, 3, i); __PYX_ERR(33, 3524, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(33, 3524, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 3524, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3524, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_dynamic_args->arg0);
    }
    __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(33, 3524, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 3527, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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":3532
 *     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":3533
 *     """
 *     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(33, 3533, __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":3534
 *     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":3535
 *     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(33, 3535, __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":3536
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info)))) __PYX_ERR(33, 3536, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Info(((PyObject *)__pyx_v_info)); if (unlikely(__pyx_t_2 == ((MPI_Info const )MPI_INFO_NULL) && PyErr_Occurred())) __PYX_ERR(33, 3536, __pyx_L1_error)
  __pyx_v_cinfo = __pyx_t_2;

  /* "src/mpi4py/MPI.src/Comm.pyx":3537
 *     port_name = asmpistr(port_name, &cportname)
 *     cdef MPI_Info cinfo = arg_Info(<Info?>info)
 *     with nogil: CHKERR( MPI_Unpublish_name(csrvcname, cinfo, cportname) )             # <<<<<<<<<<<<<<
 * 
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 3537, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3524
 * 
 * 
 * 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":3540
 * 
 * 
 * def Lookup_name(             # <<<<<<<<<<<<<<
 *     service_name: str,
 *     info: Info = INFO_NULL,
*/

static PyObject *__pyx_pf_6mpi4py_3MPI_116__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__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 3540, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__Pyx_CyFunction_Defaults(struct __pyx_defaults2, __pyx_self)->arg0);
  __Pyx_GIVEREF(__Pyx_CyFunction_Defaults(struct __pyx_defaults2, __pyx_self)->arg0);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __Pyx_CyFunction_Defaults(struct __pyx_defaults2, __pyx_self)->arg0) != (0)) __PYX_ERR(33, 3540, __pyx_L1_error);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 3540, __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) != (0)) __PYX_ERR(33, 3540, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, Py_None) != (0)) __PYX_ERR(33, 3540, __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\nLookup a port name given a service name.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_51Lookup_name = {"Lookup_name", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_service_name,&__pyx_mstate_global->__pyx_n_u_info,0};
    struct __pyx_defaults2 *__pyx_dynamic_args = __Pyx_CyFunction_Defaults(struct __pyx_defaults2, __pyx_self);
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(33, 3540, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 3540, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3540, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Lookup_name", 0) < (0)) __PYX_ERR(33, 3540, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef(__pyx_dynamic_args->arg0);
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Lookup_name", 0, 1, 2, i); __PYX_ERR(33, 3540, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(33, 3540, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(33, 3540, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(__pyx_dynamic_args->arg0);
    }
    __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(33, 3540, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":3547
 *     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":3548
 *     """
 *     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(33, 3548, __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":3549
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info)))) __PYX_ERR(33, 3549, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Info(__pyx_v_info); if (unlikely(__pyx_t_2 == ((MPI_Info const )MPI_INFO_NULL) && PyErr_Occurred())) __PYX_ERR(33, 3549, __pyx_L1_error)
  __pyx_v_cinfo = __pyx_t_2;

  /* "src/mpi4py/MPI.src/Comm.pyx":3551
 *     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":3552
 *     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)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(33, 3552, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3553
 *     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":3554
 *     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(33, 3554, __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":3540
 * 
 * 
 * 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_SIZE
  __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 ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_win,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 32, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 32, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < (0)) __PYX_ERR(34, 32, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIWinObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 32, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIWinObject *)Py_None));
    }
    __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(34, 32, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, 1, "win", 0))) __PYX_ERR(34, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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(34, 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(34, 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__", 0);

  /* "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_mstate_global->__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(34, 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(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce__", __pyx_kwds); 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__", 0);

  /* "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(34, 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__", 0);

  /* "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_PyLong_FromSize_t(__pyx_fuse_9__pyx_f_6mpi4py_3MPI_tohandle(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 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\nCreate object from MPI handle.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_11fromhandle = {"fromhandle", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_handle,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 53, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 53, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "fromhandle", 0) < (0)) __PYX_ERR(34, 53, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("fromhandle", 1, 1, 1, i); __PYX_ERR(34, 53, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 53, __pyx_L3_error)
    }
    __pyx_v_handle = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fromhandle", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 53, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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_PyLong_As_size_t(__pyx_v_handle); if (unlikely((__pyx_t_1 == ((Py_uintptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(34, 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(34, 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\nCall `Free` if not null.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_13free = {"free", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("free", __pyx_kwds); 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", 0);

  /* "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(34, 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\nCreate an window object for one-sided communication.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_15Create = {"Create", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_memory,&__pyx_mstate_global->__pyx_n_u_disp_unit,&__pyx_mstate_global->__pyx_n_u_info,&__pyx_mstate_global->__pyx_n_u_comm,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 69, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(34, 69, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(34, 69, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 69, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 69, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create", 0) < (0)) __PYX_ERR(34, 69, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__114);
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__115);
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Create", 0, 1, 4, i); __PYX_ERR(34, 69, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(34, 69, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(34, 69, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 69, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 69, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__114);
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__115);
    }
    __pyx_v_memory = values[0];
    if (values[1]) {
      __pyx_v_disp_unit = __Pyx_PyLong_As_MPI_Aint(values[1]); if (unlikely((__pyx_v_disp_unit == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(34, 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(34, 69, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(34, 74, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm, 0, "comm", 0))) __PYX_ERR(34, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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(34, 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(34, 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(34, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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) )             # <<<<<<<<<<<<<<
 *         options_set_errhandler(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(34, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L7;
        }
        __pyx_L6_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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) )
 *         options_set_errhandler(win.ob_mpi)             # <<<<<<<<<<<<<<
 *         win.ob_mem = memory
 *         return win
*/
  __pyx_t_4 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_options_set_errhandler(__pyx_v_win->ob_mpi); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(34, 90, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":91
 *             info.ob_mpi, comm.ob_mpi, &win.ob_mpi) )
 *         options_set_errhandler(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
 *         options_set_errhandler(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\nCreate an window object for one-sided communication.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_17Allocate = {"Allocate", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_size_2,&__pyx_mstate_global->__pyx_n_u_disp_unit,&__pyx_mstate_global->__pyx_n_u_info,&__pyx_mstate_global->__pyx_n_u_comm,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 94, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(34, 94, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(34, 94, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 94, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 94, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Allocate", 0) < (0)) __PYX_ERR(34, 94, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__116);
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__117);
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Allocate", 0, 1, 4, i); __PYX_ERR(34, 94, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(34, 94, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(34, 94, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 94, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 94, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__116);
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__117);
    }
    __pyx_v_size = __Pyx_PyLong_As_MPI_Aint(values[0]); if (unlikely((__pyx_v_size == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(34, 97, __pyx_L3_error)
    if (values[1]) {
      __pyx_v_disp_unit = __Pyx_PyLong_As_MPI_Aint(values[1]); if (unlikely((__pyx_v_disp_unit == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(34, 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(34, 94, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(34, 99, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm, 0, "comm", 0))) __PYX_ERR(34, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(34, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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) )             # <<<<<<<<<<<<<<
 *         options_set_errhandler(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(34, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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) )
 *         options_set_errhandler(win.ob_mpi)             # <<<<<<<<<<<<<<
 *         return win
 * 
*/
  __pyx_t_3 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_options_set_errhandler(__pyx_v_win->ob_mpi); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(34, 110, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":111
 *             comm.ob_mpi, &base, &win.ob_mpi) )
 *         options_set_errhandler(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\nCreate an window object for one-sided communication.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_19Allocate_shared = {"Allocate_shared", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_size_2,&__pyx_mstate_global->__pyx_n_u_disp_unit,&__pyx_mstate_global->__pyx_n_u_info,&__pyx_mstate_global->__pyx_n_u_comm,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 113, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(34, 113, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(34, 113, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 113, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 113, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Allocate_shared", 0) < (0)) __PYX_ERR(34, 113, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__118);
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__119);
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Allocate_shared", 0, 1, 4, i); __PYX_ERR(34, 113, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(34, 113, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(34, 113, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 113, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 113, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__118);
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__119);
    }
    __pyx_v_size = __Pyx_PyLong_As_MPI_Aint(values[0]); if (unlikely((__pyx_v_size == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(34, 116, __pyx_L3_error)
    if (values[1]) {
      __pyx_v_disp_unit = __Pyx_PyLong_As_MPI_Aint(values[1]); if (unlikely((__pyx_v_disp_unit == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(34, 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(34, 113, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(34, 118, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm, 0, "comm", 0))) __PYX_ERR(34, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(34, 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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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) )             # <<<<<<<<<<<<<<
 *         options_set_errhandler(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(34, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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) )
 *         options_set_errhandler(win.ob_mpi)             # <<<<<<<<<<<<<<
 *         return win
 * 
*/
  __pyx_t_3 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_options_set_errhandler(__pyx_v_win->ob_mpi); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(34, 129, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":130
 *             comm.ob_mpi, &base, &win.ob_mpi) )
 *         options_set_errhandler(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\nQuery the process-local address for remote memory segments.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_21Shared_query = {"Shared_query", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_rank,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 132, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 132, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Shared_query", 0) < (0)) __PYX_ERR(34, 132, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Shared_query", 1, 1, 1, i); __PYX_ERR(34, 132, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 132, __pyx_L3_error)
    }
    __pyx_v_rank = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 132, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Shared_query", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 132, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(34, 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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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(34, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyLong_From_MPI_Aint(__pyx_v_disp_unit); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 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) != (0)) __PYX_ERR(34, 142, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3) != (0)) __PYX_ERR(34, 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\nCreate an window object for one-sided communication.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_23Create_dynamic = {"Create_dynamic", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_info,&__pyx_mstate_global->__pyx_n_u_comm,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 144, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 144, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 144, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create_dynamic", 0) < (0)) __PYX_ERR(34, 144, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__120);
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__121);
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 144, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 144, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__120);
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__121);
    }
    __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(34, 144, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(34, 147, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm, 0, "comm", 0))) __PYX_ERR(34, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "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(34, 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) )
 *         options_set_errhandler(win.ob_mpi)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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) )             # <<<<<<<<<<<<<<
 *         options_set_errhandler(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(34, 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) )
 *         options_set_errhandler(win.ob_mpi)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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) )
 *         options_set_errhandler(win.ob_mpi)             # <<<<<<<<<<<<<<
 *         win.ob_mem = {}
 *         return win
*/
  __pyx_t_3 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_options_set_errhandler(__pyx_v_win->ob_mpi); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(34, 156, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":157
 *             info.ob_mpi, comm.ob_mpi, &win.ob_mpi) )
 *         options_set_errhandler(win.ob_mpi)
 *         win.ob_mem = {}             # <<<<<<<<<<<<<<
 *         return win
 * 
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 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
 *         options_set_errhandler(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\nAttach a local memory region.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_25Attach = {"Attach", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_memory,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 160, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 160, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Attach", 0) < (0)) __PYX_ERR(34, 160, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Attach", 1, 1, 1, i); __PYX_ERR(34, 160, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 160, __pyx_L3_error)
    }
    __pyx_v_memory = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Attach", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 160, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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(34, 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 = {}
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(34, 167, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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(34, 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(34, 170, __pyx_L6_error)
      }
      __pyx_t_1 = __Pyx_PyLong_From_MPI_Aint(((MPI_Aint)__pyx_v_base)); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 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(34, 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\nDetach a local memory region.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_27Detach = {"Detach", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_memory,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 174, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 174, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Detach", 0) < (0)) __PYX_ERR(34, 174, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Detach", 1, 1, 1, i); __PYX_ERR(34, 174, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 174, __pyx_L3_error)
    }
    __pyx_v_memory = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Detach", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 174, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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(34, 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
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(34, 180, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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(34, 183, __pyx_L6_error)
      }
      __pyx_t_1 = __Pyx_PyLong_From_MPI_Aint(((MPI_Aint)__pyx_v_base)); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 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(34, 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\nFree a window.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_29Free = {"Free", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Free", __pyx_kwds); 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) {
  MPI_Win __pyx_v_save;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Win __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("Free", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":191
 *         Free a window.
 *         """
 *         cdef MPI_Win save = self.ob_mpi             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Win_free(&self.ob_mpi) )
 *         if constobj(self): self.ob_mpi = save
*/
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_save = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Win.pyx":192
 *         """
 *         cdef MPI_Win save = self.ob_mpi
 *         with nogil: CHKERR( MPI_Win_free(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 *         if constobj(self): self.ob_mpi = save
 *         self.ob_mem = None
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_free((&__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(34, 192, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":193
 *         cdef MPI_Win save = self.ob_mpi
 *         with nogil: CHKERR( MPI_Win_free(&self.ob_mpi) )
 *         if constobj(self): self.ob_mpi = save             # <<<<<<<<<<<<<<
 *         self.ob_mem = None
 * 
*/
  __pyx_t_3 = (__pyx_fuse_9__pyx_f_6mpi4py_3MPI_constobj(__pyx_v_self) != 0);
  if (__pyx_t_3) {
    __pyx_v_self->ob_mpi = __pyx_v_save;
  }

  /* "src/mpi4py/MPI.src/Win.pyx":194
 *         with nogil: CHKERR( MPI_Win_free(&self.ob_mpi) )
 *         if constobj(self): self.ob_mpi = save
 *         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":199
 *     # -----------
 * 
 *     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\nSet new values for the hints associated with a window.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_31Set_info = {"Set_info", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 199, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 199, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Set_info", 0) < (0)) __PYX_ERR(34, 199, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Set_info", 1, 1, 1, i); __PYX_ERR(34, 199, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 199, __pyx_L3_error)
    }
    __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(34, 199, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(34, 199, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":203
 *         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:
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(34, 203, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":199
 *     # -----------
 * 
 *     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":205
 *         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\nReturn the current hints for a window.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_33Get_info = {"Get_info", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_info", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":209
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 209, __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":210
 *         """
 *         cdef Info info = <Info>New(Info)
 *         with nogil: CHKERR( MPI_Win_get_info( self.ob_mpi, &info.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return info
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(34, 210, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":211
 *         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":205
 *         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":215
 *     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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":216
 *         """Info hints."""
 *         def __get__(self) -> Info:
 *             return self.Get_info()             # <<<<<<<<<<<<<<
 * 
 *         def __set__(self, value: Info):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_info, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 216, __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":215
 *     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_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":218
 *             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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":219
 * 
 *         def __set__(self, value: Info):
 *             self.Set_info(value)             # <<<<<<<<<<<<<<
 * 
 *     # Window Group
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_value};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Set_info, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 219, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":218
 *             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_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":224
 *     # -------------
 * 
 *     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\nAccess the group of processes that created the window.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_35Get_group = {"Get_group", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_group", __pyx_kwds); 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;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_group", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":228
 *         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_2 = NULL;
  __pyx_t_3 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 228, __pyx_L1_error)
    __Pyx_GOTREF((PyObject *)__pyx_t_1);
  }
  __pyx_v_group = ((struct PyMPIGroupObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":229
 *         """
 *         cdef Group group = Group()
 *         with nogil: CHKERR( MPI_Win_get_group(self.ob_mpi, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {
        __pyx_t_4 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_get_group(__pyx_v_self->ob_mpi, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(34, 229, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":230
 *         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":224
 *     # -------------
 * 
 *     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_XDECREF(__pyx_t_2);
  __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":234
 *     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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":235
 *         """Group."""
 *         def __get__(self) -> Group:
 *             return self.Get_group()             # <<<<<<<<<<<<<<
 * 
 *     property group_size:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_group, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 235, __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":234
 *     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_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":239
 *     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__", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":240
 *         """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":241
 *         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":242
 *             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(34, 242, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":243
 *             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":244
 *             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(34, 244, __pyx_L4_error)
  }

  /* "src/mpi4py/MPI.src/Win.pyx":246
 *                 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(34, 246, __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;
       __Pyx_ExceptionSwap(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
      if ( 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(34, 246, __pyx_L7_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);
      __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:;
      __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":247
 *             finally:
 *                 CHKERR( MPI_Group_free(&group) )
 *             return group_size             # <<<<<<<<<<<<<<
 * 
 *     property group_rank:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_v_group_size); if (unlikely(!__pyx_t_11)) __PYX_ERR(34, 247, __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":239
 *     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":251
 *     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__", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":252
 *         """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":253
 *         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":254
 *             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(34, 254, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":255
 *             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":256
 *             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(34, 256, __pyx_L4_error)
  }

  /* "src/mpi4py/MPI.src/Win.pyx":258
 *                 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(34, 258, __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;
       __Pyx_ExceptionSwap(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
      if ( 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(34, 258, __pyx_L7_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);
      __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:;
      __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":259
 *             finally:
 *                 CHKERR( MPI_Group_free(&group) )
 *             return group_rank             # <<<<<<<<<<<<<<
 * 
 *     # Window Attributes
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_v_group_rank); if (unlikely(!__pyx_t_11)) __PYX_ERR(34, 259, __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":251
 *     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":264
 *     # -----------------
 * 
 *     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\nRetrieve attribute value by key.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_37Get_attr = {"Get_attr", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_keyval,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 264, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 264, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Get_attr", 0) < (0)) __PYX_ERR(34, 264, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Get_attr", 1, 1, 1, i); __PYX_ERR(34, 264, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 264, __pyx_L3_error)
    }
    __pyx_v_keyval = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 264, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_attr", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 264, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":268
 *         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":269
 *         """
 *         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":270
 *         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(34, 270, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":271
 *         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":272
 *         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_mstate_global->__pyx_int_0);
    __pyx_r = __pyx_mstate_global->__pyx_int_0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Win.pyx":274
 *         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":275
 *         # 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_PyLong_From_MPI_Aint(((MPI_Aint)__pyx_v_attrval)); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 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 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":276
 *         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":277
 *             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_PyLong_From_MPI_Aint((((MPI_Aint *)__pyx_v_attrval)[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 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
 *         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":278
 *         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":279
 *             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_PyLong_From_int((((int *)__pyx_v_attrval)[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 279, __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":278
 *         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":281
 *             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":282
 *         # 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_PyLong_From_int((((int *)__pyx_v_attrval)[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 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
 *             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":283
 *         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":284
 *             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_PyLong_From_int((((int *)__pyx_v_attrval)[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 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":283
 *         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":286
 *             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(34, 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/Win.pyx":264
 *     # -----------------
 * 
 *     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":288
 *         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\nStore attribute value associated with a key.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_39Set_attr = {"Set_attr", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_keyval,&__pyx_mstate_global->__pyx_n_u_attrval,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 288, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 288, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 288, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Set_attr", 0) < (0)) __PYX_ERR(34, 288, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Set_attr", 1, 2, 2, i); __PYX_ERR(34, 288, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 288, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 288, __pyx_L3_error)
    }
    __pyx_v_keyval = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 288, __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(34, 288, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":292
 *         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(34, 292, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":288
 *         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":294
 *         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\nDelete attribute value associated with a key.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_41Delete_attr = {"Delete_attr", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_keyval,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 294, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 294, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Delete_attr", 0) < (0)) __PYX_ERR(34, 294, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Delete_attr", 1, 1, 1, i); __PYX_ERR(34, 294, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 294, __pyx_L3_error)
    }
    __pyx_v_keyval = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 294, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Delete_attr", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 294, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":298
 *         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(34, 298, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":294
 *         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":300
 *         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\nCreate a new attribute key for windows.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_43Create_keyval = {"Create_keyval", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_copy_fn,&__pyx_mstate_global->__pyx_n_u_delete_fn,&__pyx_mstate_global->__pyx_n_u_nopython,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 300, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(34, 300, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 300, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 300, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create_keyval", 0) < (0)) __PYX_ERR(34, 300, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Win.pyx":303
 *     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,
*/
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "src/mpi4py/MPI.src/Win.pyx":304
 *         cls,
 *         copy_fn: Callable[[Win, int, Any], Any] | None = None,
 *         delete_fn: Callable[[Win, int, Any], None] | None = None,             # <<<<<<<<<<<<<<
 *         nopython: bool = False,
 *     ) -> int:
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "src/mpi4py/MPI.src/Win.pyx":305
 *         copy_fn: Callable[[Win, int, Any], Any] | None = None,
 *         delete_fn: Callable[[Win, int, Any], None] | None = None,
 *         nopython: bool = False,             # <<<<<<<<<<<<<<
 *     ) -> int:
 *         """
*/
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_False));
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(34, 300, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 300, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 300, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }

      /* "src/mpi4py/MPI.src/Win.pyx":303
 *     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,
*/
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "src/mpi4py/MPI.src/Win.pyx":304
 *         cls,
 *         copy_fn: Callable[[Win, int, Any], Any] | None = None,
 *         delete_fn: Callable[[Win, int, Any], None] | None = None,             # <<<<<<<<<<<<<<
 *         nopython: bool = False,
 *     ) -> int:
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "src/mpi4py/MPI.src/Win.pyx":305
 *         copy_fn: Callable[[Win, int, Any], Any] | None = None,
 *         delete_fn: Callable[[Win, int, Any], None] | None = None,
 *         nopython: bool = False,             # <<<<<<<<<<<<<<
 *     ) -> int:
 *         """
*/
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_False));
    }
    __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(34, 300, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":300
 *         PyMPI_attr_del(self.ob_mpi, keyval)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_keyval(
 *         cls,
*/

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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;
  size_t __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_keyval", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":310
 *         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":311
 *         """
 *         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":312
 *         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":313
 *         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_2 = NULL;
  __pyx_t_3 = 1;
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_2, __pyx_v_copy_fn, __pyx_v_delete_fn, __pyx_v_nopython};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_keyval, __pyx_callargs+__pyx_t_3, (4-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 313, __pyx_L1_error)
    __Pyx_GOTREF((PyObject *)__pyx_t_1);
  }
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":314
 *         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_4 = __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_4 == ((int)-1))) __PYX_ERR(34, 314, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":315
 *         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_4 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_set(MPI_WIN_NULL, __pyx_v_keyval, __pyx_v_state); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(34, 315, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":316
 *         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_1 = __Pyx_PyLong_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 316, __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":300
 *         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":318
 *         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\nFree an attribute key for windows.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_45Free_keyval = {"Free_keyval", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_keyval,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 318, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 318, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Free_keyval", 0) < (0)) __PYX_ERR(34, 318, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Free_keyval", 1, 1, 1, i); __PYX_ERR(34, 318, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 318, __pyx_L3_error)
    }
    __pyx_v_keyval = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 319, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Free_keyval", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 318, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":323
 *         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":324
 *         """
 *         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(34, 324, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":325
 *         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(34, 325, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":326
 *         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_PyLong_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 326, __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":318
 *         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":330
 *     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__", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":331
 *         "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":332
 *         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":333
 *             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":334
 *             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(34, 334, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":335
 *             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(34, 335, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":336
 *             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(34, 336, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":337
 *             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_PyLong_From_MPI_Aint(((MPI_Aint)__pyx_v_base)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyLong_From_MPI_Aint(__pyx_v_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_disp_unit); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 337, __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) != (0)) __PYX_ERR(34, 337, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3) != (0)) __PYX_ERR(34, 337, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4) != (0)) __PYX_ERR(34, 337, __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":330
 *     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":341
 *     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__", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":342
 *         """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":343
 *         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":344
 *             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":345
 *             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":346
 *             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(34, 346, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/Win.pyx":348
 *                 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":349
 *                                          <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":348
 *                 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":345
 *             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":350
 *                 if flag and attrval != NULL:
 *                     flavor = attrval[0]
 *             return flavor             # <<<<<<<<<<<<<<
 * 
 *     property model:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_flavor); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 350, __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":341
 *     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":354
 *     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__", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":355
 *         """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":356
 *         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":357
 *             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":358
 *             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":359
 *             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(34, 359, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/Win.pyx":361
 *                 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":362
 *                                          <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":361
 *                 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":358
 *             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":363
 *                 if flag and attrval != NULL:
 *                     model = attrval[0]
 *             return model             # <<<<<<<<<<<<<<
 * 
 *     def tomemory(self) -> buffer:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_model); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 363, __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":354
 *     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":365
 *             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\nReturn window memory buffer.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_47tomemory = {"tomemory", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("tomemory", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":369
 *         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(34, 369, __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":365
 *             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":373
 *     # 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":374
 * 
 *     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":375
 *     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":376
 *         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(34, 376, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":377
 *         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(34, 377, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":378
 *         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(34, 378, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":373
 *     # 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":383
 *     # ------------------------
 * 
 *     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\nPut data into a memory window on a remote process.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_51Put = {"Put", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_origin,&__pyx_mstate_global->__pyx_n_u_target_rank,&__pyx_mstate_global->__pyx_n_u_target,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 383, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(34, 383, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 383, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 383, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Put", 0) < (0)) __PYX_ERR(34, 383, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Win.pyx":387
 *         origin: BufSpec,
 *         int target_rank: int,
 *         target: TargetSpec | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Put", 0, 2, 3, i); __PYX_ERR(34, 383, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(34, 383, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 383, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 383, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __pyx_v_origin = values[0];
    __pyx_v_target_rank = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_target_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 386, __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(34, 383, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":383
 *     # ------------------------
 * 
 *     def Put(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
*/

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":392
 *         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(34, 392, __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":393
 *         """
 *         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(34, 393, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":394
 *         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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Win.pyx":398
 *             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(34, 394, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Win.pyx":394
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":383
 *     # ------------------------
 * 
 *     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":400
 *             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\nGet data from a memory window on a remote process.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_53Get = {"Get", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_origin,&__pyx_mstate_global->__pyx_n_u_target_rank,&__pyx_mstate_global->__pyx_n_u_target,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 400, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(34, 400, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 400, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 400, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Get", 0) < (0)) __PYX_ERR(34, 400, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Win.pyx":404
 *         origin: BufSpec,
 *         int target_rank: int,
 *         target: TargetSpec | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Get", 0, 2, 3, i); __PYX_ERR(34, 400, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(34, 400, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 400, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 400, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __pyx_v_origin = values[0];
    __pyx_v_target_rank = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_target_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 403, __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(34, 400, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":400
 *             self.ob_mpi) )
 * 
 *     def Get(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
*/

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":409
 *         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(34, 409, __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":410
 *         """
 *         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(34, 410, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":411
 *         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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Win.pyx":415
 *             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(34, 411, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Win.pyx":411
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":400
 *             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":417
 *             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\nAccumulate data into the target process.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_55Accumulate = {"Accumulate", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_origin,&__pyx_mstate_global->__pyx_n_u_target_rank,&__pyx_mstate_global->__pyx_n_u_target,&__pyx_mstate_global->__pyx_n_u_op,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 417, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(34, 417, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(34, 417, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 417, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 417, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Accumulate", 0) < (0)) __PYX_ERR(34, 417, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Win.pyx":421
 *         origin: BufSpec,
 *         int target_rank: int,
 *         target: TargetSpec | None = None,             # <<<<<<<<<<<<<<
 *         Op op: Op = SUM,
 *     ) -> None:
*/
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__122);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Accumulate", 0, 2, 4, i); __PYX_ERR(34, 417, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(34, 417, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(34, 417, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 417, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 417, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__122);
    }
    __pyx_v_origin = values[0];
    __pyx_v_target_rank = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_target_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 420, __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(34, 417, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(34, 422, __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":417
 *             self.ob_mpi) )
 * 
 *     def Accumulate(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":427
 *         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(34, 427, __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":428
 *         """
 *         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(34, 428, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":429
 *         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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Win.pyx":433
 *             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(34, 429, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Win.pyx":429
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":417
 *             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":435
 *             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\nFetch-and-accumulate data into the target process.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_57Get_accumulate = {"Get_accumulate", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_origin,&__pyx_mstate_global->__pyx_n_u_result,&__pyx_mstate_global->__pyx_n_u_target_rank,&__pyx_mstate_global->__pyx_n_u_target,&__pyx_mstate_global->__pyx_n_u_op,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 435, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(34, 435, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(34, 435, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(34, 435, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 435, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 435, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Get_accumulate", 0) < (0)) __PYX_ERR(34, 435, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Win.pyx":440
 *         result: BufSpec,
 *         int target_rank: int,
 *         target: TargetSpec | None = None,             # <<<<<<<<<<<<<<
 *         Op op: Op = SUM,
 *     ) -> None:
*/
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[4]) values[4] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__123);
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Get_accumulate", 0, 3, 5, i); __PYX_ERR(34, 435, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(34, 435, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(34, 435, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(34, 435, __pyx_L3_error)
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 435, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 435, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[4]) values[4] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__123);
    }
    __pyx_v_origin = values[0];
    __pyx_v_result = values[1];
    __pyx_v_target_rank = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_target_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 439, __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(34, 435, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(34, 441, __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":435
 *             op.ob_mpi, self.ob_mpi) )
 * 
 *     def Get_accumulate(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":446
 *         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(34, 446, __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":447
 *         """
 *         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(34, 447, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":448
 *         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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Win.pyx":453
 *             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(34, 448, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Win.pyx":448
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":435
 *             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":455
 *             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\nPerform one-sided read-modify-write.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_59Fetch_and_op = {"Fetch_and_op", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_origin,&__pyx_mstate_global->__pyx_n_u_result,&__pyx_mstate_global->__pyx_n_u_target_rank,&__pyx_mstate_global->__pyx_n_u_target_disp,&__pyx_mstate_global->__pyx_n_u_op,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 455, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(34, 455, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(34, 455, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(34, 455, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 455, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 455, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Fetch_and_op", 0) < (0)) __PYX_ERR(34, 455, __pyx_L3_error)
      if (!values[4]) values[4] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__124);
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Fetch_and_op", 0, 3, 5, i); __PYX_ERR(34, 455, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(34, 455, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(34, 455, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(34, 455, __pyx_L3_error)
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 455, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 455, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[4]) values[4] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__124);
    }
    __pyx_v_origin = values[0];
    __pyx_v_result = values[1];
    __pyx_v_target_rank = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_target_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 459, __pyx_L3_error)
    if (values[3]) {
      __pyx_v_target_disp = __Pyx_PyLong_As_MPI_Aint(values[3]); if (unlikely((__pyx_v_target_disp == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(34, 460, __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(34, 455, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(34, 461, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":466
 *         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(34, 466, __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":467
 *         """
 *         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(34, 467, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":468
 *         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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Win.pyx":471
 *                 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(34, 468, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Win.pyx":468
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":455
 *             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":473
 *                 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\nPerform one-sided atomic compare-and-swap.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_61Compare_and_swap = {"Compare_and_swap", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_origin,&__pyx_mstate_global->__pyx_n_u_compare,&__pyx_mstate_global->__pyx_n_u_result,&__pyx_mstate_global->__pyx_n_u_target_rank,&__pyx_mstate_global->__pyx_n_u_target_disp,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 473, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(34, 473, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(34, 473, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(34, 473, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 473, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 473, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Compare_and_swap", 0) < (0)) __PYX_ERR(34, 473, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 4; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Compare_and_swap", 0, 4, 5, i); __PYX_ERR(34, 473, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(34, 473, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(34, 473, __pyx_L3_error)
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(34, 473, __pyx_L3_error)
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 473, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 473, __pyx_L3_error)
        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_PyLong_As_int(values[3]); if (unlikely((__pyx_v_target_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 478, __pyx_L3_error)
    if (values[4]) {
      __pyx_v_target_disp = __Pyx_PyLong_As_MPI_Aint(values[4]); if (unlikely((__pyx_v_target_disp == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(34, 479, __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(34, 473, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":484
 *         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(34, 484, __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":485
 *         """
 *         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(34, 485, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":486
 *         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) )
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Win.pyx":488
 *         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(34, 486, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Win.pyx":486
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":473
 *                 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":493
 *     # ------------------------------------------
 * 
 *     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\nPut data into a memory window on a remote process.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_63Rput = {"Rput", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_origin,&__pyx_mstate_global->__pyx_n_u_target_rank,&__pyx_mstate_global->__pyx_n_u_target,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 493, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(34, 493, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 493, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 493, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Rput", 0) < (0)) __PYX_ERR(34, 493, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Win.pyx":497
 *         origin: BufSpec,
 *         int target_rank: int,
 *         target: TargetSpec | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
*/
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Rput", 0, 2, 3, i); __PYX_ERR(34, 493, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(34, 493, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 493, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 493, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __pyx_v_origin = values[0];
    __pyx_v_target_rank = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_target_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 496, __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(34, 493, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":493
 *     # ------------------------------------------
 * 
 *     def Rput(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
*/

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":502
 *         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(34, 502, __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":503
 *         """
 *         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(34, 503, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":504
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 504, __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":505
 *         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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Win.pyx":509
 *             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(34, 505, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Win.pyx":505
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":510
 *             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":511
 *             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":493
 *     # ------------------------------------------
 * 
 *     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":513
 *         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\nGet data from a memory window on a remote process.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_65Rget = {"Rget", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_origin,&__pyx_mstate_global->__pyx_n_u_target_rank,&__pyx_mstate_global->__pyx_n_u_target,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 513, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(34, 513, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 513, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 513, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Rget", 0) < (0)) __PYX_ERR(34, 513, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Win.pyx":517
 *         origin: BufSpec,
 *         int target_rank: int,
 *         target: TargetSpec | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
*/
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Rget", 0, 2, 3, i); __PYX_ERR(34, 513, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(34, 513, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 513, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 513, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __pyx_v_origin = values[0];
    __pyx_v_target_rank = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_target_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 516, __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(34, 513, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":513
 *         return request
 * 
 *     def Rget(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
*/

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":522
 *         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(34, 522, __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":523
 *         """
 *         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(34, 523, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":524
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 524, __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":525
 *         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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Win.pyx":529
 *             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(34, 525, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Win.pyx":525
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":530
 *             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":531
 *             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":513
 *         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":533
 *         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\nFetch-and-accumulate data into the target process.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_67Raccumulate = {"Raccumulate", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_origin,&__pyx_mstate_global->__pyx_n_u_target_rank,&__pyx_mstate_global->__pyx_n_u_target,&__pyx_mstate_global->__pyx_n_u_op,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 533, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(34, 533, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(34, 533, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 533, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 533, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Raccumulate", 0) < (0)) __PYX_ERR(34, 533, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Win.pyx":537
 *         origin: BufSpec,
 *         int target_rank: int,
 *         target: TargetSpec | None = None,             # <<<<<<<<<<<<<<
 *         Op op: Op = SUM,
 *     ) -> Request:
*/
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__125);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Raccumulate", 0, 2, 4, i); __PYX_ERR(34, 533, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(34, 533, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(34, 533, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 533, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 533, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__125);
    }
    __pyx_v_origin = values[0];
    __pyx_v_target_rank = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_target_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 536, __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(34, 533, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(34, 538, __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":533
 *         return request
 * 
 *     def Raccumulate(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":543
 *         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(34, 543, __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":544
 *         """
 *         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(34, 544, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":545
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 545, __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":546
 *         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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Win.pyx":550
 *             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(34, 546, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Win.pyx":546
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":551
 *             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":552
 *             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":533
 *         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":554
 *         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\nAccumulate data into the target process using remote memory access.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_69Rget_accumulate = {"Rget_accumulate", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_origin,&__pyx_mstate_global->__pyx_n_u_result,&__pyx_mstate_global->__pyx_n_u_target_rank,&__pyx_mstate_global->__pyx_n_u_target,&__pyx_mstate_global->__pyx_n_u_op,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 554, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(34, 554, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(34, 554, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(34, 554, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 554, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 554, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Rget_accumulate", 0) < (0)) __PYX_ERR(34, 554, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Win.pyx":559
 *         result: BufSpec,
 *         int target_rank: int,
 *         target: TargetSpec | None = None,             # <<<<<<<<<<<<<<
 *         Op op: Op = SUM,
 *     ) -> Request:
*/
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[4]) values[4] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__126);
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Rget_accumulate", 0, 3, 5, i); __PYX_ERR(34, 554, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(34, 554, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(34, 554, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(34, 554, __pyx_L3_error)
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 554, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 554, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[4]) values[4] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__126);
    }
    __pyx_v_origin = values[0];
    __pyx_v_result = values[1];
    __pyx_v_target_rank = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_target_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 558, __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(34, 554, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(34, 560, __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":554
 *         return request
 * 
 *     def Rget_accumulate(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":565
 *         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(34, 565, __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":566
 *         """
 *         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(34, 566, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":567
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 567, __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":568
 *         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,
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Win.pyx":573
 *             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(34, 568, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Win.pyx":568
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":574
 *             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":575
 *             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":554
 *         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":583
 *     # -----
 * 
 *     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\nPerform an MPI fence synchronization on a window.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_71Fence = {"Fence", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_assertion,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 583, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 583, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Fence", 0) < (0)) __PYX_ERR(34, 583, __pyx_L3_error)
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 583, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_assertion = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_assertion == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 583, __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(34, 583, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":587
 *         Perform an MPI fence synchronization on a window.
 *         """
 *         with nogil: CHKERR( MPI_Win_fence(assertion, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # General Active Target Synchronization
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(34, 587, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":583
 *     # -----
 * 
 *     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":592
 *     # -------------------------------------
 * 
 *     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\nStart an RMA access epoch for MPI.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_73Start = {"Start", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_group,&__pyx_mstate_global->__pyx_n_u_assertion,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 592, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 592, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 592, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Start", 0) < (0)) __PYX_ERR(34, 592, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Start", 0, 1, 2, i); __PYX_ERR(34, 592, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 592, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 592, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_group = ((struct PyMPIGroupObject *)values[0]);
    if (values[1]) {
      __pyx_v_assertion = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_assertion == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 592, __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(34, 592, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, 0, "group", 0))) __PYX_ERR(34, 592, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":596
 *         Start an RMA access epoch for MPI.
 *         """
 *         with nogil: CHKERR( MPI_Win_start(             # <<<<<<<<<<<<<<
 *             group.ob_mpi, assertion, self.ob_mpi) )
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Win.pyx":597
 *         """
 *         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(34, 596, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Win.pyx":596
 *         Start an RMA access epoch for MPI.
 *         """
 *         with nogil: CHKERR( MPI_Win_start(             # <<<<<<<<<<<<<<
 *             group.ob_mpi, assertion, self.ob_mpi) )
 * 
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":592
 *     # -------------------------------------
 * 
 *     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":599
 *             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\nComplete an RMA operation begun after an `Start`.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_75Complete = {"Complete", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Complete", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":603
 *         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:
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(34, 603, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":599
 *             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":605
 *         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\nStart an RMA exposure epoch.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_77Post = {"Post", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_group,&__pyx_mstate_global->__pyx_n_u_assertion,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 605, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 605, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 605, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Post", 0) < (0)) __PYX_ERR(34, 605, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Post", 0, 1, 2, i); __PYX_ERR(34, 605, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 605, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 605, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_group = ((struct PyMPIGroupObject *)values[0]);
    if (values[1]) {
      __pyx_v_assertion = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_assertion == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 605, __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(34, 605, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, 0, "group", 0))) __PYX_ERR(34, 605, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":609
 *         Start an RMA exposure epoch.
 *         """
 *         with nogil: CHKERR( MPI_Win_post(             # <<<<<<<<<<<<<<
 *             group.ob_mpi, assertion, self.ob_mpi) )
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Win.pyx":610
 *         """
 *         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(34, 609, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Win.pyx":609
 *         Start an RMA exposure epoch.
 *         """
 *         with nogil: CHKERR( MPI_Win_post(             # <<<<<<<<<<<<<<
 *             group.ob_mpi, assertion, self.ob_mpi) )
 * 
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":605
 *         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":612
 *             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\nComplete an RMA exposure epoch begun with `Post`.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_79Wait = {"Wait", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Wait", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":616
 *         Complete an RMA exposure epoch begun with `Post`.
 *         """
 *         with nogil: CHKERR( MPI_Win_wait(self.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return True
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(34, 616, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":617
 *         """
 *         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":612
 *             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":619
 *         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\nTest whether an RMA exposure epoch has completed.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_81Test = {"Test", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Test", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":623
 *         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":624
 *         """
 *         cdef int flag = 0
 *         with nogil: CHKERR( MPI_Win_test(self.ob_mpi, &flag) )             # <<<<<<<<<<<<<<
 *         return <bint>flag
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(34, 624, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":625
 *         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(34, 625, __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":619
 *         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":630
 *     # ----
 * 
 *     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\nBegin an RMA access epoch at the target process.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_83Lock = {"Lock", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_rank,&__pyx_mstate_global->__pyx_n_u_lock_type,&__pyx_mstate_global->__pyx_n_u_assertion,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 630, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(34, 630, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 630, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 630, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Lock", 0) < (0)) __PYX_ERR(34, 630, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Lock", 0, 1, 3, i); __PYX_ERR(34, 630, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(34, 630, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(34, 630, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 630, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_rank = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 632, __pyx_L3_error)
    if (values[1]) {
      __pyx_v_lock_type = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_lock_type == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 633, __pyx_L3_error)
    } else {
      __pyx_v_lock_type = __pyx_mstate_global->__pyx_k__127;
    }
    if (values[2]) {
      __pyx_v_assertion = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_assertion == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 634, __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(34, 630, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":639
 *         Begin an RMA access epoch at the target process.
 *         """
 *         with nogil: CHKERR( MPI_Win_lock(             # <<<<<<<<<<<<<<
 *             lock_type, rank, assertion, self.ob_mpi) )
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Win.pyx":640
 *         """
 *         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(34, 639, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Win.pyx":639
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":630
 *     # ----
 * 
 *     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":642
 *             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\nComplete an RMA access epoch at the target process.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_85Unlock = {"Unlock", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_rank,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 642, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 642, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Unlock", 0) < (0)) __PYX_ERR(34, 642, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Unlock", 1, 1, 1, i); __PYX_ERR(34, 642, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 642, __pyx_L3_error)
    }
    __pyx_v_rank = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 642, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Unlock", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 642, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":646
 *         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:
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(34, 646, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":642
 *             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":648
 *         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\nBegin an RMA access epoch at all processes.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_87Lock_all = {"Lock_all", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_assertion,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 648, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 648, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Lock_all", 0) < (0)) __PYX_ERR(34, 648, __pyx_L3_error)
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 648, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_assertion = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_assertion == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 648, __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(34, 648, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":652
 *         Begin an RMA access epoch at all processes.
 *         """
 *         with nogil: CHKERR( MPI_Win_lock_all(assertion, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Unlock_all(self) -> None:
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(34, 652, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":648
 *         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":654
 *         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\nComplete an RMA access epoch at all processes.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_89Unlock_all = {"Unlock_all", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Unlock_all", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":658
 *         Complete an RMA access epoch at all processes.
 *         """
 *         with nogil: CHKERR( MPI_Win_unlock_all(self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Flush and Sync
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(34, 658, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":654
 *         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":663
 *     # --------------
 * 
 *     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\nComplete all outstanding RMA operations at a target.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_91Flush = {"Flush", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_rank,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 663, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 663, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Flush", 0) < (0)) __PYX_ERR(34, 663, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Flush", 1, 1, 1, i); __PYX_ERR(34, 663, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 663, __pyx_L3_error)
    }
    __pyx_v_rank = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 663, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Flush", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 663, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":667
 *         Complete all outstanding RMA operations at a target.
 *         """
 *         with nogil: CHKERR( MPI_Win_flush(rank, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Flush_all(self) -> None:
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(34, 667, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":663
 *     # --------------
 * 
 *     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":669
 *         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\nComplete all outstanding RMA operations at all targets.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_93Flush_all = {"Flush_all", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Flush_all", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":673
 *         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:
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(34, 673, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":669
 *         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":675
 *         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\nComplete locally all outstanding RMA operations at a target.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_95Flush_local = {"Flush_local", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_rank,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 675, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 675, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Flush_local", 0) < (0)) __PYX_ERR(34, 675, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Flush_local", 1, 1, 1, i); __PYX_ERR(34, 675, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 675, __pyx_L3_error)
    }
    __pyx_v_rank = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 675, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Flush_local", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 675, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":679
 *         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:
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(34, 679, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":675
 *         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":681
 *         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\nComplete locally all outstanding RMA operations at all targets.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_97Flush_local_all = {"Flush_local_all", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Flush_local_all", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":685
 *         Complete locally all outstanding RMA operations at all targets.
 *         """
 *         with nogil: CHKERR( MPI_Win_flush_local_all(self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Sync(self) -> None:
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(34, 685, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":681
 *         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":687
 *         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\nSynchronize public and private copies of the window.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_99Sync = {"Sync", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Sync", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":691
 *         Synchronize public and private copies of the window.
 *         """
 *         with nogil: CHKERR( MPI_Win_sync(self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Error Handling
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(34, 691, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":687
 *         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":696
 *     # --------------
 * 
 *     @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\nCreate a new error handler for windows.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_101Create_errhandler = {"Create_errhandler", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_errhandler_fn,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 696, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 696, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create_errhandler", 0) < (0)) __PYX_ERR(34, 696, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Create_errhandler", 1, 1, 1, i); __PYX_ERR(34, 696, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 696, __pyx_L3_error)
    }
    __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(34, 696, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":704
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 704, __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":705
 *         """
 *         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":706
 *         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(34, 706, __pyx_L1_error)
  __pyx_v_index = __pyx_t_3;

  /* "src/mpi4py/MPI.src/Win.pyx":707
 *         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":708
 *         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(34, 708, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Win.pyx":707
 *         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":709
 *         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(34, 709, __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":710
 *             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(34, 710, __pyx_L5_except_error)

      /* "src/mpi4py/MPI.src/Win.pyx":711
 *         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(34, 711, __pyx_L5_except_error)
    }

    /* "src/mpi4py/MPI.src/Win.pyx":707
 *         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":712
 *             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":696
 *     # --------------
 * 
 *     @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":714
 *         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\nGet the error handler for a window.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_103Get_errhandler = {"Get_errhandler", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_errhandler", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":718
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 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_errhandler = ((struct PyMPIErrhandlerObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":719
 *         """
 *         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(34, 719, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":720
 *         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":714
 *         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":722
 *         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\nSet the error handler for a window.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_105Set_errhandler = {"Set_errhandler", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_errhandler,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 722, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 722, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Set_errhandler", 0) < (0)) __PYX_ERR(34, 722, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Set_errhandler", 1, 1, 1, i); __PYX_ERR(34, 722, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 722, __pyx_L3_error)
    }
    __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(34, 722, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler, 0, "errhandler", 0))) __PYX_ERR(34, 722, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":726
 *         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(34, 726, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":722
 *         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":728
 *         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\nCall the error handler installed on a window.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_107Call_errhandler = {"Call_errhandler", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_errorcode,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 728, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 728, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Call_errhandler", 0) < (0)) __PYX_ERR(34, 728, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Call_errhandler", 1, 1, 1, i); __PYX_ERR(34, 728, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 728, __pyx_L3_error)
    }
    __pyx_v_errorcode = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 728, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Call_errhandler", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 728, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":732
 *         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(34, 732, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":728
 *         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":737
 *     # --------------
 * 
 *     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\nGet the print name for this window.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_109Get_name = {"Get_name", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_name", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":742
 *         """
 *         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":743
 *         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(34, 743, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":744
 *         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(34, 744, __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":737
 *     # --------------
 * 
 *     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":746
 *         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\nSet the print name for this window.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_111Set_name = {"Set_name", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_name_2,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 746, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 746, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Set_name", 0) < (0)) __PYX_ERR(34, 746, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Set_name", 1, 1, 1, i); __PYX_ERR(34, 746, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 746, __pyx_L3_error)
    }
    __pyx_v_name = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_name", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 746, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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":750
 *         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":751
 *         """
 *         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(34, 751, __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":752
 *         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(34, 752, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":746
 *         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":756
 *     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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":757
 *         """Print name."""
 *         def __get__(self) -> str:
 *             return self.Get_name()             # <<<<<<<<<<<<<<
 * 
 *         def __set__(self, value: str):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_name, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 757, __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":756
 *     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_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":759
 *             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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":760
 * 
 *         def __set__(self, value: str):
 *             self.Set_name(value)             # <<<<<<<<<<<<<<
 * 
 *     # Integer Handle
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_value};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Set_name, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 760, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":759
 *             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_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":765
 *     # --------------
 * 
 *     def toint(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate object to integer handle.
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_113toint(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_112toint, "toint(self) -> int\n\nTranslate object to integer handle.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_113toint = {"toint", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_113toint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_112toint};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_113toint(PyObject *__pyx_v_self, 
#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("toint (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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("toint", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("toint", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_112toint(((struct PyMPIWinObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_112toint(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("toint", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":769
 *         Translate object to integer handle.
 *         """
 *         return MPI_Win_toint(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_int(MPI_Win_toint(__pyx_v_self->ob_mpi)); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 769, __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":765
 *     # --------------
 * 
 *     def toint(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate object to integer handle.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Win.toint", __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":771
 *         return MPI_Win_toint(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromint(cls, arg: int, /) -> Win:
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_115fromint(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_114fromint, "fromint(cls, arg: int, /) -> Win\n\nTranslate integer handle to object.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_115fromint = {"fromint", (PyCFunction)__pyx_pw_6mpi4py_3MPI_3Win_115fromint, METH_O, __pyx_doc_6mpi4py_3MPI_3Win_114fromint};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_115fromint(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fromint (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_114fromint(((PyTypeObject*)__pyx_v_cls), ((PyObject *)__pyx_v_arg));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_114fromint(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, 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("fromint", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":776
 *         Translate integer handle to object.
 *         """
 *         return fromhandle(MPI_Win_fromint(arg))             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_As_int(__pyx_v_arg); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 776, __pyx_L1_error)
  __pyx_t_2 = __pyx_fuse_9__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Win_fromint(__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 776, __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":771
 *         return MPI_Win_toint(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromint(cls, arg: int, /) -> Win:
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Win.fromint", __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":781
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_117py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_116py2f, "py2f(self) -> int\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_117py2f = {"py2f", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_117py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_116py2f};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_117py2f(PyObject *__pyx_v_self, 
#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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("py2f", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_116py2f(((struct PyMPIWinObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_116py2f(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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":784
 *         """
 *         """
 *         return MPI_Win_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_MPI_Fint(MPI_Win_c2f(__pyx_v_self->ob_mpi)); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 784, __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":781
 *     # --------------
 * 
 *     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":786
 *         return MPI_Win_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Win:
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_119f2py(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_118f2py, "f2py(cls, arg: int) -> Win\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_119f2py = {"f2py", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_119f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_118f2py};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_119f2py(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_arg,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(34, 786, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 786, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "f2py", 0) < (0)) __PYX_ERR(34, 786, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, i); __PYX_ERR(34, 786, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(34, 786, __pyx_L3_error)
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 786, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_118f2py(((PyTypeObject*)__pyx_v_cls), __pyx_v_arg);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_118f2py(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", 0);

  /* "src/mpi4py/MPI.src/Win.pyx":790
 *         """
 *         """
 *         return fromhandle(MPI_Win_f2c(arg))             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_As_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_1 == ((MPI_Fint)-1)) && PyErr_Occurred())) __PYX_ERR(34, 790, __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(34, 790, __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":786
 *         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_SIZE
  __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 ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_file,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 56, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 56, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < (0)) __PYX_ERR(35, 56, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIFileObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 56, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct PyMPIFileObject *)Py_None));
    }
    __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(35, 56, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, 1, "file", 0))) __PYX_ERR(35, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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(35, 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(35, 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__", 0);

  /* "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_mstate_global->__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(35, 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(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce__", __pyx_kwds); 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__", 0);

  /* "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(35, 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__", 0);

  /* "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_PyLong_FromSize_t(__pyx_fuse_10__pyx_f_6mpi4py_3MPI_tohandle(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(35, 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\nCreate object from MPI handle.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_11fromhandle = {"fromhandle", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_handle,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 77, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 77, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "fromhandle", 0) < (0)) __PYX_ERR(35, 77, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("fromhandle", 1, 1, 1, i); __PYX_ERR(35, 77, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 77, __pyx_L3_error)
    }
    __pyx_v_handle = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fromhandle", 1, 1, 1, __pyx_nargs); __PYX_ERR(35, 77, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "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_PyLong_As_size_t(__pyx_v_handle); if (unlikely((__pyx_t_1 == ((Py_uintptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(35, 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(35, 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\nCall `Close` if not null.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_13free = {"free", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("free", __pyx_kwds); 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", 0);

  /* "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(35, 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\nOpen a file.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_15Open = {"Open", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_comm,&__pyx_mstate_global->__pyx_n_u_filename,&__pyx_mstate_global->__pyx_n_u_amode,&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 93, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(35, 93, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(35, 93, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 93, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 93, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Open", 0) < (0)) __PYX_ERR(35, 93, __pyx_L3_error)
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__128);
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Open", 0, 2, 4, i); __PYX_ERR(35, 93, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(35, 93, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(35, 93, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 93, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 93, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__128);
    }
    __pyx_v_comm = ((struct PyMPIIntracommObject *)values[0]);
    __pyx_v_filename = values[1];
    if (values[2]) {
      __pyx_v_amode = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_amode == (int)-1) && PyErr_Occurred())) __PYX_ERR(35, 98, __pyx_L3_error)
    } else {
      __pyx_v_amode = __pyx_mstate_global->__pyx_k__129;
    }
    __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(35, 93, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm, 0, "comm", 0))) __PYX_ERR(35, 96, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(35, 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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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(35, 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(35, 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) )
 *         options_set_errhandler(file.ob_mpi)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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) )             # <<<<<<<<<<<<<<
 *         options_set_errhandler(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(35, 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) )
 *         options_set_errhandler(file.ob_mpi)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          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) )
 *         options_set_errhandler(file.ob_mpi)             # <<<<<<<<<<<<<<
 *         return file
 * 
*/
  __pyx_t_3 = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_options_set_errhandler(__pyx_v_file->ob_mpi); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(35, 109, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":110
 *             comm.ob_mpi, cfilename, amode, info.ob_mpi, &file.ob_mpi) )
 *         options_set_errhandler(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\nClose a file.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_17Close = {"Close", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Close", __pyx_kwds); 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) {
  MPI_File __pyx_v_save;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_File __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("Close", 0);

  /* "src/mpi4py/MPI.src/File.pyx":116
 *         Close a file.
 *         """
 *         cdef MPI_File save = self.ob_mpi             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_close(&self.ob_mpi) )
 *         if constobj(self): self.ob_mpi = save
*/
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_save = __pyx_t_1;

  /* "src/mpi4py/MPI.src/File.pyx":117
 *         """
 *         cdef MPI_File save = self.ob_mpi
 *         with nogil: CHKERR( MPI_File_close(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 *         if constobj(self): self.ob_mpi = save
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_close((&__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(35, 117, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":118
 *         cdef MPI_File save = self.ob_mpi
 *         with nogil: CHKERR( MPI_File_close(&self.ob_mpi) )
 *         if constobj(self): self.ob_mpi = save             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
*/
  __pyx_t_3 = (__pyx_fuse_10__pyx_f_6mpi4py_3MPI_constobj(__pyx_v_self) != 0);
  if (__pyx_t_3) {
    __pyx_v_self->ob_mpi = __pyx_v_save;
  }

  /* "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":120
 *         if constobj(self): self.ob_mpi = save
 * 
 *     @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\nDelete a file.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_19Delete = {"Delete", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_filename,&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 120, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 120, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 120, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Delete", 0) < (0)) __PYX_ERR(35, 120, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__130);
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Delete", 0, 1, 2, i); __PYX_ERR(35, 120, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 120, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 120, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__130);
    }
    __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(35, 120, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(35, 124, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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":129
 *         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":130
 *         """
 *         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(35, 130, __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":131
 *         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:
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(35, 131, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":120
 *         if constobj(self): self.ob_mpi = save
 * 
 *     @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":133
 *         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\nSet the file size.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_21Set_size = {"Set_size", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_size_2,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 133, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 133, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Set_size", 0) < (0)) __PYX_ERR(35, 133, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Set_size", 1, 1, 1, i); __PYX_ERR(35, 133, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 133, __pyx_L3_error)
    }
    __pyx_v_size = __Pyx_PyLong_As_MPI_Offset(values[0]); if (unlikely((__pyx_v_size == ((MPI_Offset)-1)) && PyErr_Occurred())) __PYX_ERR(35, 133, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_size", 1, 1, 1, __pyx_nargs); __PYX_ERR(35, 133, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":137
 *         Set the file size.
 *         """
 *         with nogil: CHKERR( MPI_File_set_size(self.ob_mpi, size) )             # <<<<<<<<<<<<<<
 * 
 *     def Preallocate(self, Offset size: int) -> None:
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(35, 137, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":133
 *         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":139
 *         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\nPreallocate storage space for a file.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_23Preallocate = {"Preallocate", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_size_2,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 139, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 139, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Preallocate", 0) < (0)) __PYX_ERR(35, 139, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Preallocate", 1, 1, 1, i); __PYX_ERR(35, 139, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 139, __pyx_L3_error)
    }
    __pyx_v_size = __Pyx_PyLong_As_MPI_Offset(values[0]); if (unlikely((__pyx_v_size == ((MPI_Offset)-1)) && PyErr_Occurred())) __PYX_ERR(35, 139, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Preallocate", 1, 1, 1, __pyx_nargs); __PYX_ERR(35, 139, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":143
 *         Preallocate storage space for a file.
 *         """
 *         with nogil: CHKERR( MPI_File_preallocate(self.ob_mpi, size) )             # <<<<<<<<<<<<<<
 * 
 *     def Get_size(self) -> int:
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(35, 143, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":139
 *         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":145
 *         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\nReturn the file size.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_25Get_size = {"Get_size", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_size", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":149
 *         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":150
 *         """
 *         cdef MPI_Offset size = 0
 *         with nogil: CHKERR( MPI_File_get_size(self.ob_mpi, &size) )             # <<<<<<<<<<<<<<
 *         return size
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(35, 150, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":151
 *         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_PyLong_From_MPI_Offset(__pyx_v_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(35, 151, __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":145
 *         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":155
 *     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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/mpi4py/MPI.src/File.pyx":156
 *         """Size (in bytes)."""
 *         def __get__(self) -> int:
 *             return self.Get_size()             # <<<<<<<<<<<<<<
 * 
 *     def Get_amode(self) -> int:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_size, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(35, 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/File.pyx":155
 *     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_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":158
 *             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\nReturn the file access mode.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_27Get_amode = {"Get_amode", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_amode", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":162
 *         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":163
 *         """
 *         cdef int amode = 0
 *         with nogil: CHKERR( MPI_File_get_amode(self.ob_mpi, &amode) )             # <<<<<<<<<<<<<<
 *         return amode
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(35, 163, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":164
 *         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_PyLong_From_int(__pyx_v_amode); if (unlikely(!__pyx_t_2)) __PYX_ERR(35, 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/File.pyx":158
 *             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":168
 *     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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/mpi4py/MPI.src/File.pyx":169
 *         """Access mode."""
 *         def __get__(self) -> int:
 *             return self.Get_amode()             # <<<<<<<<<<<<<<
 * 
 *     # File Group
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_amode, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(35, 169, __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":168
 *     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_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":174
 *     # ----------
 * 
 *     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\nAccess the group of processes that opened the file.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_29Get_group = {"Get_group", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_group", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":178
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group); if (unlikely(!__pyx_t_1)) __PYX_ERR(35, 178, __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":179
 *         """
 *         cdef Group group = <Group>New(Group)
 *         with nogil: CHKERR( MPI_File_get_group(self.ob_mpi, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(35, 179, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":180
 *         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":174
 *     # ----------
 * 
 *     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":184
 *     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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/mpi4py/MPI.src/File.pyx":185
 *         """Group."""
 *         def __get__(self) -> Group:
 *             return self.Get_group()             # <<<<<<<<<<<<<<
 * 
 *     property group_size:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_group, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(35, 185, __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":184
 *     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_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":189
 *     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__", 0);

  /* "src/mpi4py/MPI.src/File.pyx":190
 *         """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":191
 *         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":192
 *             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(35, 192, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":193
 *             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":194
 *             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(35, 194, __pyx_L4_error)
  }

  /* "src/mpi4py/MPI.src/File.pyx":196
 *                 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(35, 196, __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;
       __Pyx_ExceptionSwap(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
      if ( 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(35, 196, __pyx_L7_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);
      __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:;
      __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":197
 *             finally:
 *                 CHKERR( MPI_Group_free(&group) )
 *             return group_size             # <<<<<<<<<<<<<<
 * 
 *     property group_rank:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_v_group_size); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 197, __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":189
 *     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":201
 *     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__", 0);

  /* "src/mpi4py/MPI.src/File.pyx":202
 *         """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":203
 *         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":204
 *             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(35, 204, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":205
 *             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":206
 *             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(35, 206, __pyx_L4_error)
  }

  /* "src/mpi4py/MPI.src/File.pyx":208
 *                 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(35, 208, __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;
       __Pyx_ExceptionSwap(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
      if ( 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(35, 208, __pyx_L7_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);
      __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:;
      __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":209
 *             finally:
 *                 CHKERR( MPI_Group_free(&group) )
 *             return group_rank             # <<<<<<<<<<<<<<
 * 
 *     # File Info
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_v_group_rank); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 209, __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":201
 *     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":214
 *     # ---------
 * 
 *     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\nSet new values for the hints associated with a file.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_31Set_info = {"Set_info", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 214, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 214, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Set_info", 0) < (0)) __PYX_ERR(35, 214, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Set_info", 1, 1, 1, i); __PYX_ERR(35, 214, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 214, __pyx_L3_error)
    }
    __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(35, 214, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(35, 214, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":218
 *         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:
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(35, 218, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":214
 *     # ---------
 * 
 *     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":220
 *         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\nReturn the current hints for a file.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_33Get_info = {"Get_info", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_info", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":224
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info); if (unlikely(!__pyx_t_1)) __PYX_ERR(35, 224, __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":225
 *         """
 *         cdef Info info = <Info>New(Info)
 *         with nogil: CHKERR( MPI_File_get_info(self.ob_mpi, &info.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return info
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(35, 225, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":226
 *         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":220
 *         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":230
 *     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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/mpi4py/MPI.src/File.pyx":231
 *         """Info hints."""
 *         def __get__(self) -> Info:
 *             return self.Get_info()             # <<<<<<<<<<<<<<
 * 
 *         def __set__(self, value: Info):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_info, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(35, 231, __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":230
 *     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_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":233
 *             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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "src/mpi4py/MPI.src/File.pyx":234
 * 
 *         def __set__(self, value: Info):
 *             self.Set_info(value)             # <<<<<<<<<<<<<<
 * 
 *     # File Views
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_value};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Set_info, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(35, 234, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":233
 *             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_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":239
 *     # ----------
 * 
 *     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\nSet the file view.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_35Set_view = {"Set_view", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_disp,&__pyx_mstate_global->__pyx_n_u_etype,&__pyx_mstate_global->__pyx_n_u_filetype,&__pyx_mstate_global->__pyx_n_u_datarep,&__pyx_mstate_global->__pyx_n_u_info,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 239, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(35, 239, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(35, 239, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(35, 239, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 239, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 239, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Set_view", 0) < (0)) __PYX_ERR(35, 239, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__131);

      /* "src/mpi4py/MPI.src/File.pyx":243
 *         Offset disp: int = 0,
 *         Datatype etype: Datatype = BYTE,
 *         Datatype filetype: Datatype | None = None,             # <<<<<<<<<<<<<<
 *         datarep: str = "native",
 *         Info info: Info = INFO_NULL,
*/
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((struct PyMPIDatatypeObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_n_u_native));
      if (!values[4]) values[4] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__132);
    } else {
      switch (__pyx_nargs) {
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(35, 239, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(35, 239, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(35, 239, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 239, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 239, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__131);
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((struct PyMPIDatatypeObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_n_u_native));
      if (!values[4]) values[4] = __Pyx_NewRef((PyObject *)__pyx_mstate_global->__pyx_k__132);
    }
    if (values[0]) {
      __pyx_v_disp = __Pyx_PyLong_As_MPI_Offset(values[0]); if (unlikely((__pyx_v_disp == ((MPI_Offset)-1)) && PyErr_Occurred())) __PYX_ERR(35, 241, __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(35, 239, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, 0, "etype", 0))) __PYX_ERR(35, 242, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_filetype), __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, 1, "filetype", 0))) __PYX_ERR(35, 243, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(35, 245, __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":239
 *     # ----------
 * 
 *     def Set_view(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset disp: int = 0,
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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":250
 *         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":251
 *         """
 *         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(35, 251, __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":252
 *         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":253
 *         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":254
 *         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":255
 *         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) )
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":256
 *         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(35, 255, __pyx_L6_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":255
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L7;
        }
        __pyx_L6_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L7:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":239
 *     # ----------
 * 
 *     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":258
 *             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\nReturn the file view.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_37Get_view = {"Get_view", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_view", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":262
 *         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":263
 *         """
 *         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":264
 *         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":266
 *         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":267
 *         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
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":268
 *         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(35, 267, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":267
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":269
 *         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":270
 *             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(35, 270, __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":271
 *         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(35, 271, __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":272
 *         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(35, 272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_datarep = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":273
 *         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_PyLong_From_MPI_Offset(__pyx_v_disp); if (unlikely(!__pyx_t_2)) __PYX_ERR(35, 273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 273, __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) != (0)) __PYX_ERR(35, 273, __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)) != (0)) __PYX_ERR(35, 273, __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)) != (0)) __PYX_ERR(35, 273, __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) != (0)) __PYX_ERR(35, 273, __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":258
 *             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":281
 *     # ---------------------------------
 * 
 *     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\nRead using explicit offset.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_39Read_at = {"Read_at", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_offset,&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 281, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(35, 281, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 281, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 281, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Read_at", 0) < (0)) __PYX_ERR(35, 281, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/File.pyx":285
 *         Offset offset: int,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Read_at", 0, 2, 3, i); __PYX_ERR(35, 281, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(35, 281, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 281, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 281, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __pyx_v_offset = __Pyx_PyLong_As_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == ((MPI_Offset)-1)) && PyErr_Occurred())) __PYX_ERR(35, 283, __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(35, 281, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(35, 285, __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":281
 *     # ---------------------------------
 * 
 *     def Read_at(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":290
 *         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(35, 290, __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":291
 *         """
 *         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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(35, 291, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":292
 *         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) )
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":293
 *         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(35, 292, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":292
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":281
 *     # ---------------------------------
 * 
 *     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":295
 *             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\nCollective read using explicit offset.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_41Read_at_all = {"Read_at_all", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_offset,&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 295, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(35, 295, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 295, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 295, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Read_at_all", 0) < (0)) __PYX_ERR(35, 295, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/File.pyx":299
 *         Offset offset: int,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Read_at_all", 0, 2, 3, i); __PYX_ERR(35, 295, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(35, 295, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 295, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 295, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __pyx_v_offset = __Pyx_PyLong_As_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == ((MPI_Offset)-1)) && PyErr_Occurred())) __PYX_ERR(35, 297, __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(35, 295, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(35, 299, __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":295
 *             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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":304
 *         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(35, 304, __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":305
 *         """
 *         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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(35, 305, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":306
 *         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) )
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":307
 *         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(35, 306, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":306
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":295
 *             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":309
 *             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\nWrite using explicit offset.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_43Write_at = {"Write_at", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_offset,&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 309, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(35, 309, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 309, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 309, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Write_at", 0) < (0)) __PYX_ERR(35, 309, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/File.pyx":313
 *         Offset offset: int,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Write_at", 0, 2, 3, i); __PYX_ERR(35, 309, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(35, 309, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 309, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 309, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __pyx_v_offset = __Pyx_PyLong_As_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == ((MPI_Offset)-1)) && PyErr_Occurred())) __PYX_ERR(35, 311, __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(35, 309, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(35, 313, __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":309
 *             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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":318
 *         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(35, 318, __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":319
 *         """
 *         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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(35, 319, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":320
 *         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) )
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":321
 *         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(35, 320, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":320
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":309
 *             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":323
 *             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\nCollective write using explicit offset.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_45Write_at_all = {"Write_at_all", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_offset,&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 323, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(35, 323, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 323, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 323, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Write_at_all", 0) < (0)) __PYX_ERR(35, 323, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/File.pyx":327
 *         Offset offset: int,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Write_at_all", 0, 2, 3, i); __PYX_ERR(35, 323, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(35, 323, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 323, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 323, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __pyx_v_offset = __Pyx_PyLong_As_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == ((MPI_Offset)-1)) && PyErr_Occurred())) __PYX_ERR(35, 325, __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(35, 323, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(35, 327, __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":323
 *             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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":332
 *         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(35, 332, __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":333
 *         """
 *         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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(35, 333, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":334
 *         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) )
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":335
 *         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(35, 334, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":334
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":323
 *             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":337
 *             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\nNonblocking read using explicit offset.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_47Iread_at = {"Iread_at", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_offset,&__pyx_mstate_global->__pyx_n_u_buf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 337, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 337, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 337, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Iread_at", 0) < (0)) __PYX_ERR(35, 337, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Iread_at", 1, 2, 2, i); __PYX_ERR(35, 337, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 337, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 337, __pyx_L3_error)
    }
    __pyx_v_offset = __Pyx_PyLong_As_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == ((MPI_Offset)-1)) && PyErr_Occurred())) __PYX_ERR(35, 339, __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(35, 337, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":345
 *         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(35, 345, __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":346
 *         """
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(35, 346, __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":347
 *         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
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":348
 *         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(35, 347, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":347
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":349
 *         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":350
 *             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":337
 *             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":352
 *         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\nNonblocking collective read using explicit offset.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_49Iread_at_all = {"Iread_at_all", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_offset,&__pyx_mstate_global->__pyx_n_u_buf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 352, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 352, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 352, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Iread_at_all", 0) < (0)) __PYX_ERR(35, 352, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Iread_at_all", 1, 2, 2, i); __PYX_ERR(35, 352, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 352, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 352, __pyx_L3_error)
    }
    __pyx_v_offset = __Pyx_PyLong_As_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == ((MPI_Offset)-1)) && PyErr_Occurred())) __PYX_ERR(35, 354, __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(35, 352, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":360
 *         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(35, 360, __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":361
 *         """
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(35, 361, __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":362
 *         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
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":363
 *         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(35, 362, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":362
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":364
 *         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":365
 *             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":352
 *         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":367
 *         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\nNonblocking write using explicit offset.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_51Iwrite_at = {"Iwrite_at", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_offset,&__pyx_mstate_global->__pyx_n_u_buf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 367, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 367, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 367, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Iwrite_at", 0) < (0)) __PYX_ERR(35, 367, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Iwrite_at", 1, 2, 2, i); __PYX_ERR(35, 367, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 367, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 367, __pyx_L3_error)
    }
    __pyx_v_offset = __Pyx_PyLong_As_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == ((MPI_Offset)-1)) && PyErr_Occurred())) __PYX_ERR(35, 369, __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(35, 367, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":375
 *         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(35, 375, __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":376
 *         """
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(35, 376, __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":377
 *         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
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":378
 *         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(35, 377, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":377
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":379
 *         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":380
 *             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":367
 *         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":382
 *         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\nNonblocking collective write using explicit offset.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_53Iwrite_at_all = {"Iwrite_at_all", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_offset,&__pyx_mstate_global->__pyx_n_u_buf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 382, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 382, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 382, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Iwrite_at_all", 0) < (0)) __PYX_ERR(35, 382, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Iwrite_at_all", 1, 2, 2, i); __PYX_ERR(35, 382, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 382, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 382, __pyx_L3_error)
    }
    __pyx_v_offset = __Pyx_PyLong_As_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == ((MPI_Offset)-1)) && PyErr_Occurred())) __PYX_ERR(35, 384, __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(35, 382, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":390
 *         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(35, 390, __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":391
 *         """
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(35, 391, __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":392
 *         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
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":393
 *         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(35, 392, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":392
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":394
 *         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":395
 *             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":382
 *         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":400
 *     # -----------------------------------------
 * 
 *     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\nRead using individual file pointer.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_55Read = {"Read", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 400, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 400, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 400, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Read", 0) < (0)) __PYX_ERR(35, 400, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/File.pyx":403
 *         self,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Read", 0, 1, 2, i); __PYX_ERR(35, 400, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 400, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 400, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __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(35, 400, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(35, 403, __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":400
 *     # -----------------------------------------
 * 
 *     def Read(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":408
 *         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(35, 408, __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":409
 *         """
 *         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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(35, 409, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":410
 *         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) )
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":411
 *         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(35, 410, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":410
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":400
 *     # -----------------------------------------
 * 
 *     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":413
 *             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\nCollective read using individual file pointer.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_57Read_all = {"Read_all", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 413, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Read_all", 0) < (0)) __PYX_ERR(35, 413, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/File.pyx":416
 *         self,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Read_all", 0, 1, 2, i); __PYX_ERR(35, 413, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 413, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __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(35, 413, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(35, 416, __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":413
 *             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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":421
 *         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(35, 421, __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":422
 *         """
 *         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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(35, 422, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":423
 *         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) )
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":424
 *         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(35, 423, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":423
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":413
 *             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":426
 *             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\nWrite using individual file pointer.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_59Write = {"Write", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 426, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 426, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 426, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Write", 0) < (0)) __PYX_ERR(35, 426, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/File.pyx":429
 *         self,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Write", 0, 1, 2, i); __PYX_ERR(35, 426, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 426, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 426, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __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(35, 426, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(35, 429, __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":426
 *             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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":434
 *         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(35, 434, __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":435
 *         """
 *         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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(35, 435, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":436
 *         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) )
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":437
 *         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(35, 436, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":436
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":426
 *             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":439
 *             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\nCollective write using individual file pointer.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_61Write_all = {"Write_all", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 439, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 439, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 439, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Write_all", 0) < (0)) __PYX_ERR(35, 439, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/File.pyx":442
 *         self,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Write_all", 0, 1, 2, i); __PYX_ERR(35, 439, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 439, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 439, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __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(35, 439, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(35, 442, __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":439
 *             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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":447
 *         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(35, 447, __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":448
 *         """
 *         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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(35, 448, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":449
 *         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) )
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":450
 *         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(35, 449, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":449
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":439
 *             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":452
 *             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\nNonblocking read using individual file pointer.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_63Iread = {"Iread", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 452, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 452, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Iread", 0) < (0)) __PYX_ERR(35, 452, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Iread", 1, 1, 1, i); __PYX_ERR(35, 452, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 452, __pyx_L3_error)
    }
    __pyx_v_buf = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iread", 1, 1, 1, __pyx_nargs); __PYX_ERR(35, 452, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":459
 *         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(35, 459, __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":460
 *         """
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(35, 460, __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":461
 *         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
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":462
 *         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(35, 461, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":461
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":463
 *         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":464
 *             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":452
 *             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":466
 *         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\nNonblocking collective read using individual file pointer.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_65Iread_all = {"Iread_all", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 466, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 466, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Iread_all", 0) < (0)) __PYX_ERR(35, 466, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Iread_all", 1, 1, 1, i); __PYX_ERR(35, 466, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 466, __pyx_L3_error)
    }
    __pyx_v_buf = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iread_all", 1, 1, 1, __pyx_nargs); __PYX_ERR(35, 466, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":473
 *         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(35, 473, __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":474
 *         """
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(35, 474, __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":475
 *         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
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":476
 *         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(35, 475, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":475
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":477
 *         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":478
 *             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":466
 *         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":480
 *         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\nNonblocking write using individual file pointer.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_67Iwrite = {"Iwrite", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 480, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 480, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Iwrite", 0) < (0)) __PYX_ERR(35, 480, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Iwrite", 1, 1, 1, i); __PYX_ERR(35, 480, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 480, __pyx_L3_error)
    }
    __pyx_v_buf = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iwrite", 1, 1, 1, __pyx_nargs); __PYX_ERR(35, 480, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":487
 *         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(35, 487, __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":488
 *         """
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(35, 488, __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":489
 *         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
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":490
 *         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(35, 489, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":489
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":491
 *         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":492
 *             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":480
 *         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":494
 *         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\nNonblocking collective write using individual file pointer.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_69Iwrite_all = {"Iwrite_all", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 494, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 494, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Iwrite_all", 0) < (0)) __PYX_ERR(35, 494, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Iwrite_all", 1, 1, 1, i); __PYX_ERR(35, 494, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 494, __pyx_L3_error)
    }
    __pyx_v_buf = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iwrite_all", 1, 1, 1, __pyx_nargs); __PYX_ERR(35, 494, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":501
 *         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(35, 501, __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":502
 *         """
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(35, 502, __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":503
 *         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
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":504
 *         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(35, 503, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":503
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":505
 *         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":506
 *             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":494
 *         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":508
 *         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\nUpdate the individual file pointer.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_71Seek = {"Seek", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_offset,&__pyx_mstate_global->__pyx_n_u_whence,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 508, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 508, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 508, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Seek", 0) < (0)) __PYX_ERR(35, 508, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Seek", 0, 1, 2, i); __PYX_ERR(35, 508, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 508, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 508, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_offset = __Pyx_PyLong_As_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == ((MPI_Offset)-1)) && PyErr_Occurred())) __PYX_ERR(35, 508, __pyx_L3_error)
    if (values[1]) {
      __pyx_v_whence = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_whence == (int)-1) && PyErr_Occurred())) __PYX_ERR(35, 508, __pyx_L3_error)
    } else {
      __pyx_v_whence = __pyx_mstate_global->__pyx_k__133;
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Seek", 0, 1, 2, __pyx_nargs); __PYX_ERR(35, 508, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":512
 *         Update the individual file pointer.
 *         """
 *         with nogil: CHKERR( MPI_File_seek(self.ob_mpi, offset, whence) )             # <<<<<<<<<<<<<<
 * 
 *     def Get_position(self) -> int:
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(35, 512, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":508
 *         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":514
 *         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\nReturn the current position of the individual file pointer.\n\n.. note:: Position is measured in etype units\n   relative to the current file view.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_73Get_position = {"Get_position", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_position", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":521
 *            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":522
 *         """
 *         cdef MPI_Offset offset = 0
 *         with nogil: CHKERR( MPI_File_get_position(self.ob_mpi, &offset) )             # <<<<<<<<<<<<<<
 *         return offset
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(35, 522, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":523
 *         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_PyLong_From_MPI_Offset(__pyx_v_offset); if (unlikely(!__pyx_t_2)) __PYX_ERR(35, 523, __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":514
 *         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":525
 *         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\nReturn the absolute byte position in the file.\n\n.. note:: Input *offset* is measured in etype units\n   relative to the current file view.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_75Get_byte_offset = {"Get_byte_offset", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_offset,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 525, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 525, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Get_byte_offset", 0) < (0)) __PYX_ERR(35, 525, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Get_byte_offset", 1, 1, 1, i); __PYX_ERR(35, 525, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 525, __pyx_L3_error)
    }
    __pyx_v_offset = __Pyx_PyLong_As_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == ((MPI_Offset)-1)) && PyErr_Occurred())) __PYX_ERR(35, 525, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_byte_offset", 1, 1, 1, __pyx_nargs); __PYX_ERR(35, 525, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":532
 *            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":533
 *         """
 *         cdef MPI_Offset disp = 0
 *         with nogil: CHKERR( MPI_File_get_byte_offset(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, &disp) )
 *         return disp
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":534
 *         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(35, 533, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":533
 *         """
 *         cdef MPI_Offset disp = 0
 *         with nogil: CHKERR( MPI_File_get_byte_offset(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, &disp) )
 *         return disp
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":535
 *         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_PyLong_From_MPI_Offset(__pyx_v_disp); if (unlikely(!__pyx_t_2)) __PYX_ERR(35, 535, __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":525
 *         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":540
 *     # -------------------------------------
 * 
 *     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\nRead using shared file pointer.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_77Read_shared = {"Read_shared", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 540, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 540, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 540, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Read_shared", 0) < (0)) __PYX_ERR(35, 540, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/File.pyx":543
 *         self,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Read_shared", 0, 1, 2, i); __PYX_ERR(35, 540, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 540, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 540, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __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(35, 540, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(35, 543, __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":540
 *     # -------------------------------------
 * 
 *     def Read_shared(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":548
 *         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(35, 548, __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":549
 *         """
 *         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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(35, 549, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":550
 *         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) )
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":551
 *         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(35, 550, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":550
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":540
 *     # -------------------------------------
 * 
 *     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":553
 *             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\nWrite using shared file pointer.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_79Write_shared = {"Write_shared", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 553, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 553, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 553, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Write_shared", 0) < (0)) __PYX_ERR(35, 553, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/File.pyx":556
 *         self,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Write_shared", 0, 1, 2, i); __PYX_ERR(35, 553, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 553, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 553, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __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(35, 553, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(35, 556, __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":553
 *             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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":561
 *         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(35, 561, __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":562
 *         """
 *         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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(35, 562, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":563
 *         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) )
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":564
 *         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(35, 563, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":563
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":553
 *             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":566
 *             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\nNonblocking read using shared file pointer.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_81Iread_shared = {"Iread_shared", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 566, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 566, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Iread_shared", 0) < (0)) __PYX_ERR(35, 566, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Iread_shared", 1, 1, 1, i); __PYX_ERR(35, 566, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 566, __pyx_L3_error)
    }
    __pyx_v_buf = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iread_shared", 1, 1, 1, __pyx_nargs); __PYX_ERR(35, 566, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":573
 *         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(35, 573, __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":574
 *         """
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(35, 574, __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":575
 *         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
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":576
 *         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(35, 575, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":575
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":577
 *         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":578
 *             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":566
 *             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":580
 *         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\nNonblocking write using shared file pointer.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_83Iwrite_shared = {"Iwrite_shared", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 580, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 580, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Iwrite_shared", 0) < (0)) __PYX_ERR(35, 580, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Iwrite_shared", 1, 1, 1, i); __PYX_ERR(35, 580, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 580, __pyx_L3_error)
    }
    __pyx_v_buf = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iwrite_shared", 1, 1, 1, __pyx_nargs); __PYX_ERR(35, 580, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":587
 *         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(35, 587, __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":588
 *         """
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(35, 588, __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":589
 *         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
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":590
 *         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(35, 589, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":589
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":591
 *         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":592
 *             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":580
 *         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":594
 *         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\nCollective read using shared file pointer.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_85Read_ordered = {"Read_ordered", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 594, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 594, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 594, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Read_ordered", 0) < (0)) __PYX_ERR(35, 594, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/File.pyx":597
 *         self,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Read_ordered", 0, 1, 2, i); __PYX_ERR(35, 594, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 594, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 594, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __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(35, 594, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(35, 597, __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":594
 *         return request
 * 
 *     def Read_ordered(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":602
 *         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(35, 602, __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":603
 *         """
 *         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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(35, 603, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":604
 *         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) )
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":605
 *         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(35, 604, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":604
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":594
 *         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":607
 *             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\nCollective write using shared file pointer.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_87Write_ordered = {"Write_ordered", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 607, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 607, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 607, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Write_ordered", 0) < (0)) __PYX_ERR(35, 607, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/File.pyx":610
 *         self,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Write_ordered", 0, 1, 2, i); __PYX_ERR(35, 607, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 607, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 607, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __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(35, 607, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(35, 610, __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":607
 *             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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":615
 *         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(35, 615, __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":616
 *         """
 *         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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(35, 616, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":617
 *         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) )
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":618
 *         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(35, 617, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":617
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":607
 *             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":620
 *             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\nUpdate the shared file pointer.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_89Seek_shared = {"Seek_shared", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_offset,&__pyx_mstate_global->__pyx_n_u_whence,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 620, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 620, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 620, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Seek_shared", 0) < (0)) __PYX_ERR(35, 620, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Seek_shared", 0, 1, 2, i); __PYX_ERR(35, 620, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 620, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 620, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_offset = __Pyx_PyLong_As_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == ((MPI_Offset)-1)) && PyErr_Occurred())) __PYX_ERR(35, 622, __pyx_L3_error)
    if (values[1]) {
      __pyx_v_whence = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_whence == (int)-1) && PyErr_Occurred())) __PYX_ERR(35, 623, __pyx_L3_error)
    } else {
      __pyx_v_whence = __pyx_mstate_global->__pyx_k__134;
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Seek_shared", 0, 1, 2, __pyx_nargs); __PYX_ERR(35, 620, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":628
 *         Update the shared file pointer.
 *         """
 *         with nogil: CHKERR( MPI_File_seek_shared(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, whence) )
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":629
 *         """
 *         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(35, 628, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":628
 *         Update the shared file pointer.
 *         """
 *         with nogil: CHKERR( MPI_File_seek_shared(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, whence) )
 * 
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":620
 *             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":631
 *             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\nReturn the current position of the shared file pointer.\n\n.. note:: Position is measured in etype units\n   relative to the current view.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_91Get_position_shared = {"Get_position_shared", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_position_shared", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":638
 *            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":639
 *         """
 *         cdef MPI_Offset offset = 0
 *         with nogil: CHKERR( MPI_File_get_position_shared(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &offset) )
 *         return offset
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":640
 *         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(35, 639, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":639
 *         """
 *         cdef MPI_Offset offset = 0
 *         with nogil: CHKERR( MPI_File_get_position_shared(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &offset) )
 *         return offset
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":641
 *         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_PyLong_From_MPI_Offset(__pyx_v_offset); if (unlikely(!__pyx_t_2)) __PYX_ERR(35, 641, __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":631
 *             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":648
 *     # 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\nStart a split collective read using explicit offset.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_93Read_at_all_begin = {"Read_at_all_begin", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_offset,&__pyx_mstate_global->__pyx_n_u_buf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 648, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 648, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 648, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Read_at_all_begin", 0) < (0)) __PYX_ERR(35, 648, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Read_at_all_begin", 1, 2, 2, i); __PYX_ERR(35, 648, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 648, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 648, __pyx_L3_error)
    }
    __pyx_v_offset = __Pyx_PyLong_As_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == ((MPI_Offset)-1)) && PyErr_Occurred())) __PYX_ERR(35, 650, __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(35, 648, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":656
 *         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(35, 656, __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":657
 *         """
 *         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) )
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":658
 *         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(35, 657, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":657
 *         """
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":648
 *     # 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":660
 *             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\nComplete a split collective read using explicit offset.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_95Read_at_all_end = {"Read_at_all_end", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 660, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 660, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 660, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Read_at_all_end", 0) < (0)) __PYX_ERR(35, 660, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/File.pyx":663
 *         self,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Read_at_all_end", 0, 1, 2, i); __PYX_ERR(35, 660, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 660, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 660, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __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(35, 660, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(35, 663, __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":660
 *             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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":668
 *         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(35, 668, __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":669
 *         """
 *         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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(35, 669, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":670
 *         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) )
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":671
 *         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(35, 670, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":670
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":660
 *             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":673
 *             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\nStart a split collective write using explicit offset.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_97Write_at_all_begin = {"Write_at_all_begin", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_offset,&__pyx_mstate_global->__pyx_n_u_buf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 673, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 673, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 673, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Write_at_all_begin", 0) < (0)) __PYX_ERR(35, 673, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Write_at_all_begin", 1, 2, 2, i); __PYX_ERR(35, 673, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 673, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 673, __pyx_L3_error)
    }
    __pyx_v_offset = __Pyx_PyLong_As_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == ((MPI_Offset)-1)) && PyErr_Occurred())) __PYX_ERR(35, 675, __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(35, 673, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":681
 *         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(35, 681, __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":682
 *         """
 *         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) )
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":683
 *         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(35, 682, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":682
 *         """
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":673
 *             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":685
 *             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\nComplete a split collective write using explicit offset.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_99Write_at_all_end = {"Write_at_all_end", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 685, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 685, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 685, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Write_at_all_end", 0) < (0)) __PYX_ERR(35, 685, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/File.pyx":688
 *         self,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Write_at_all_end", 0, 1, 2, i); __PYX_ERR(35, 685, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 685, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 685, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __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(35, 685, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(35, 688, __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":685
 *             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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":693
 *         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(35, 693, __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":694
 *         """
 *         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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(35, 694, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":695
 *         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) )
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":696
 *         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(35, 695, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":695
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":685
 *             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":700
 *     # 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\nStart a split collective read using individual file pointer.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_101Read_all_begin = {"Read_all_begin", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 700, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 700, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Read_all_begin", 0) < (0)) __PYX_ERR(35, 700, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Read_all_begin", 1, 1, 1, i); __PYX_ERR(35, 700, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 700, __pyx_L3_error)
    }
    __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(35, 700, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":707
 *         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(35, 707, __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":708
 *         """
 *         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) )
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":709
 *         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(35, 708, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":708
 *         """
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":700
 *     # 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":711
 *             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\nComplete a split collective read using individual file pointer.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_103Read_all_end = {"Read_all_end", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 711, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 711, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 711, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Read_all_end", 0) < (0)) __PYX_ERR(35, 711, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/File.pyx":714
 *         self,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Read_all_end", 0, 1, 2, i); __PYX_ERR(35, 711, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 711, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 711, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __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(35, 711, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(35, 714, __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":711
 *             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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":719
 *         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(35, 719, __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":720
 *         """
 *         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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(35, 720, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":721
 *         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) )
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":722
 *         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(35, 721, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":721
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":711
 *             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":724
 *             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\nStart a split collective write using individual file pointer.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_105Write_all_begin = {"Write_all_begin", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 724, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 724, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Write_all_begin", 0) < (0)) __PYX_ERR(35, 724, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Write_all_begin", 1, 1, 1, i); __PYX_ERR(35, 724, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 724, __pyx_L3_error)
    }
    __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(35, 724, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":731
 *         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(35, 731, __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":732
 *         """
 *         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) )
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":733
 *         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(35, 732, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":732
 *         """
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":724
 *             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":735
 *             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\nComplete a split collective write using individual file pointer.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_107Write_all_end = {"Write_all_end", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 735, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 735, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 735, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Write_all_end", 0) < (0)) __PYX_ERR(35, 735, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/File.pyx":738
 *         self,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Write_all_end", 0, 1, 2, i); __PYX_ERR(35, 735, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 735, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 735, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __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(35, 735, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(35, 738, __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":735
 *             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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":743
 *         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(35, 743, __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":744
 *         """
 *         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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(35, 744, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":745
 *         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) )
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":746
 *         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(35, 745, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":745
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":735
 *             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":750
 *     # 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\nStart a split collective read using shared file pointer.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_109Read_ordered_begin = {"Read_ordered_begin", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 750, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 750, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Read_ordered_begin", 0) < (0)) __PYX_ERR(35, 750, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Read_ordered_begin", 1, 1, 1, i); __PYX_ERR(35, 750, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 750, __pyx_L3_error)
    }
    __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(35, 750, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":757
 *         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(35, 757, __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":758
 *         """
 *         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) )
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":759
 *         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(35, 758, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":758
 *         """
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":750
 *     # 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":761
 *             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\nComplete a split collective read using shared file pointer.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_111Read_ordered_end = {"Read_ordered_end", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 761, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 761, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 761, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Read_ordered_end", 0) < (0)) __PYX_ERR(35, 761, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/File.pyx":764
 *         self,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Read_ordered_end", 0, 1, 2, i); __PYX_ERR(35, 761, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 761, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 761, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __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(35, 761, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(35, 764, __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":761
 *             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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":769
 *         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(35, 769, __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":770
 *         """
 *         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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(35, 770, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":771
 *         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) )
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":772
 *         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(35, 771, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":771
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":761
 *             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":774
 *             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\nStart a split collective write using shared file pointer.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_113Write_ordered_begin = {"Write_ordered_begin", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 774, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 774, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Write_ordered_begin", 0) < (0)) __PYX_ERR(35, 774, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Write_ordered_begin", 1, 1, 1, i); __PYX_ERR(35, 774, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 774, __pyx_L3_error)
    }
    __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(35, 774, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":781
 *         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(35, 781, __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":782
 *         """
 *         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) )
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":783
 *         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(35, 782, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":782
 *         """
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":774
 *             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":785
 *             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\nComplete a split collective write using shared file pointer.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_115Write_ordered_end = {"Write_ordered_end", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_buf,&__pyx_mstate_global->__pyx_n_u_status,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 785, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 785, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 785, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Write_ordered_end", 0) < (0)) __PYX_ERR(35, 785, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/File.pyx":788
 *         self,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Write_ordered_end", 0, 1, 2, i); __PYX_ERR(35, 785, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 785, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 785, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct PyMPIStatusObject *)Py_None));
    }
    __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(35, 785, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(35, 788, __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":785
 *             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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":793
 *         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(35, 793, __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":794
 *         """
 *         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 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(35, 794, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":795
 *         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) )
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":796
 *         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(35, 795, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":795
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":785
 *             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":801
 *     # ---------------------
 * 
 *     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\nReturn the extent of datatype in the file.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_117Get_type_extent = {"Get_type_extent", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_datatype,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 801, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 801, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Get_type_extent", 0) < (0)) __PYX_ERR(35, 801, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Get_type_extent", 1, 1, 1, i); __PYX_ERR(35, 801, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 801, __pyx_L3_error)
    }
    __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(35, 801, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, 0, "datatype", 0))) __PYX_ERR(35, 801, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":805
 *         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":806
 *         """
 *         cdef MPI_Count extent = 0
 *         with nogil: CHKERR( MPI_File_get_type_extent_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, datatype.ob_mpi, &extent) )
 *         return extent
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":807
 *         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(35, 806, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":806
 *         """
 *         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:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":808
 *         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_PyLong_From_MPI_Count(__pyx_v_extent); if (unlikely(!__pyx_t_2)) __PYX_ERR(35, 808, __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":801
 *     # ---------------------
 * 
 *     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":813
 *     # -------------------------
 * 
 *     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\nSet the atomicity mode.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_119Set_atomicity = {"Set_atomicity", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_flag,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 813, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 813, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Set_atomicity", 0) < (0)) __PYX_ERR(35, 813, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Set_atomicity", 1, 1, 1, i); __PYX_ERR(35, 813, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 813, __pyx_L3_error)
    }
    __pyx_v_flag = __Pyx_PyObject_IsTrue(values[0]); if (unlikely((__pyx_v_flag == (int)-1) && PyErr_Occurred())) __PYX_ERR(35, 813, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_atomicity", 1, 1, 1, __pyx_nargs); __PYX_ERR(35, 813, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":817
 *         Set the atomicity mode.
 *         """
 *         with nogil: CHKERR( MPI_File_set_atomicity(self.ob_mpi, flag) )             # <<<<<<<<<<<<<<
 * 
 *     def Get_atomicity(self) -> bool:
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(35, 817, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":813
 *     # -------------------------
 * 
 *     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":819
 *         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\nReturn the atomicity mode.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_121Get_atomicity = {"Get_atomicity", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_atomicity", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":823
 *         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":824
 *         """
 *         cdef int flag = 0
 *         with nogil: CHKERR( MPI_File_get_atomicity(self.ob_mpi, &flag) )             # <<<<<<<<<<<<<<
 *         return <bint>flag
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(35, 824, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":825
 *         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(35, 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/File.pyx":819
 *         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":829
 *     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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/mpi4py/MPI.src/File.pyx":830
 *         """Atomicity mode."""
 *         def __get__(self) -> bool:
 *             return self.Get_atomicity()             # <<<<<<<<<<<<<<
 * 
 *         def __set__(self, value: bool):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Get_atomicity, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(35, 830, __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":829
 *     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_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":832
 *             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;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "src/mpi4py/MPI.src/File.pyx":833
 * 
 *         def __set__(self, value: bool):
 *             self.Set_atomicity(value)             # <<<<<<<<<<<<<<
 * 
 *     def Sync(self) -> None:
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_value};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Set_atomicity, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(35, 833, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":832
 *             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_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":835
 *             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\nCauses all previous writes to be transferred to the storage device.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_123Sync = {"Sync", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Sync", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":839
 *         Causes all previous writes to be transferred to the storage device.
 *         """
 *         with nogil: CHKERR( MPI_File_sync(self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Error Handling
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*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(35, 839, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":835
 *             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":844
 *     # --------------
 * 
 *     @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\nCreate a new error handler for files.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_125Create_errhandler = {"Create_errhandler", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_errhandler_fn,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 844, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 844, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Create_errhandler", 0) < (0)) __PYX_ERR(35, 844, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Create_errhandler", 1, 1, 1, i); __PYX_ERR(35, 844, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 844, __pyx_L3_error)
    }
    __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(35, 844, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":852
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler); if (unlikely(!__pyx_t_1)) __PYX_ERR(35, 852, __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":853
 *         """
 *         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":854
 *         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(35, 854, __pyx_L1_error)
  __pyx_v_index = __pyx_t_3;

  /* "src/mpi4py/MPI.src/File.pyx":855
 *         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":856
 *         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(35, 856, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/File.pyx":855
 *         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":857
 *         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(35, 857, __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":858
 *             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(35, 858, __pyx_L5_except_error)

      /* "src/mpi4py/MPI.src/File.pyx":859
 *         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(35, 859, __pyx_L5_except_error)
    }

    /* "src/mpi4py/MPI.src/File.pyx":855
 *         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":860
 *             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":844
 *     # --------------
 * 
 *     @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":862
 *         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\nGet the error handler for a file.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_127Get_errhandler = {"Get_errhandler", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("Get_errhandler", __pyx_kwds); 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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":866
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler); if (unlikely(!__pyx_t_1)) __PYX_ERR(35, 866, __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":867
 *         """
 *         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(35, 867, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":868
 *         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":862
 *         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":870
 *         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\nSet the error handler for a file.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_129Set_errhandler = {"Set_errhandler", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_errhandler,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 870, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 870, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Set_errhandler", 0) < (0)) __PYX_ERR(35, 870, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Set_errhandler", 1, 1, 1, i); __PYX_ERR(35, 870, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 870, __pyx_L3_error)
    }
    __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(35, 870, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler, 0, "errhandler", 0))) __PYX_ERR(35, 870, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":874
 *         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(35, 874, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":870
 *         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":876
 *         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\nCall the error handler installed on a file.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_131Call_errhandler = {"Call_errhandler", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_errorcode,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 876, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 876, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Call_errhandler", 0) < (0)) __PYX_ERR(35, 876, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Call_errhandler", 1, 1, 1, i); __PYX_ERR(35, 876, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 876, __pyx_L3_error)
    }
    __pyx_v_errorcode = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) __PYX_ERR(35, 876, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Call_errhandler", 1, 1, 1, __pyx_nargs); __PYX_ERR(35, 876, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":880
 *         Call the error handler installed on a file.
 *         """
 *         CHKERR( MPI_File_call_errhandler(self.ob_mpi, errorcode) )             # <<<<<<<<<<<<<<
 * 
 *     # Integer 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(35, 880, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":876
 *         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":885
 *     # --------------
 * 
 *     def toint(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate object to integer handle.
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_133toint(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_132toint, "toint(self) -> int\n\nTranslate object to integer handle.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_133toint = {"toint", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_133toint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_132toint};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_133toint(PyObject *__pyx_v_self, 
#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("toint (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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("toint", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("toint", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_132toint(((struct PyMPIFileObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_132toint(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("toint", 0);

  /* "src/mpi4py/MPI.src/File.pyx":889
 *         Translate object to integer handle.
 *         """
 *         return MPI_File_toint(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_int(MPI_File_toint(__pyx_v_self->ob_mpi)); if (unlikely(!__pyx_t_1)) __PYX_ERR(35, 889, __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":885
 *     # --------------
 * 
 *     def toint(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate object to integer handle.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.toint", __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":891
 *         return MPI_File_toint(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromint(cls, arg: int, /) -> File:
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_135fromint(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_134fromint, "fromint(cls, arg: int, /) -> File\n\nTranslate integer handle to object.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_135fromint = {"fromint", (PyCFunction)__pyx_pw_6mpi4py_3MPI_4File_135fromint, METH_O, __pyx_doc_6mpi4py_3MPI_4File_134fromint};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_135fromint(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fromint (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_134fromint(((PyTypeObject*)__pyx_v_cls), ((PyObject *)__pyx_v_arg));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_134fromint(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, 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("fromint", 0);

  /* "src/mpi4py/MPI.src/File.pyx":896
 *         Translate integer handle to object.
 *         """
 *         return fromhandle(MPI_File_fromint(arg))             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_As_int(__pyx_v_arg); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(35, 896, __pyx_L1_error)
  __pyx_t_2 = __pyx_fuse_10__pyx_f_6mpi4py_3MPI_fromhandle(MPI_File_fromint(__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(35, 896, __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":891
 *         return MPI_File_toint(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromint(cls, arg: int, /) -> File:
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.fromint", __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":901
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_137py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_136py2f, "py2f(self) -> int\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_137py2f = {"py2f", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_137py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_136py2f};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_137py2f(PyObject *__pyx_v_self, 
#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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __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; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("py2f", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_136py2f(((struct PyMPIFileObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_136py2f(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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":904
 *         """
 *         """
 *         return MPI_File_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_MPI_Fint(MPI_File_c2f(__pyx_v_self->ob_mpi)); if (unlikely(!__pyx_t_1)) __PYX_ERR(35, 904, __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":901
 *     # --------------
 * 
 *     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":906
 *         return MPI_File_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> File:
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_139f2py(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_138f2py, "f2py(cls, arg: int) -> File\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_139f2py = {"f2py", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_139f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_138f2py};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_139f2py(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_arg,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 906, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 906, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "f2py", 0) < (0)) __PYX_ERR(35, 906, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, i); __PYX_ERR(35, 906, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 906, __pyx_L3_error)
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, __pyx_nargs); __PYX_ERR(35, 906, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_138f2py(((PyTypeObject*)__pyx_v_cls), __pyx_v_arg);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_138f2py(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", 0);

  /* "src/mpi4py/MPI.src/File.pyx":910
 *         """
 *         """
 *         return fromhandle(MPI_File_f2c(arg))             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_As_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_1 == ((MPI_Fint)-1)) && PyErr_Occurred())) __PYX_ERR(35, 910, __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(35, 910, __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":906
 *         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":925
 * # ---------------------------------
 * 
 * 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\nRegister user-defined data representations.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_53Register_datarep = {"Register_datarep", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_datarep,&__pyx_mstate_global->__pyx_n_u_read_fn,&__pyx_mstate_global->__pyx_n_u_write_fn,&__pyx_mstate_global->__pyx_n_u_extent_fn,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(35, 925, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(35, 925, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(35, 925, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 925, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 925, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Register_datarep", 0) < (0)) __PYX_ERR(35, 925, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 4; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Register_datarep", 1, 4, 4, i); __PYX_ERR(35, 925, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 4)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(35, 925, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(35, 925, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(35, 925, __pyx_L3_error)
      values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(35, 925, __pyx_L3_error)
    }
    __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(35, 925, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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;
  size_t __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 = 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":934
 *     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":935
 *     """
 *     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(35, 935, __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":936
 *     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_2 = NULL;
  __pyx_t_3 = 1;
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_2, __pyx_v_read_fn, __pyx_v_write_fn, __pyx_v_extent_fn};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_datarep, __pyx_callargs+__pyx_t_3, (4-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(35, 936, __pyx_L1_error)
    __Pyx_GOTREF((PyObject *)__pyx_t_1);
  }
  __pyx_v_state = ((PyObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":937
 *     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":938
 *     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":939
 *     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":940
 *     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":941
 *     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_4 = (__pyx_v_read_fn != Py_None);
  if (__pyx_t_4) {
    __pyx_v_rd = __pyx_f_6mpi4py_3MPI_datarep_read_fn;
  }

  /* "src/mpi4py/MPI.src/File.pyx":942
 *     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_4 = (__pyx_v_write_fn != Py_None);
  if (__pyx_t_4) {
    __pyx_v_wr = __pyx_f_6mpi4py_3MPI_datarep_write_fn;
  }

  /* "src/mpi4py/MPI.src/File.pyx":943
 *     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_5 = __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_5 == ((int)-1))) __PYX_ERR(35, 943, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":944
 *     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_6 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_datarep_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_6)) __PYX_ERR(35, 944, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = NULL;
    __pyx_t_7 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_datarep_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_7)) __PYX_ERR(35, 944, __pyx_L5_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_3 = 1;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_7);
      assert(__pyx_t_2);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
      __pyx_t_3 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(35, 944, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __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:*/ {
          if (unlikely(__pyx_v_6mpi4py_3MPI_datarep_registry == Py_None)) {
            PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
            __PYX_ERR(35, 944, __pyx_L9_error)
          }
          if (unlikely((PyDict_SetItem(__pyx_v_6mpi4py_3MPI_datarep_registry, __pyx_v_datarep, __pyx_v_state) < 0))) __PYX_ERR(35, 944, __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_7); __pyx_t_7 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mpi4py.MPI.Register_datarep", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_7, &__pyx_t_2) < 0) __PYX_ERR(35, 944, __pyx_L11_except_error)
          __Pyx_XGOTREF(__pyx_t_1);
          __Pyx_XGOTREF(__pyx_t_7);
          __Pyx_XGOTREF(__pyx_t_2);
          __pyx_t_11 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 944, __pyx_L11_except_error)
          __Pyx_GOTREF(__pyx_t_11);
          __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_11, NULL);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          if (unlikely(!__pyx_t_12)) __PYX_ERR(35, 944, __pyx_L11_except_error)
          __Pyx_GOTREF(__pyx_t_12);
          __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_12);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (__pyx_t_4 < (0)) __PYX_ERR(35, 944, __pyx_L11_except_error)
          __pyx_t_13 = (!__pyx_t_4);
          if (unlikely(__pyx_t_13)) {
            __Pyx_GIVEREF(__pyx_t_1);
            __Pyx_GIVEREF(__pyx_t_7);
            __Pyx_XGIVEREF(__pyx_t_2);
            __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_7, __pyx_t_2);
            __pyx_t_1 = 0;  __pyx_t_7 = 0;  __pyx_t_2 = 0; 
            __PYX_ERR(35, 944, __pyx_L11_except_error)
          }
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 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_6) {
          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_mstate_global->__pyx_tuple[12], NULL);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (unlikely(!__pyx_t_10)) __PYX_ERR(35, 944, __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_6); __pyx_t_6 = 0;
    goto __pyx_L1_error;
    __pyx_L18:;
  }

  /* "src/mpi4py/MPI.src/File.pyx":925
 * # ---------------------------------
 * 
 * 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_7);
  __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":100
 * # -----------------
 * 
 * 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_118__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__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(36, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF((PyObject *)__Pyx_CyFunction_Defaults(struct __pyx_defaults1, __pyx_self)->arg0);
  __Pyx_GIVEREF((PyObject *)__Pyx_CyFunction_Defaults(struct __pyx_defaults1, __pyx_self)->arg0);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__Pyx_CyFunction_Defaults(struct __pyx_defaults1, __pyx_self)->arg0)) != (0)) __PYX_ERR(36, 100, __pyx_L1_error);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(36, 100, __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) != (0)) __PYX_ERR(36, 100, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, Py_None) != (0)) __PYX_ERR(36, 100, __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\nAllocate memory for message passing and remote memory access.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_55Alloc_mem = {"Alloc_mem", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_size_2,&__pyx_mstate_global->__pyx_n_u_info,0};
    struct __pyx_defaults1 *__pyx_dynamic_args = __Pyx_CyFunction_Defaults(struct __pyx_defaults1, __pyx_self);
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(36, 100, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(36, 100, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(36, 100, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Alloc_mem", 0) < (0)) __PYX_ERR(36, 100, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)__pyx_dynamic_args->arg0);
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Alloc_mem", 0, 1, 2, i); __PYX_ERR(36, 100, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(36, 100, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(36, 100, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)__pyx_dynamic_args->arg0);
    }
    __pyx_v_size = __Pyx_PyLong_As_MPI_Aint(values[0]); if (unlikely((__pyx_v_size == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(36, 100, __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(36, 100, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(36, 100, __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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __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", 0);

  /* "src/mpi4py/MPI.src/MPI.pyx":104
 *     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":105
 *     """
 *     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(36, 105, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":106
 *     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(36, 106, __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":100
 * # -----------------
 * 
 * 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":109
 * 
 * 
 * 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\nFree memory allocated with `Alloc_mem`.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_57Free_mem = {"Free_mem", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_mem,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(36, 109, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(36, 109, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Free_mem", 0) < (0)) __PYX_ERR(36, 109, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Free_mem", 1, 1, 1, i); __PYX_ERR(36, 109, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(36, 109, __pyx_L3_error)
    }
    __pyx_v_mem = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Free_mem", 1, 1, 1, __pyx_nargs); __PYX_ERR(36, 109, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Free_mem", 0);

  /* "src/mpi4py/MPI.src/MPI.pyx":113
 *     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":114
 *     """
 *     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(36, 114, __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":115
 *     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(36, 115, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":116
 *     cdef buffer buf = asbuffer(mem, &base, NULL, 1)
 *     CHKERR( MPI_Free_mem(base) )
 *     buf.release()             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_3 = ((PyObject *)__pyx_v_buf);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_release, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(36, 116, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":109
 * 
 * 
 * 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_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":122
 * # -----------------------
 * 
 * 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\nInitialize the MPI execution environment.");
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", 0);

  /* "src/mpi4py/MPI.src/MPI.pyx":126
 *     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(36, 126, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":127
 *     """
 *     CHKERR( MPI_Init(NULL, NULL) )
 *     initialize()             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_initialize(); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(36, 127, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":122
 * # -----------------------
 * 
 * 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":130
 * 
 * 
 * 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\nTerminate the MPI execution environment.");
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", 0);

  /* "src/mpi4py/MPI.src/MPI.pyx":134
 *     Terminate the MPI execution environment.
 *     """
 *     finalize()             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Finalize() )
 * 
*/
  __pyx_f_6mpi4py_3MPI_finalize();

  /* "src/mpi4py/MPI.src/MPI.pyx":135
 *     """
 *     finalize()
 *     CHKERR( MPI_Finalize() )             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Finalize()); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(36, 135, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":130
 * 
 * 
 * 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":154
 * 
 * 
 * def Init_thread(int required: int = THREAD_MULTIPLE) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Initialize the MPI execution environment.
*/

static PyObject *__pyx_pf_6mpi4py_3MPI_120__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__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_int(__Pyx_CyFunction_Defaults(struct __pyx_defaults, __pyx_self)->arg0); if (unlikely(!__pyx_t_1)) __PYX_ERR(36, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(36, 154, __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) != (0)) __PYX_ERR(36, 154, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(36, 154, __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) != (0)) __PYX_ERR(36, 154, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, Py_None) != (0)) __PYX_ERR(36, 154, __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\nInitialize the MPI execution environment.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_63Init_thread = {"Init_thread", (PyCFunction)(void(*)(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_required,0};
    struct __pyx_defaults *__pyx_dynamic_args = __Pyx_CyFunction_Defaults(struct __pyx_defaults, __pyx_self);
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(36, 154, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(36, 154, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Init_thread", 0) < (0)) __PYX_ERR(36, 154, __pyx_L3_error)
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(36, 154, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_required = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_required == (int)-1) && PyErr_Occurred())) __PYX_ERR(36, 154, __pyx_L3_error)
    } else {
      __pyx_v_required = __pyx_dynamic_args->arg0;
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Init_thread", 0, 0, 1, __pyx_nargs); __PYX_ERR(36, 154, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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 */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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", 0);

  /* "src/mpi4py/MPI.src/MPI.pyx":158
 *     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":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_CHKERR(MPI_Init_thread(NULL, NULL, __pyx_v_required, (&__pyx_v_provided))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(36, 159, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":160
 *     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(36, 160, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":161
 *     CHKERR( MPI_Init_thread(NULL, NULL, required, &provided) )
 *     initialize()
 *     return provided             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_provided); if (unlikely(!__pyx_t_2)) __PYX_ERR(36, 161, __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":154
 * 
 * 
 * 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":164
 * 
 * 
 * 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\nReturn the level of thread support provided by the MPI library.");
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", 0);

  /* "src/mpi4py/MPI.src/MPI.pyx":168
 *     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":169
 *     """
 *     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(36, 169, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":170
 *     cdef int provided = MPI_THREAD_SINGLE
 *     CHKERR( MPI_Query_thread(&provided) )
 *     return provided             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_provided); if (unlikely(!__pyx_t_2)) __PYX_ERR(36, 170, __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":164
 * 
 * 
 * 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":173
 * 
 * 
 * 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\nIndicate whether this thread called `Init` or `Init_thread`.");
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", 0);

  /* "src/mpi4py/MPI.src/MPI.pyx":177
 *     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":178
 *     """
 *     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(36, 178, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":179
 *     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(36, 179, __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":173
 * 
 * 
 * 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":182
 * 
 * 
 * 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\nIndicate whether `Init` has been called.");
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", 0);

  /* "src/mpi4py/MPI.src/MPI.pyx":186
 *     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":187
 *     """
 *     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(36, 187, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":188
 *     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(36, 188, __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":182
 * 
 * 
 * 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":191
 * 
 * 
 * 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\nIndicate whether `Finalize` has completed.");
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", 0);

  /* "src/mpi4py/MPI.src/MPI.pyx":195
 *     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":196
 *     """
 *     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(36, 196, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":197
 *     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(36, 197, __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":191
 * 
 * 
 * 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":210
 * 
 * 
 * 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\nObtain the version number of the MPI standard.");
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", 0);

  /* "src/mpi4py/MPI.src/MPI.pyx":214
 *     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":215
 *     """
 *     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":216
 *     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(36, 216, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":217
 *     cdef int subversion = 0
 *     CHKERR( MPI_Get_version(&version, &subversion) )
 *     return (version, subversion)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_version); if (unlikely(!__pyx_t_2)) __PYX_ERR(36, 217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_subversion); if (unlikely(!__pyx_t_3)) __PYX_ERR(36, 217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(36, 217, __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) != (0)) __PYX_ERR(36, 217, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3) != (0)) __PYX_ERR(36, 217, __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":210
 * 
 * 
 * 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":220
 * 
 * 
 * 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\nObtain the version string of the MPI library.");
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", 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_v_nlen = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":226
 *     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(36, 226, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":227
 *     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(36, 227, __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":220
 * 
 * 
 * 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":233
 * # -------
 * 
 * def Get_abi_version() -> tuple[int, int]:             # <<<<<<<<<<<<<<
 *     """
 *     Obtain the MPI ABI version number.
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_77Get_abi_version(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_76Get_abi_version, "Get_abi_version() -> tuple[int, int]\n\nObtain the MPI ABI version number.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_77Get_abi_version = {"Get_abi_version", (PyCFunction)__pyx_pw_6mpi4py_3MPI_77Get_abi_version, METH_NOARGS, __pyx_doc_6mpi4py_3MPI_76Get_abi_version};
static PyObject *__pyx_pw_6mpi4py_3MPI_77Get_abi_version(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_abi_version (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_76Get_abi_version(__pyx_self);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_76Get_abi_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_abi_version", 0);

  /* "src/mpi4py/MPI.src/MPI.pyx":237
 *     Obtain the MPI ABI version number.
 *     """
 *     cdef int version = 1             # <<<<<<<<<<<<<<
 *     cdef int subversion = 0
 *     CHKERR( MPI_Abi_get_version(&version, &subversion) )
*/
  __pyx_v_version = 1;

  /* "src/mpi4py/MPI.src/MPI.pyx":238
 *     """
 *     cdef int version = 1
 *     cdef int subversion = 0             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Abi_get_version(&version, &subversion) )
 *     return (version, subversion)
*/
  __pyx_v_subversion = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":239
 *     cdef int version = 1
 *     cdef int subversion = 0
 *     CHKERR( MPI_Abi_get_version(&version, &subversion) )             # <<<<<<<<<<<<<<
 *     return (version, subversion)
 * 
*/
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Abi_get_version((&__pyx_v_version), (&__pyx_v_subversion))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(36, 239, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":240
 *     cdef int subversion = 0
 *     CHKERR( MPI_Abi_get_version(&version, &subversion) )
 *     return (version, subversion)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_version); if (unlikely(!__pyx_t_2)) __PYX_ERR(36, 240, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_subversion); if (unlikely(!__pyx_t_3)) __PYX_ERR(36, 240, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(36, 240, __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) != (0)) __PYX_ERR(36, 240, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3) != (0)) __PYX_ERR(36, 240, __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":233
 * # -------
 * 
 * def Get_abi_version() -> tuple[int, int]:             # <<<<<<<<<<<<<<
 *     """
 *     Obtain the MPI ABI version number.
*/

  /* 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_abi_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":243
 * 
 * 
 * def Get_abi_info() -> Info:             # <<<<<<<<<<<<<<
 *     """
 *     Obtain information about the MPI ABI.
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_79Get_abi_info(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_78Get_abi_info, "Get_abi_info() -> Info\n\nObtain information about the MPI ABI.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_79Get_abi_info = {"Get_abi_info", (PyCFunction)__pyx_pw_6mpi4py_3MPI_79Get_abi_info, METH_NOARGS, __pyx_doc_6mpi4py_3MPI_78Get_abi_info};
static PyObject *__pyx_pw_6mpi4py_3MPI_79Get_abi_info(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_abi_info (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_78Get_abi_info(__pyx_self);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_78Get_abi_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_abi_info", 0);

  /* "src/mpi4py/MPI.src/MPI.pyx":247
 *     Obtain information about the MPI ABI.
 *     """
 *     cdef Info info = <Info>New(Info)             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Abi_get_info(&info.ob_mpi) )
 *     return info
*/
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info); if (unlikely(!__pyx_t_1)) __PYX_ERR(36, 247, __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":248
 *     """
 *     cdef Info info = <Info>New(Info)
 *     CHKERR( MPI_Abi_get_info(&info.ob_mpi) )             # <<<<<<<<<<<<<<
 *     return info
 * 
*/
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Abi_get_info((&__pyx_v_info->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(36, 248, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":249
 *     cdef Info info = <Info>New(Info)
 *     CHKERR( MPI_Abi_get_info(&info.ob_mpi) )
 *     return info             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __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":243
 * 
 * 
 * def Get_abi_info() -> Info:             # <<<<<<<<<<<<<<
 *     """
 *     Obtain information about the MPI ABI.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Get_abi_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":252
 * 
 * 
 * def Get_abi_fortran_info() -> Info:             # <<<<<<<<<<<<<<
 *     """
 *     Obtain information about the Fortran MPI ABI.
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_81Get_abi_fortran_info(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_80Get_abi_fortran_info, "Get_abi_fortran_info() -> Info\n\nObtain information about the Fortran MPI ABI.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_81Get_abi_fortran_info = {"Get_abi_fortran_info", (PyCFunction)__pyx_pw_6mpi4py_3MPI_81Get_abi_fortran_info, METH_NOARGS, __pyx_doc_6mpi4py_3MPI_80Get_abi_fortran_info};
static PyObject *__pyx_pw_6mpi4py_3MPI_81Get_abi_fortran_info(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_abi_fortran_info (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_80Get_abi_fortran_info(__pyx_self);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_80Get_abi_fortran_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_abi_fortran_info", 0);

  /* "src/mpi4py/MPI.src/MPI.pyx":256
 *     Obtain information about the Fortran MPI ABI.
 *     """
 *     cdef Info info = <Info>New(Info)             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Abi_get_fortran_info(&info.ob_mpi) )
 *     return info
*/
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info); if (unlikely(!__pyx_t_1)) __PYX_ERR(36, 256, __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":257
 *     """
 *     cdef Info info = <Info>New(Info)
 *     CHKERR( MPI_Abi_get_fortran_info(&info.ob_mpi) )             # <<<<<<<<<<<<<<
 *     return info
 * 
*/
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Abi_get_fortran_info((&__pyx_v_info->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(36, 257, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":258
 *     cdef Info info = <Info>New(Info)
 *     CHKERR( MPI_Abi_get_fortran_info(&info.ob_mpi) )
 *     return info             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __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":252
 * 
 * 
 * def Get_abi_fortran_info() -> Info:             # <<<<<<<<<<<<<<
 *     """
 *     Obtain information about the Fortran MPI ABI.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Get_abi_fortran_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":264
 * # ----------------------
 * 
 * def Get_processor_name() -> str:             # <<<<<<<<<<<<<<
 *     """
 *     Obtain the name of the calling processor.
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_83Get_processor_name(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_82Get_processor_name, "Get_processor_name() -> str\n\nObtain the name of the calling processor.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_83Get_processor_name = {"Get_processor_name", (PyCFunction)__pyx_pw_6mpi4py_3MPI_83Get_processor_name, METH_NOARGS, __pyx_doc_6mpi4py_3MPI_82Get_processor_name};
static PyObject *__pyx_pw_6mpi4py_3MPI_83Get_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_82Get_processor_name(__pyx_self);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_82Get_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", 0);

  /* "src/mpi4py/MPI.src/MPI.pyx":269
 *     """
 *     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":270
 *     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(36, 270, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":271
 *     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(36, 271, __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":264
 * # ----------------------
 * 
 * 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":274
 * 
 * 
 * def Get_hw_resource_info() -> Info:             # <<<<<<<<<<<<<<
 *     """
 *     Obtain information about the hardware platform of the calling processor.
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_85Get_hw_resource_info(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_84Get_hw_resource_info, "Get_hw_resource_info() -> Info\n\nObtain information about the hardware platform of the calling processor.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_85Get_hw_resource_info = {"Get_hw_resource_info", (PyCFunction)__pyx_pw_6mpi4py_3MPI_85Get_hw_resource_info, METH_NOARGS, __pyx_doc_6mpi4py_3MPI_84Get_hw_resource_info};
static PyObject *__pyx_pw_6mpi4py_3MPI_85Get_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_84Get_hw_resource_info(__pyx_self);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_84Get_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", 0);

  /* "src/mpi4py/MPI.src/MPI.pyx":278
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info); if (unlikely(!__pyx_t_1)) __PYX_ERR(36, 278, __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":279
 *     """
 *     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(36, 279, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":280
 *     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":274
 * 
 * 
 * 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":286
 * # --------------------------
 * 
 * def Wtime() -> float:             # <<<<<<<<<<<<<<
 *     """
 *     Return an elapsed time on the calling processor.
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_87Wtime(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_86Wtime, "Wtime() -> float\n\nReturn an elapsed time on the calling processor.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_87Wtime = {"Wtime", (PyCFunction)__pyx_pw_6mpi4py_3MPI_87Wtime, METH_NOARGS, __pyx_doc_6mpi4py_3MPI_86Wtime};
static PyObject *__pyx_pw_6mpi4py_3MPI_87Wtime(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_86Wtime(__pyx_self);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_86Wtime(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", 0);

  /* "src/mpi4py/MPI.src/MPI.pyx":290
 *     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(36, 290, __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":286
 * # --------------------------
 * 
 * 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":293
 * 
 * 
 * def Wtick() -> float:             # <<<<<<<<<<<<<<
 *     """
 *     Return the resolution of `Wtime`.
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_89Wtick(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_88Wtick, "Wtick() -> float\n\nReturn the resolution of `Wtime`.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_89Wtick = {"Wtick", (PyCFunction)__pyx_pw_6mpi4py_3MPI_89Wtick, METH_NOARGS, __pyx_doc_6mpi4py_3MPI_88Wtick};
static PyObject *__pyx_pw_6mpi4py_3MPI_89Wtick(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_88Wtick(__pyx_self);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_88Wtick(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", 0);

  /* "src/mpi4py/MPI.src/MPI.pyx":297
 *     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(36, 297, __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":293
 * 
 * 
 * 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":303
 * # --------------------
 * 
 * def Pcontrol(int level: int) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Control profiling.
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_91Pcontrol(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_90Pcontrol, "Pcontrol(level: int) -> None\n\nControl profiling.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_91Pcontrol = {"Pcontrol", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_91Pcontrol, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_90Pcontrol};
static PyObject *__pyx_pw_6mpi4py_3MPI_91Pcontrol(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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_level,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(36, 303, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(36, 303, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "Pcontrol", 0) < (0)) __PYX_ERR(36, 303, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("Pcontrol", 1, 1, 1, i); __PYX_ERR(36, 303, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(36, 303, __pyx_L3_error)
    }
    __pyx_v_level = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_level == (int)-1) && PyErr_Occurred())) __PYX_ERR(36, 303, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Pcontrol", 1, 1, 1, __pyx_nargs); __PYX_ERR(36, 303, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_90Pcontrol(__pyx_self, __pyx_v_level);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_90Pcontrol(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", 0);

  /* "src/mpi4py/MPI.src/MPI.pyx":307
 *     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(36, 307, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":308
 *     """
 *     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(36, 308, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":303
 * # --------------------
 * 
 * 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", 0);

  /* "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(37, 5, __pyx_L1_error)
    }
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_pystr(__pyx_v_tc); if (unlikely(!__pyx_t_2)) __PYX_ERR(37, 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(37, 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_93_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_92_typecode, "_typecode(datatype: Datatype) -> str | None\n\nMap MPI datatype to character code or type string.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_93_typecode = {"_typecode", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_93_typecode, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_92_typecode};
static PyObject *__pyx_pw_6mpi4py_3MPI_93_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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_datatype,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(38, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(38, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_typecode", 0) < (0)) __PYX_ERR(38, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_typecode", 1, 1, 1, i); __PYX_ERR(38, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(38, 3, __pyx_L3_error)
    }
    __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(38, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, 0, "datatype", 0))) __PYX_ERR(38, 3, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_92_typecode(__pyx_self, __pyx_v_datatype);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_92_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", 0);

  /* "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(38, 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_95_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_94_typealign, "_typealign(datatype: Datatype) -> int | None\n\nReturn MPI datatype alignment.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_95_typealign = {"_typealign", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_95_typealign, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_94_typealign};
static PyObject *__pyx_pw_6mpi4py_3MPI_95_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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_datatype,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(38, 11, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(38, 11, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_typealign", 0) < (0)) __PYX_ERR(38, 11, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_typealign", 1, 1, 1, i); __PYX_ERR(38, 11, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(38, 11, __pyx_L3_error)
    }
    __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(38, 11, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, 0, "datatype", 0))) __PYX_ERR(38, 11, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_94_typealign(__pyx_self, __pyx_v_datatype);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_94_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", 0);

  /* "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_PyLong_FromSize_t(__pyx_v_align); if (unlikely(!__pyx_t_3)) __PYX_ERR(38, 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 = __pyx_k__135;
      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(__pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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(__pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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(__pyx_k_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(__pyx_k_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(__pyx_k_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(__pyx_k_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(__pyx_k_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(__pyx_k_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(__pyx_k_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(__pyx_k_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(__pyx_k_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(__pyx_k_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(__pyx_k_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(__pyx_k_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(__pyx_k_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(__pyx_k_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(__pyx_k_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(__pyx_k_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(__pyx_k_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(__pyx_k_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(__pyx_k_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(__pyx_k_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(__pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 = __pyx_k_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 size_t mpisizeof(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 size_t mpisizeof(MPI_Datatype datatype) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if not mpi_active(): return 0
 *     cdef MPI_Count size = MPI_UNDEFINED
*/

static CYTHON_INLINE size_t __pyx_f_6mpi4py_3MPI_mpisizeof(MPI_Datatype __pyx_v_datatype) {
  MPI_Count __pyx_v_size;
  int __pyx_v_ierr;
  size_t __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;

  /* "src/mpi4py/MPI.src/typestr.pxi":143
 * 
 * cdef inline size_t mpisizeof(MPI_Datatype datatype) noexcept nogil:
 *     if not mpi_active(): return 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Count size = MPI_UNDEFINED
 *     cdef int ierr = MPI_Type_size_c(datatype, &size)
*/
  __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 size_t mpisizeof(MPI_Datatype datatype) noexcept nogil:
 *     if not mpi_active(): return 0
 *     cdef MPI_Count size = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *     cdef int ierr = MPI_Type_size_c(datatype, &size)
 *     if ierr != MPI_SUCCESS or size < 0: size = 0
*/
  __pyx_v_size = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/typestr.pxi":145
 *     if not mpi_active(): return 0
 *     cdef MPI_Count size = MPI_UNDEFINED
 *     cdef int ierr = MPI_Type_size_c(datatype, &size)             # <<<<<<<<<<<<<<
 *     if ierr != MPI_SUCCESS or size < 0: size = 0
 *     return <size_t> size
*/
  __pyx_v_ierr = MPI_Type_size_c(__pyx_v_datatype, (&__pyx_v_size));

  /* "src/mpi4py/MPI.src/typestr.pxi":146
 *     cdef MPI_Count size = MPI_UNDEFINED
 *     cdef int ierr = MPI_Type_size_c(datatype, &size)
 *     if ierr != MPI_SUCCESS or size < 0: size = 0             # <<<<<<<<<<<<<<
 *     return <size_t> size
 * 
*/
  __pyx_t_2 = (__pyx_v_ierr != MPI_SUCCESS);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_size < 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_1) {
    __pyx_v_size = 0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":147
 *     cdef int ierr = MPI_Type_size_c(datatype, &size)
 *     if ierr != MPI_SUCCESS or size < 0: size = 0
 *     return <size_t> size             # <<<<<<<<<<<<<<
 * 
 * cdef inline MPI_Count mpiextent(MPI_Datatype datatype) noexcept nogil:
*/
  __pyx_r = ((size_t)__pyx_v_size);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/typestr.pxi":142
 *     return combiner
 * 
 * cdef inline size_t mpisizeof(MPI_Datatype datatype) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if not mpi_active(): return 0
 *     cdef MPI_Count size = MPI_UNDEFINED
*/

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

/* "src/mpi4py/MPI.src/typestr.pxi":149
 *     return <size_t> size
 * 
 * cdef inline MPI_Count mpiextent(MPI_Datatype datatype) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if not mpi_active(): return 0
 *     cdef MPI_Count lb = 0, extent = MPI_UNDEFINED
*/

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;
  int __pyx_v_ierr;
  MPI_Count __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;

  /* "src/mpi4py/MPI.src/typestr.pxi":150
 * 
 * cdef inline MPI_Count mpiextent(MPI_Datatype datatype) noexcept nogil:
 *     if not mpi_active(): return 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Count lb = 0, extent = MPI_UNDEFINED
 *     cdef int ierr = 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":151
 * cdef inline MPI_Count mpiextent(MPI_Datatype datatype) noexcept nogil:
 *     if not mpi_active(): return 0
 *     cdef MPI_Count lb = 0, extent = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *     cdef int ierr = MPI_Type_get_extent_c(datatype, &lb, &extent)
 *     if ierr != MPI_SUCCESS or extent < 0: extent = 0
*/
  __pyx_v_lb = 0;
  __pyx_v_extent = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/typestr.pxi":152
 *     if not mpi_active(): return 0
 *     cdef MPI_Count lb = 0, extent = MPI_UNDEFINED
 *     cdef int ierr = MPI_Type_get_extent_c(datatype, &lb, &extent)             # <<<<<<<<<<<<<<
 *     if ierr != MPI_SUCCESS or extent < 0: extent = 0
 *     return extent
*/
  __pyx_v_ierr = MPI_Type_get_extent_c(__pyx_v_datatype, (&__pyx_v_lb), (&__pyx_v_extent));

  /* "src/mpi4py/MPI.src/typestr.pxi":153
 *     cdef MPI_Count lb = 0, extent = MPI_UNDEFINED
 *     cdef int ierr = MPI_Type_get_extent_c(datatype, &lb, &extent)
 *     if ierr != MPI_SUCCESS or extent < 0: extent = 0             # <<<<<<<<<<<<<<
 *     return extent
 * 
*/
  __pyx_t_2 = (__pyx_v_ierr != MPI_SUCCESS);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_extent < 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_1) {
    __pyx_v_extent = 0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":154
 *     cdef int ierr = MPI_Type_get_extent_c(datatype, &lb, &extent)
 *     if ierr != MPI_SUCCESS or extent < 0: extent = 0
 *     return extent             # <<<<<<<<<<<<<<
 * 
 * cdef inline const char* mpifortchr(
*/
  __pyx_r = __pyx_v_extent;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/typestr.pxi":149
 *     return <size_t> size
 * 
 * cdef inline MPI_Count mpiextent(MPI_Datatype datatype) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if not mpi_active(): return 0
 *     cdef MPI_Count lb = 0, extent = MPI_UNDEFINED
*/

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

/* "src/mpi4py/MPI.src/typestr.pxi":156
 *     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":160
 *     MPI_Datatype datatype,
 * ) noexcept nogil:
 *     return typechr(kind, <size_t> mpisizeof(datatype))             # <<<<<<<<<<<<<<
 * 
 * cdef inline const char* mpifortstr(
*/
  __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(__pyx_v_kind, ((size_t)__pyx_f_6mpi4py_3MPI_mpisizeof(__pyx_v_datatype)));
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/typestr.pxi":156
 *     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":162
 *     return typechr(kind, <size_t> mpisizeof(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":166
 *     MPI_Datatype datatype,
 * ) noexcept nogil:
 *     return typestr(kind, <size_t> mpisizeof(datatype))             # <<<<<<<<<<<<<<
 * 
 * cdef inline const char* typeDUP(
*/
  __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(__pyx_v_kind, ((size_t)__pyx_f_6mpi4py_3MPI_mpisizeof(__pyx_v_datatype)));
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/typestr.pxi":162
 *     return typechr(kind, <size_t> mpisizeof(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":168
 *     return typestr(kind, <size_t> mpisizeof(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":172
 *     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":173
 * ) 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":175
 *     <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":176
 *         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":177
 *     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":168
 *     return typestr(kind, <size_t> mpisizeof(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":203
 *     const size_t alignof_float128   "16"  # TODO: review
 * 
 * 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":204
 * 
 * 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":205
 * 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":207
 *     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":209
 *     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":210
 *     # 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":211
 *     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":212
 *     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":213
 *     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":215
 *     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":216
 *     # 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":217
 *     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":218
 *     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":219
 *     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":221
 *     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":222
 *     # 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":223
 *     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":224
 *     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":226
 *     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":227
 *     # 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":228
 *     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":229
 *     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":231
 *     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":232
 *     # 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":233
 *     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":235
 *     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":236
 *     # 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":237
 *     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":203
 *     const size_t alignof_float128   "16"  # TODO: review
 * 
 * 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":239
 *     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":243
 *     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":244
 * ) 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":245
 *     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":239
 *     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":249
 * # -----------------------------------------------------------------------------
 * 
 * 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":250
 * 
 * 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":252
 *     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 = __pyx_k_B;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":253
 *     # 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 = __pyx_k_B;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":254
 *     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":255
 *     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":256
 *     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":258
 *     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 = __pyx_k_c;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":259
 *     # 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(__pyx_k_u, 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":260
 *     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 = __pyx_k_U;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":262
 *     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 = __pyx_k_b;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":263
 *     # 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 = __pyx_k_h;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":264
 *     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 = __pyx_k_i;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":265
 *     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 = __pyx_k_l;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":266
 *     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 = __pyx_k_q;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":268
 *     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 = __pyx_k_B;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":269
 *     # 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 = __pyx_k_H;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":270
 *     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 = __pyx_k_I;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":271
 *     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 = __pyx_k_L;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":272
 *     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 = __pyx_k_Q;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":274
 *     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 = __pyx_k_f;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":275
 *     # 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 = __pyx_k_d;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":276
 *     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 = __pyx_k_g;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":278
 *     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 = __pyx_k__135;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":280
 *     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(__pyx_k_i, 1);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":281
 *     # 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(__pyx_k_i, 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":282
 *     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(__pyx_k_i, 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":283
 *     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(__pyx_k_i, 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":284
 *     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(__pyx_k_u, 1);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":285
 *     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(__pyx_k_u, 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":286
 *     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 - real/complex floating
*/
  __pyx_t_1 = (__pyx_v_datatype == MPI_UINT32_T);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(__pyx_k_u, 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":287
 *     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 - real/complex floating
 *     if datatype == MPI_FLOAT16_T             : return "e"
*/
  __pyx_t_1 = (__pyx_v_datatype == MPI_UINT64_T);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(__pyx_k_u, 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":289
 *     if datatype == MPI_UINT64_T : return typechr('u', 8)
 *     # C99 - real/complex floating
 *     if datatype == MPI_FLOAT16_T             : return "e"             # <<<<<<<<<<<<<<
 *     if datatype == MPI_C_COMPLEX             : return "F"
 *     if datatype == MPI_C_FLOAT_COMPLEX       : return "F"
*/
  __pyx_t_1 = (__pyx_v_datatype == MPI_FLOAT16_T);
  if (__pyx_t_1) {
    __pyx_r = __pyx_k_e;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":290
 *     # C99 - real/complex floating
 *     if datatype == MPI_FLOAT16_T             : return "e"
 *     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 = __pyx_k_F;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":291
 *     if datatype == MPI_FLOAT16_T             : return "e"
 *     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 = __pyx_k_F;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":292
 *     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 = __pyx_k_D;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":293
 *     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 = __pyx_k_G;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":295
 *     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 = __pyx_k__135;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":297
 *     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 = __pyx_k_F;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":298
 *     # 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 = __pyx_k_D;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":299
 *     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 = __pyx_k_G;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":301
 *     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 = __pyx_k_c;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":302
 *     # 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(__pyx_k_b, __pyx_v_datatype);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":303
 *     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(__pyx_k_i, __pyx_v_datatype);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":304
 *     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(__pyx_k_f, __pyx_v_datatype);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":305
 *     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(__pyx_k_f, __pyx_v_datatype);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":306
 *     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(__pyx_k_c, __pyx_v_datatype);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":307
 *     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(__pyx_k_c, __pyx_v_datatype);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":309
 *     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(__pyx_k_b, 1);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":310
 *     # 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(__pyx_k_b, 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":311
 *     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_LOGICAL16 : return typechr('b', 16)
*/
  __pyx_t_1 = (__pyx_v_datatype == MPI_LOGICAL4);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(__pyx_k_b, 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":312
 *     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_LOGICAL16 : return typechr('b', 16)
 *     if datatype == MPI_INTEGER1  : return typechr('i',  1)
*/
  __pyx_t_1 = (__pyx_v_datatype == MPI_LOGICAL8);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(__pyx_k_b, 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":313
 *     if datatype == MPI_LOGICAL4  : return typechr('b',  4)
 *     if datatype == MPI_LOGICAL8  : return typechr('b',  8)
 *     if datatype == MPI_LOGICAL16 : return typechr('b', 16)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_INTEGER1  : return typechr('i',  1)
 *     if datatype == MPI_INTEGER2  : return typechr('i',  2)
*/
  __pyx_t_1 = (__pyx_v_datatype == MPI_LOGICAL16);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(__pyx_k_b, 16);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":314
 *     if datatype == MPI_LOGICAL8  : return typechr('b',  8)
 *     if datatype == MPI_LOGICAL16 : return typechr('b', 16)
 *     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(__pyx_k_i, 1);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":315
 *     if datatype == MPI_LOGICAL16 : return typechr('b', 16)
 *     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(__pyx_k_i, 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":316
 *     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(__pyx_k_i, 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":317
 *     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(__pyx_k_i, 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":318
 *     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(__pyx_k_i, 16);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":319
 *     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(__pyx_k_f, 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":320
 *     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(__pyx_k_f, 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":321
 *     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(__pyx_k_f, 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":322
 *     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(__pyx_k_f, 16);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":323
 *     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(__pyx_k_c, 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":324
 *     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(__pyx_k_c, 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":325
 *     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(__pyx_k_c, 16);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":326
 *     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(__pyx_k_c, 32);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":327
 *     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":328
 *     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(__pyx_k_i, __pyx_v_datatype);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":329
 *     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(__pyx_k_f, __pyx_v_datatype);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":330
 *     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(__pyx_k_c, __pyx_v_datatype);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":332
 *     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":334
 *     if combiner == MPI_COMBINER_DUP: return typeDUP(DatatypeChar, datatype)
 *     # fallback
 *     return NULL             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  __pyx_r = NULL;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/typestr.pxi":249
 * # -----------------------------------------------------------------------------
 * 
 * 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":338
 * # -----------------------------------------------------------------------------
 * 
 * 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":339
 * 
 * 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":341
 *     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(__pyx_k_b, 1);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":342
 *     # 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(__pyx_k_i, 1);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":343
 *     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(__pyx_k_i, 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":344
 *     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(__pyx_k_i, 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":345
 *     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(__pyx_k_i, 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":346
 *     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(__pyx_k_u, 1);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":347
 *     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(__pyx_k_u, 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":348
 *     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(__pyx_k_u, 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":349
 *     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(__pyx_k_u, 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":351
 *     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(__pyx_k_b, 1);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":352
 *     # 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(__pyx_k_b, 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":353
 *     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_LOGICAL16 : return typestr('b', 16)
*/
  __pyx_t_1 = (__pyx_v_datatype == MPI_LOGICAL4);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(__pyx_k_b, 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":354
 *     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_LOGICAL16 : return typestr('b', 16)
 *     if datatype == MPI_INTEGER1  : return typestr('i',  1)
*/
  __pyx_t_1 = (__pyx_v_datatype == MPI_LOGICAL8);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(__pyx_k_b, 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":355
 *     if datatype == MPI_LOGICAL4  : return typestr('b',  4)
 *     if datatype == MPI_LOGICAL8  : return typestr('b',  8)
 *     if datatype == MPI_LOGICAL16 : return typestr('b', 16)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_INTEGER1  : return typestr('i',  1)
 *     if datatype == MPI_INTEGER2  : return typestr('i',  2)
*/
  __pyx_t_1 = (__pyx_v_datatype == MPI_LOGICAL16);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(__pyx_k_b, 16);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":356
 *     if datatype == MPI_LOGICAL8  : return typestr('b',  8)
 *     if datatype == MPI_LOGICAL16 : return typestr('b', 16)
 *     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(__pyx_k_i, 1);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":357
 *     if datatype == MPI_LOGICAL16 : return typestr('b', 16)
 *     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(__pyx_k_i, 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":358
 *     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(__pyx_k_i, 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":359
 *     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(__pyx_k_i, 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":360
 *     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(__pyx_k_i, 16);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":361
 *     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(__pyx_k_f, 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":362
 *     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(__pyx_k_f, 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":363
 *     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(__pyx_k_f, 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":364
 *     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(__pyx_k_f, 16);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":365
 *     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(__pyx_k_c, 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":366
 *     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(__pyx_k_c, 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":367
 *     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(__pyx_k_c, 16);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":368
 *     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(__pyx_k_c, 32);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":369
 *     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":370
 *     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(__pyx_k_i, __pyx_v_datatype);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":371
 *     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(__pyx_k_f, __pyx_v_datatype);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":372
 *     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(__pyx_k_c, __pyx_v_datatype);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":374
 *     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":376
 *     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":338
 * # -----------------------------------------------------------------------------
 * 
 * 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":380
 * # -----------------------------------------------------------------------------
 * 
 * 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":381
 * 
 * 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":383
 *     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(__pyx_k_b, 1);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":384
 *     # 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(__pyx_k_i, 1);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":385
 *     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(__pyx_k_i, 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":386
 *     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(__pyx_k_i, 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":387
 *     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(__pyx_k_i, 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":388
 *     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(__pyx_k_u, 1);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":389
 *     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(__pyx_k_u, 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":390
 *     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(__pyx_k_u, 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":391
 *     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(__pyx_k_u, 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":393
 *     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(__pyx_k_b, 1);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":394
 *     # 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(__pyx_k_b, 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":395
 *     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_LOGICAL16 : return typestr('b', 16)
*/
  __pyx_t_1 = (__pyx_v_datatype == MPI_LOGICAL4);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(__pyx_k_b, 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":396
 *     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_LOGICAL16 : return typestr('b', 16)
 *     if datatype == MPI_INTEGER1  : return typestr('i',  1)
*/
  __pyx_t_1 = (__pyx_v_datatype == MPI_LOGICAL8);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(__pyx_k_b, 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":397
 *     if datatype == MPI_LOGICAL4  : return typestr('b',  4)
 *     if datatype == MPI_LOGICAL8  : return typestr('b',  8)
 *     if datatype == MPI_LOGICAL16 : return typestr('b', 16)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_INTEGER1  : return typestr('i',  1)
 *     if datatype == MPI_INTEGER2  : return typestr('i',  2)
*/
  __pyx_t_1 = (__pyx_v_datatype == MPI_LOGICAL16);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(__pyx_k_b, 16);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":398
 *     if datatype == MPI_LOGICAL8  : return typestr('b',  8)
 *     if datatype == MPI_LOGICAL16 : return typestr('b', 16)
 *     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(__pyx_k_i, 1);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":399
 *     if datatype == MPI_LOGICAL16 : return typestr('b', 16)
 *     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(__pyx_k_i, 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":400
 *     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(__pyx_k_i, 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":401
 *     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(__pyx_k_i, 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":402
 *     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(__pyx_k_i, 16);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":403
 *     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(__pyx_k_f, 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":404
 *     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(__pyx_k_f, 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":405
 *     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(__pyx_k_f, 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":406
 *     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(__pyx_k_f, 16);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":407
 *     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(__pyx_k_c, 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":408
 *     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(__pyx_k_c, 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":409
 *     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(__pyx_k_c, 16);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":410
 *     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(__pyx_k_c, 32);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":411
 *     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":412
 *     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(__pyx_k_i, __pyx_v_datatype);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":413
 *     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(__pyx_k_f, __pyx_v_datatype);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":414
 *     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(__pyx_k_c, __pyx_v_datatype);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":416
 *     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":418
 *     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":380
 * # -----------------------------------------------------------------------------
 * 
 * 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":422
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline size_t DatatypeAlign(MPI_Datatype datatype) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if datatype == MPI_DATATYPE_NULL   : return 0
 *     if datatype == MPI_LOGICAL16       : return alignof_int128
*/

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":423
 * 
 * cdef inline size_t DatatypeAlign(MPI_Datatype datatype) noexcept nogil:
 *     if datatype == MPI_DATATYPE_NULL   : return 0             # <<<<<<<<<<<<<<
 *     if datatype == MPI_LOGICAL16       : return alignof_int128
 *     if datatype == MPI_INTEGER16       : return alignof_int128
*/
  __pyx_t_1 = (__pyx_v_datatype == MPI_DATATYPE_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":424
 * cdef inline size_t DatatypeAlign(MPI_Datatype datatype) noexcept nogil:
 *     if datatype == MPI_DATATYPE_NULL   : return 0
 *     if datatype == MPI_LOGICAL16       : return alignof_int128             # <<<<<<<<<<<<<<
 *     if datatype == MPI_INTEGER16       : return alignof_int128
 *     if datatype == MPI_REAL16          : return alignof_float128
*/
  __pyx_t_1 = (__pyx_v_datatype == MPI_LOGICAL16);
  if (__pyx_t_1) {
    __pyx_r = 16;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":425
 *     if datatype == MPI_DATATYPE_NULL   : return 0
 *     if datatype == MPI_LOGICAL16       : return alignof_int128
 *     if datatype == MPI_INTEGER16       : return alignof_int128             # <<<<<<<<<<<<<<
 *     if datatype == MPI_REAL16          : return alignof_float128
 *     if datatype == MPI_COMPLEX32       : return alignof_float128
*/
  __pyx_t_1 = (__pyx_v_datatype == MPI_INTEGER16);
  if (__pyx_t_1) {
    __pyx_r = 16;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":426
 *     if datatype == MPI_LOGICAL16       : return alignof_int128
 *     if datatype == MPI_INTEGER16       : return alignof_int128
 *     if datatype == MPI_REAL16          : return alignof_float128             # <<<<<<<<<<<<<<
 *     if datatype == MPI_COMPLEX32       : return alignof_float128
 *     cdef size_t align = typealign(DatatypeChar(datatype))
*/
  __pyx_t_1 = (__pyx_v_datatype == MPI_REAL16);
  if (__pyx_t_1) {
    __pyx_r = 16;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":427
 *     if datatype == MPI_INTEGER16       : return alignof_int128
 *     if datatype == MPI_REAL16          : return alignof_float128
 *     if datatype == MPI_COMPLEX32       : return alignof_float128             # <<<<<<<<<<<<<<
 *     cdef size_t align = typealign(DatatypeChar(datatype))
 *     if align > 0: return align
*/
  __pyx_t_1 = (__pyx_v_datatype == MPI_COMPLEX32);
  if (__pyx_t_1) {
    __pyx_r = 16;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":428
 *     if datatype == MPI_REAL16          : return alignof_float128
 *     if datatype == MPI_COMPLEX32       : return alignof_float128
 *     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":429
 *     if datatype == MPI_COMPLEX32       : return alignof_float128
 *     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":430
 *     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(__pyx_k_h, __pyx_k_i);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":431
 *     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(__pyx_k_i, __pyx_k_i);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":432
 *     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(__pyx_k_l, __pyx_k_i);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":433
 *     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(__pyx_k_f, __pyx_k_i);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":434
 *     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(__pyx_k_d, __pyx_k_i);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":435
 *     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(__pyx_k_g, __pyx_k_i);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":436
 *     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":422
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline size_t DatatypeAlign(MPI_Datatype datatype) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if datatype == MPI_DATATYPE_NULL   : return 0
 *     if datatype == MPI_LOGICAL16       : return alignof_int128
*/

  /* 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;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("combinername", 0);

  /* "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_mstate_global->__pyx_n_u_NAMED);
    __pyx_r = __pyx_mstate_global->__pyx_n_u_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_mstate_global->__pyx_n_u_DUP);
    __pyx_r = __pyx_mstate_global->__pyx_n_u_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_mstate_global->__pyx_n_u_CONTIGUOUS);
    __pyx_r = __pyx_mstate_global->__pyx_n_u_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_mstate_global->__pyx_n_u_VECTOR);
    __pyx_r = __pyx_mstate_global->__pyx_n_u_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_mstate_global->__pyx_n_u_HVECTOR);
    __pyx_r = __pyx_mstate_global->__pyx_n_u_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_mstate_global->__pyx_n_u_INDEXED);
    __pyx_r = __pyx_mstate_global->__pyx_n_u_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_mstate_global->__pyx_n_u_HINDEXED);
    __pyx_r = __pyx_mstate_global->__pyx_n_u_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_mstate_global->__pyx_n_u_INDEXED_BLOCK);
    __pyx_r = __pyx_mstate_global->__pyx_n_u_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_mstate_global->__pyx_n_u_HINDEXED_BLOCK);
    __pyx_r = __pyx_mstate_global->__pyx_n_u_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_mstate_global->__pyx_n_u_STRUCT);
    __pyx_r = __pyx_mstate_global->__pyx_n_u_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_mstate_global->__pyx_n_u_SUBARRAY);
    __pyx_r = __pyx_mstate_global->__pyx_n_u_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_mstate_global->__pyx_n_u_DARRAY);
    __pyx_r = __pyx_mstate_global->__pyx_n_u_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_mstate_global->__pyx_n_u_RESIZED);
    __pyx_r = __pyx_mstate_global->__pyx_n_u_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_mstate_global->__pyx_n_u_VALUE_INDEX);
    __pyx_r = __pyx_mstate_global->__pyx_n_u_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_mstate_global->__pyx_n_u_F90_INTEGER);
    __pyx_r = __pyx_mstate_global->__pyx_n_u_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_mstate_global->__pyx_n_u_F90_REAL);
    __pyx_r = __pyx_mstate_global->__pyx_n_u_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_mstate_global->__pyx_n_u_F90_COMPLEX);
    __pyx_r = __pyx_mstate_global->__pyx_n_u_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_3 = NULL;
  __pyx_t_4 = __Pyx_PyUnicode_From_int(__pyx_v_combiner, 0, ' ', 'd'); if (unlikely(!__pyx_t_4)) __PYX_ERR(39, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_unknown_combiner_value, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(39, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_5};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(39, 21, __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(39, 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_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __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", 0);

  /* "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(39, 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_PyLong_From_int((__pyx_v_p[__pyx_9genexpr24__pyx_v_i])); if (unlikely(!__pyx_t_3)) __PYX_ERR(39, 24, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) __PYX_ERR(39, 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", 0);

  /* "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(39, 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_PyLong_From_MPI_Aint((__pyx_v_p[__pyx_9genexpr25__pyx_v_i])); if (unlikely(!__pyx_t_3)) __PYX_ERR(39, 24, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) __PYX_ERR(39, 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", 0);

  /* "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(39, 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_PyLong_From_MPI_Count((__pyx_v_p[__pyx_9genexpr26__pyx_v_i])); if (unlikely(!__pyx_t_3)) __PYX_ERR(39, 24, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) __PYX_ERR(39, 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", 0);

  /* "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(39, 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(39, 37, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(39, 37, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(39, 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)) != (0)) __PYX_ERR(39, 37, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_3);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3) != (0)) __PYX_ERR(39, 37, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_4);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4) != (0)) __PYX_ERR(39, 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(39, 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(39, 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(39, 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(39, 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(39, 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(39, 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(39, 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(39, 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(39, 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)) != (0)) __PYX_ERR(39, 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(39, 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(39, 57, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_4))) __PYX_ERR(39, 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(39, 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_PyLong_From_MPI_Count((__pyx_v_c[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(39, 68, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __pyx_t_4;
      __pyx_t_4 = 0;
    } else {
      __pyx_t_4 = __Pyx_PyLong_From_int((__pyx_v_i[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(39, 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(39, 70, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_count, __pyx_v_count) < (0)) __PYX_ERR(39, 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_PyLong_From_MPI_Count((__pyx_v_c[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(39, 73, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __pyx_t_4;
      __pyx_t_4 = 0;
    } else {
      __pyx_t_4 = __Pyx_PyLong_From_int((__pyx_v_i[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(39, 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_PyLong_From_MPI_Count((__pyx_v_c[1])); if (unlikely(!__pyx_t_4)) __PYX_ERR(39, 74, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __pyx_t_4;
      __pyx_t_4 = 0;
    } else {
      __pyx_t_4 = __Pyx_PyLong_From_int((__pyx_v_i[1])); if (unlikely(!__pyx_t_4)) __PYX_ERR(39, 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_PyLong_From_MPI_Count((__pyx_v_c[2])); if (unlikely(!__pyx_t_4)) __PYX_ERR(39, 75, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __pyx_t_4;
      __pyx_t_4 = 0;
    } else {
      __pyx_t_4 = __Pyx_PyLong_From_int((__pyx_v_i[2])); if (unlikely(!__pyx_t_4)) __PYX_ERR(39, 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(39, 77, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_count, __pyx_v_count) < (0)) __PYX_ERR(39, 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_mstate_global->__pyx_n_u_blocklength, __pyx_v_blklen) < (0)) __PYX_ERR(39, 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_mstate_global->__pyx_n_u_stride, __pyx_v_stride) < (0)) __PYX_ERR(39, 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_PyLong_From_MPI_Count((__pyx_v_c[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(39, 82, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __pyx_t_4;
      __pyx_t_4 = 0;
    } else {
      __pyx_t_4 = __Pyx_PyLong_From_int((__pyx_v_i[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(39, 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_PyLong_From_MPI_Count((__pyx_v_c[1])); if (unlikely(!__pyx_t_4)) __PYX_ERR(39, 83, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __pyx_t_4;
      __pyx_t_4 = 0;
    } else {
      __pyx_t_4 = __Pyx_PyLong_From_int((__pyx_v_i[1])); if (unlikely(!__pyx_t_4)) __PYX_ERR(39, 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_PyLong_From_MPI_Count((__pyx_v_c[2])); if (unlikely(!__pyx_t_4)) __PYX_ERR(39, 84, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __pyx_t_4;
      __pyx_t_4 = 0;
    } else {
      __pyx_t_4 = __Pyx_PyLong_From_MPI_Aint((__pyx_v_a[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(39, 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(39, 86, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_count, __pyx_v_count) < (0)) __PYX_ERR(39, 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_mstate_global->__pyx_n_u_blocklength, __pyx_v_blklen) < (0)) __PYX_ERR(39, 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_mstate_global->__pyx_n_u_stride, __pyx_v_stride) < (0)) __PYX_ERR(39, 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(39, 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(39, 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(39, 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(39, 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(39, 102, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_blocklengths, __pyx_v_blklen) < (0)) __PYX_ERR(39, 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_mstate_global->__pyx_n_u_displacements, __pyx_v_displs) < (0)) __PYX_ERR(39, 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(39, 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(39, 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(39, 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(39, 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(39, 117, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_blocklengths, __pyx_v_blklen) < (0)) __PYX_ERR(39, 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_mstate_global->__pyx_n_u_displacements, __pyx_v_displs) < (0)) __PYX_ERR(39, 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_PyLong_From_MPI_Count((__pyx_v_c[1])); if (unlikely(!__pyx_t_5)) __PYX_ERR(39, 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(39, 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_PyLong_From_int((__pyx_v_i[1])); if (unlikely(!__pyx_t_5)) __PYX_ERR(39, 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(39, 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(39, 130, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_blocklength, __pyx_v_blklen) < (0)) __PYX_ERR(39, 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_mstate_global->__pyx_n_u_displacements, __pyx_v_displs) < (0)) __PYX_ERR(39, 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_PyLong_From_MPI_Count((__pyx_v_c[1])); if (unlikely(!__pyx_t_5)) __PYX_ERR(39, 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(39, 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_PyLong_From_int((__pyx_v_i[1])); if (unlikely(!__pyx_t_5)) __PYX_ERR(39, 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(39, 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(39, 143, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_blocklength, __pyx_v_blklen) < (0)) __PYX_ERR(39, 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_mstate_global->__pyx_n_u_displacements, __pyx_v_displs) < (0)) __PYX_ERR(39, 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(39, 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(39, 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(39, 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(39, 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(39, 158, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_blocklengths, __pyx_v_blklen) < (0)) __PYX_ERR(39, 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_mstate_global->__pyx_n_u_displacements, __pyx_v_displs) < (0)) __PYX_ERR(39, 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_mstate_global->__pyx_n_u_datatypes, __pyx_v_datatypes) < (0)) __PYX_ERR(39, 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(39, 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(39, 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(39, 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_PyLong_From_int((__pyx_v_i[1])); if (unlikely(!__pyx_t_5)) __PYX_ERR(39, 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(39, 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(39, 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(39, 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_PyLong_From_int((__pyx_v_i[((3 * (__pyx_v_i[0])) + 1)])); if (unlikely(!__pyx_t_5)) __PYX_ERR(39, 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(39, 180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_sizes, __pyx_v_sizes) < (0)) __PYX_ERR(39, 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_mstate_global->__pyx_n_u_subsizes, __pyx_v_subsizes) < (0)) __PYX_ERR(39, 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_mstate_global->__pyx_n_u_starts, __pyx_v_starts) < (0)) __PYX_ERR(39, 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_mstate_global->__pyx_n_u_order, __pyx_v_order) < (0)) __PYX_ERR(39, 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(39, 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_PyLong_From_int((__pyx_v_i[((3 * (__pyx_v_i[2])) + 3)])); if (unlikely(!__pyx_t_5)) __PYX_ERR(39, 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(39, 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_PyLong_From_int((__pyx_v_i[((4 * (__pyx_v_i[2])) + 3)])); if (unlikely(!__pyx_t_5)) __PYX_ERR(39, 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(39, 201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PyLong_From_int((__pyx_v_i[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(39, 201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_size_2, __pyx_t_4) < (0)) __PYX_ERR(39, 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_PyLong_From_int((__pyx_v_i[1])); if (unlikely(!__pyx_t_4)) __PYX_ERR(39, 202, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_rank, __pyx_t_4) < (0)) __PYX_ERR(39, 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_mstate_global->__pyx_n_u_gsizes, __pyx_v_sizes) < (0)) __PYX_ERR(39, 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(39, 204, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_distribs, __pyx_t_4) < (0)) __PYX_ERR(39, 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(39, 205, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_dargs, __pyx_t_4) < (0)) __PYX_ERR(39, 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(39, 206, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_psizes, __pyx_t_4) < (0)) __PYX_ERR(39, 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_mstate_global->__pyx_n_u_order, __pyx_v_order) < (0)) __PYX_ERR(39, 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_PyLong_From_MPI_Count((__pyx_v_c[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(39, 210, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __pyx_t_4;
      __pyx_t_4 = 0;
    } else {
      __pyx_t_4 = __Pyx_PyLong_From_MPI_Aint((__pyx_v_a[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(39, 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_PyLong_From_MPI_Count((__pyx_v_c[1])); if (unlikely(!__pyx_t_4)) __PYX_ERR(39, 211, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __pyx_t_4;
      __pyx_t_4 = 0;
    } else {
      __pyx_t_4 = __Pyx_PyLong_From_MPI_Aint((__pyx_v_a[1])); if (unlikely(!__pyx_t_4)) __PYX_ERR(39, 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(39, 213, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_lb_2, __pyx_v_lbound) < (0)) __PYX_ERR(39, 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_mstate_global->__pyx_n_u_extent, __pyx_v_extent) < (0)) __PYX_ERR(39, 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(39, 218, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_GetItemInt_List(__pyx_v_datatypes, 0, long, 1, __Pyx_PyLong_From_long, 1, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_4)) __PYX_ERR(39, 218, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_value, __pyx_t_4) < (0)) __PYX_ERR(39, 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_PyLong_From_long, 1, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_4)) __PYX_ERR(39, 219, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_index, __pyx_t_4) < (0)) __PYX_ERR(39, 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(39, 223, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PyLong_From_int((__pyx_v_i[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(39, 223, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_r, __pyx_t_4) < (0)) __PYX_ERR(39, 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(39, 227, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PyLong_From_int((__pyx_v_i[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(39, 227, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_p, __pyx_t_4) < (0)) __PYX_ERR(39, 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_PyLong_From_int((__pyx_v_i[1])); if (unlikely(!__pyx_t_4)) __PYX_ERR(39, 228, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_r, __pyx_t_4) < (0)) __PYX_ERR(39, 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(39, 232, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PyLong_From_int((__pyx_v_i[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(39, 232, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_p, __pyx_t_4) < (0)) __PYX_ERR(39, 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_PyLong_From_int((__pyx_v_i[1])); if (unlikely(!__pyx_t_4)) __PYX_ERR(39, 233, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_r, __pyx_t_4) < (0)) __PYX_ERR(39, 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(39, 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(39, 237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(39, 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)) != (0)) __PYX_ERR(39, 237, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_5);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5) != (0)) __PYX_ERR(39, 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) != (0)) __PYX_ERR(39, 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;
  PyObject *__pyx_t_6 = NULL;
  size_t __pyx_t_7;
  int __pyx_t_8;
  int __pyx_t_9;
  char const *__pyx_t_10;
  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;
  PyObject *__pyx_t_16 = NULL;
  int __pyx_t_17;
  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(39, 249, __pyx_L1_error)
  }
  __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_mstate_global->__pyx_n_u_datatypes, __pyx_v_params, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(39, 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(39, 250, __pyx_L1_error)
    }
    __pyx_t_2 = __Pyx_PyDict_GetItem(__pyx_v_params, __pyx_mstate_global->__pyx_n_u_datatypes); if (unlikely(!__pyx_t_2)) __PYX_ERR(39, 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(39, 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(39, 251, __pyx_L1_error)
  }
  __pyx_t_3 = (__Pyx_PyDict_ContainsTF(__pyx_mstate_global->__pyx_n_u_value, __pyx_v_params, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(39, 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(39, 251, __pyx_L1_error)
  }
  __pyx_t_3 = (__Pyx_PyDict_ContainsTF(__pyx_mstate_global->__pyx_n_u_index, __pyx_v_params, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(39, 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(39, 252, __pyx_L1_error)
    }
    __pyx_t_2 = __Pyx_PyDict_Values(__pyx_v_params); if (unlikely(!__pyx_t_2)) __PYX_ERR(39, 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(39, 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(39, 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)) != (0)) __PYX_ERR(39, 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_mstate_global->__pyx_umethod_PyUnicode_Type__lower, __pyx_v_combiner); if (unlikely(!__pyx_t_4)) __PYX_ERR(39, 256, __pyx_L7_error)
    __Pyx_GOTREF(__pyx_t_4);
    __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_PyUnicode_Concat(__pyx_mstate_global->__pyx_n_u_Create_2, __pyx_v_combiner); if (unlikely(!__pyx_t_4)) __PYX_ERR(39, 257, __pyx_L7_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = __Pyx_GetAttr(((PyObject *)__pyx_v_datatype), __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(39, 257, __pyx_L7_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_factory = __pyx_t_2;
    __pyx_t_2 = 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(39, 258, __pyx_L7_error)
    }
    __pyx_t_5 = PyDict_Copy(__pyx_v_params); if (unlikely(!__pyx_t_5)) __PYX_ERR(39, 258, __pyx_L7_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_v_factory, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(39, 258, __pyx_L7_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_4 = __pyx_t_6;
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_7 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Commit, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(39, 258, __pyx_L7_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype))))) __PYX_ERR(39, 258, __pyx_L7_error)
    __pyx_v_newtype = ((struct PyMPIDatatypeObject *)__pyx_t_2);
    __pyx_t_2 = 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_8 = __pyx_f_6mpi4py_3MPI_datatype_visit(__pyx_fuse_0__pyx_f_6mpi4py_3MPI_freetemp, __pyx_v_datatypes); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(39, 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_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 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;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_ExceptionSwap(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
      if ( unlikely(__Pyx_GetException(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13) < 0)) __Pyx_ErrFetch(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
      __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_XGOTREF(__pyx_t_16);
      __pyx_t_8 = __pyx_lineno; __pyx_t_9 = __pyx_clineno; __pyx_t_10 = __pyx_filename;
      {
        if (__pyx_v_free) {

          /* "src/mpi4py/MPI.src/typedec.pxi":261
 *     finally:
 *         if free:
 *             datatype_visit(freetemp, datatypes)             # <<<<<<<<<<<<<<
 *     return newtype
 * 
*/
          __pyx_t_17 = __pyx_f_6mpi4py_3MPI_datatype_visit(__pyx_fuse_0__pyx_f_6mpi4py_3MPI_freetemp, __pyx_v_datatypes); if (unlikely(__pyx_t_17 == ((int)-1))) __PYX_ERR(39, 261, __pyx_L11_error)

          /* "src/mpi4py/MPI.src/typedec.pxi":260
 *         newtype = factory(**params).Commit()
 *     finally:
 *         if free:             # <<<<<<<<<<<<<<
 *             datatype_visit(freetemp, datatypes)
 *     return newtype
*/
        }
      }
      __Pyx_XGIVEREF(__pyx_t_14);
      __Pyx_XGIVEREF(__pyx_t_15);
      __Pyx_XGIVEREF(__pyx_t_16);
      __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_XGIVEREF(__pyx_t_12);
      __Pyx_XGIVEREF(__pyx_t_13);
      __Pyx_ErrRestore(__pyx_t_11, __pyx_t_12, __pyx_t_13);
      __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0;
      __pyx_lineno = __pyx_t_8; __pyx_clineno = __pyx_t_9; __pyx_filename = __pyx_t_10;
      goto __pyx_L1_error;
      __pyx_L11_error:;
      __Pyx_XGIVEREF(__pyx_t_14);
      __Pyx_XGIVEREF(__pyx_t_15);
      __Pyx_XGIVEREF(__pyx_t_16);
      __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
      __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_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 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_XDECREF(__pyx_t_6);
  __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", 0);

  /* "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(39, 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_SIZE
      if (unlikely((__pyx_temp < 0))) __PYX_ERR(39, 270, __pyx_L1_error)
      #endif
      if (__pyx_t_2 >= __pyx_temp) break;
    }
    __pyx_t_3 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference);
    ++__pyx_t_2;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(39, 270, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype))))) __PYX_ERR(39, 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(39, 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_97_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_96_datatype_create, "_datatype_create(datatype: Datatype, combiner: str, params: dict[str, Any], free: bool = False) -> Datatype\n\nCreate datatype from base datatype, combiner name, and parameters.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_97_datatype_create = {"_datatype_create", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_97_datatype_create, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_96_datatype_create};
static PyObject *__pyx_pw_6mpi4py_3MPI_97_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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_datatype,&__pyx_mstate_global->__pyx_n_u_combiner,&__pyx_mstate_global->__pyx_n_u_params,&__pyx_mstate_global->__pyx_n_u_free,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(39, 274, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(39, 274, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(39, 274, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(39, 274, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(39, 274, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_datatype_create", 0) < (0)) __PYX_ERR(39, 274, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_datatype_create", 0, 3, 4, i); __PYX_ERR(39, 274, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(39, 274, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(39, 274, __pyx_L3_error)
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(39, 274, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(39, 274, __pyx_L3_error)
        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(39, 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(39, 274, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, 0, "datatype", 0))) __PYX_ERR(39, 275, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_combiner), (&PyUnicode_Type), 0, "combiner", 1))) __PYX_ERR(39, 276, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_params), (&PyDict_Type), 0, "params", 1))) __PYX_ERR(39, 277, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_96_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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_96_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", 0);

  /* "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(39, 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_99_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_98_datatype_decode, "_datatype_decode(datatype: Datatype, mark: bool = False) -> tuple[Datatype, str, dict[str, Any]]\n\nDecode datatype to base datatype, combiner name, and parameters.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_99_datatype_decode = {"_datatype_decode", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_99_datatype_decode, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_98_datatype_decode};
static PyObject *__pyx_pw_6mpi4py_3MPI_99_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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_datatype,&__pyx_mstate_global->__pyx_n_u_mark,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(39, 286, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(39, 286, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(39, 286, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_datatype_decode", 0) < (0)) __PYX_ERR(39, 286, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_datatype_decode", 0, 1, 2, i); __PYX_ERR(39, 286, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(39, 286, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(39, 286, __pyx_L3_error)
        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(39, 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(39, 286, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, 0, "datatype", 0))) __PYX_ERR(39, 287, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_98_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;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_98_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", 0);

  /* "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(39, 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":341
 * 
 * 
 * def get_vendor() -> tuple[str, tuple[int, int, int]]:             # <<<<<<<<<<<<<<
 *     """
 *     Information about the underlying MPI implementation.
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_101get_vendor(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_100get_vendor, "get_vendor() -> tuple[str, tuple[int, int, int]]\n\nInformation about the underlying MPI implementation.\n\nReturns:\n  - string with the name of the MPI implementation.\n  - integer 3-tuple version number ``(major, minor, micro)``.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_101get_vendor = {"get_vendor", (PyCFunction)__pyx_pw_6mpi4py_3MPI_101get_vendor, METH_NOARGS, __pyx_doc_6mpi4py_3MPI_100get_vendor};
static PyObject *__pyx_pw_6mpi4py_3MPI_101get_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_100get_vendor(__pyx_self);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_100get_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", 0);

  /* "src/mpi4py/MPI.src/MPI.pyx":349
 *       - 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":350
 *     """
 *     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":351
 *     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(36, 351, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":352
 *     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(36, 352, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_major); if (unlikely(!__pyx_t_3)) __PYX_ERR(36, 352, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_minor); if (unlikely(!__pyx_t_4)) __PYX_ERR(36, 352, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_micro); if (unlikely(!__pyx_t_5)) __PYX_ERR(36, 352, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(36, 352, __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) != (0)) __PYX_ERR(36, 352, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_4) != (0)) __PYX_ERR(36, 352, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_5);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_5) != (0)) __PYX_ERR(36, 352, __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(36, 352, __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) != (0)) __PYX_ERR(36, 352, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_6);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6) != (0)) __PYX_ERR(36, 352, __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":341
 * 
 * 
 * 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":357
 * # -----------------------------------------------------------------------------
 * 
 * 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":358
 * 
 * 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":359
 * 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(36, 359, __pyx_L1_error)
    if (__pyx_t_1) {
      __pyx_r = 1;
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/MPI.pyx":358
 * 
 * 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":361
 *         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":362
 *     else:
 *         if isinstance(arg, cls): return 1
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/MPI.pyx":357
 * # -----------------------------------------------------------------------------
 * 
 * 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":365
 * 
 * 
 * def _sizeof(arg: Any) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Size in bytes of the underlying MPI handle.
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_103_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_102_sizeof, "_sizeof(arg: Any) -> int\n\nSize in bytes of the underlying MPI handle.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_103_sizeof = {"_sizeof", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_103_sizeof, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_102_sizeof};
static PyObject *__pyx_pw_6mpi4py_3MPI_103_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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_arg,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(36, 365, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(36, 365, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_sizeof", 0) < (0)) __PYX_ERR(36, 365, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_sizeof", 1, 1, 1, i); __PYX_ERR(36, 365, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(36, 365, __pyx_L3_error)
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_sizeof", 1, 1, 1, __pyx_nargs); __PYX_ERR(36, 365, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_102_sizeof(__pyx_self, __pyx_v_arg);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_102_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;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_sizeof", 0);

  /* "src/mpi4py/MPI.src/MPI.pyx":369
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(36, 369, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyLong_FromSize_t((sizeof(MPI_Status))); if (unlikely(!__pyx_t_3)) __PYX_ERR(36, 369, __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":370
 *     """
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(36, 370, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyLong_FromSize_t((sizeof(MPI_Datatype))); if (unlikely(!__pyx_t_3)) __PYX_ERR(36, 370, __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":371
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(36, 371, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyLong_FromSize_t((sizeof(MPI_Request))); if (unlikely(!__pyx_t_3)) __PYX_ERR(36, 371, __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":372
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(36, 372, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyLong_FromSize_t((sizeof(MPI_Message))); if (unlikely(!__pyx_t_3)) __PYX_ERR(36, 372, __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":373
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(36, 373, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyLong_FromSize_t((sizeof(MPI_Op))); if (unlikely(!__pyx_t_3)) __PYX_ERR(36, 373, __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":374
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(36, 374, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyLong_FromSize_t((sizeof(MPI_Group))); if (unlikely(!__pyx_t_3)) __PYX_ERR(36, 374, __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":375
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(36, 375, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyLong_FromSize_t((sizeof(MPI_Info))); if (unlikely(!__pyx_t_3)) __PYX_ERR(36, 375, __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":376
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(36, 376, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyLong_FromSize_t((sizeof(MPI_Errhandler))); if (unlikely(!__pyx_t_3)) __PYX_ERR(36, 376, __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":377
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(36, 377, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyLong_FromSize_t((sizeof(MPI_Session))); if (unlikely(!__pyx_t_3)) __PYX_ERR(36, 377, __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":378
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(36, 378, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyLong_FromSize_t((sizeof(MPI_Comm))); if (unlikely(!__pyx_t_3)) __PYX_ERR(36, 378, __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":379
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(36, 379, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyLong_FromSize_t((sizeof(MPI_Win))); if (unlikely(!__pyx_t_3)) __PYX_ERR(36, 379, __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":380
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_File); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(36, 380, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyLong_FromSize_t((sizeof(MPI_File))); if (unlikely(!__pyx_t_3)) __PYX_ERR(36, 380, __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":381
 *     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_4 = NULL;
  __pyx_t_5 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_expecting_an_MPI_type_or_instanc};
    __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(36, 381, __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(36, 381, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":365
 * 
 * 
 * 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_XDECREF(__pyx_t_4);
  __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":384
 * 
 * 
 * def _addressof(arg: Any) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Memory address of the underlying MPI handle.
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_105_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_104_addressof, "_addressof(arg: Any) -> int\n\nMemory address of the underlying MPI handle.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_105_addressof = {"_addressof", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_105_addressof, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_104_addressof};
static PyObject *__pyx_pw_6mpi4py_3MPI_105_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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_arg,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(36, 384, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(36, 384, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_addressof", 0) < (0)) __PYX_ERR(36, 384, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_addressof", 1, 1, 1, i); __PYX_ERR(36, 384, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(36, 384, __pyx_L3_error)
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_addressof", 1, 1, 1, __pyx_nargs); __PYX_ERR(36, 384, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_104_addressof(__pyx_self, __pyx_v_arg);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_104_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;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_addressof", 0);

  /* "src/mpi4py/MPI.src/MPI.pyx":388
 *     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":389
 *     """
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":390
 *     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":389
 *     """
 *     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":391
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":392
 *         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":391
 *     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":393
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":394
 *         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":393
 *     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":395
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":396
 *         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":395
 *     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":397
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":398
 *         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":397
 *     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":399
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":400
 *         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":399
 *     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":401
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":402
 *         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":401
 *     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":403
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":404
 *         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":403
 *     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":405
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":406
 *         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":405
 *     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":407
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":408
 *         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":407
 *     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":409
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":410
 *         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":409
 *     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":411
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_File); 
  if (likely(__pyx_t_1)) {

    /* "src/mpi4py/MPI.src/MPI.pyx":412
 *         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":411
 *     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":414
 *         ptr = <void*>&(<File>arg).ob_mpi
 *     else:
 *         raise TypeError("expecting an MPI instance")             # <<<<<<<<<<<<<<
 *     return PyLong_FromVoidPtr(ptr)
 * 
*/
  /*else*/ {
    __pyx_t_3 = NULL;
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_expecting_an_MPI_instance};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(36, 414, __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(36, 414, __pyx_L1_error)
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/MPI.pyx":415
 *     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(36, 415, __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":384
 * 
 * 
 * def _addressof(arg: Any) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Memory address of the underlying MPI handle.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __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":418
 * 
 * 
 * def _handleof(arg: Any) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Unsigned integer value with the underlying MPI handle.
*/

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_107_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_106_handleof, "_handleof(arg: Any) -> int\n\nUnsigned integer value with the underlying MPI handle.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_107_handleof = {"_handleof", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_107_handleof, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_106_handleof};
static PyObject *__pyx_pw_6mpi4py_3MPI_107_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_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_arg,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(36, 418, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(36, 418, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_handleof", 0) < (0)) __PYX_ERR(36, 418, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_handleof", 1, 1, 1, i); __PYX_ERR(36, 418, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(36, 418, __pyx_L3_error)
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_handleof", 1, 1, 1, __pyx_nargs); __PYX_ERR(36, 418, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(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_106_handleof(__pyx_self, __pyx_v_arg);

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

static PyObject *__pyx_pf_6mpi4py_3MPI_106_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;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_handleof", 0);

  /* "src/mpi4py/MPI.src/MPI.pyx":422
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":423
 *     """
 *     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_PyLong_FromSize_t(((Py_uintptr_t)(&((struct PyMPIStatusObject *)__pyx_v_arg)->ob_mpi))); if (unlikely(!__pyx_t_2)) __PYX_ERR(36, 423, __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":422
 *     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":424
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":425
 *         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_PyLong_FromSize_t(((Py_uintptr_t)((struct PyMPIDatatypeObject *)__pyx_v_arg)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(36, 425, __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":424
 *     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":426
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":427
 *         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_PyLong_FromSize_t(((Py_uintptr_t)((struct PyMPIRequestObject *)__pyx_v_arg)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(36, 427, __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":426
 *     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":428
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":429
 *         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_PyLong_FromSize_t(((Py_uintptr_t)((struct PyMPIMessageObject *)__pyx_v_arg)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(36, 429, __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":428
 *     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":430
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":431
 *         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_PyLong_FromSize_t(((Py_uintptr_t)((struct PyMPIOpObject *)__pyx_v_arg)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(36, 431, __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":430
 *     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":432
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":433
 *         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_PyLong_FromSize_t(((Py_uintptr_t)((struct PyMPIGroupObject *)__pyx_v_arg)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(36, 433, __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":432
 *     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":434
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":435
 *         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_PyLong_FromSize_t(((Py_uintptr_t)((struct PyMPIInfoObject *)__pyx_v_arg)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(36, 435, __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":434
 *     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":436
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":437
 *         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_PyLong_FromSize_t(((Py_uintptr_t)((struct PyMPIErrhandlerObject *)__pyx_v_arg)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(36, 437, __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":436
 *     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":438
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":439
 *         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_PyLong_FromSize_t(((Py_uintptr_t)((struct PyMPISessionObject *)__pyx_v_arg)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(36, 439, __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":438
 *     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":440
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":441
 *         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_PyLong_FromSize_t(((Py_uintptr_t)((struct PyMPICommObject *)__pyx_v_arg)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(36, 441, __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":440
 *     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":442
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":443
 *         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_PyLong_FromSize_t(((Py_uintptr_t)((struct PyMPIWinObject *)__pyx_v_arg)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(36, 443, __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":442
 *     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":444
 *     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_mstate_global->__pyx_ptype_6mpi4py_3MPI_File); 
  if (likely(__pyx_t_1)) {

    /* "src/mpi4py/MPI.src/MPI.pyx":445
 *         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_PyLong_FromSize_t(((Py_uintptr_t)((struct PyMPIFileObject *)__pyx_v_arg)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(36, 445, __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":444
 *     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":447
 *         return <Py_uintptr_t>((<File>arg).ob_mpi)
 *     else:
 *         raise TypeError("expecting an MPI instance")             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  /*else*/ {
    __pyx_t_3 = NULL;
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_expecting_an_MPI_instance};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(36, 447, __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(36, 447, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":418
 * 
 * 
 * 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_XDECREF(__pyx_t_3);
  __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;
}
/* #### Code section: module_exttypes ### */

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Datatype(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o;
  o = __Pyx_AllocateExtensionType(t, 0);
  if (unlikely(!o)) return 0;
  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(__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);
  }
  PyTypeObject *tp = Py_TYPE(o);
  #if CYTHON_USE_TYPE_SLOTS
  (*tp->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  Py_DECREF(tp);
  #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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_11fromhandle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_10fromhandle},
  {"free", (PyCFunction)(void(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_51Commit, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_50Commit},
  {"Free", (PyCFunction)(void(*)(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(*)(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(*)(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(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_63decode, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_62decode},
  {"Pack", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_65Pack, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_64Pack},
  {"Unpack", (PyCFunction)(void(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_89Set_name, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_88Set_name},
  {"toint", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_91toint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_90toint},
  {"fromint", (PyCFunction)__pyx_pw_6mpi4py_3MPI_8Datatype_93fromint, METH_O, __pyx_doc_6mpi4py_3MPI_8Datatype_92fromint},
  {"py2f", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_95py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_94py2f},
  {"f2py", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_97f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_96f2py},
  {"tocode", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_99tocode, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_98tocode},
  {"fromcode", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_101fromcode, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_100fromcode},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Datatype[] = {
  {"handle", __pyx_getprop_6mpi4py_3MPI_8Datatype_handle, 0, PyDoc_STR("handle: int\n\nMPI handle."), 0},
  {"size", __pyx_getprop_6mpi4py_3MPI_8Datatype_size, 0, PyDoc_STR("size: int\n\nSize (in bytes)."), 0},
  {"extent", __pyx_getprop_6mpi4py_3MPI_8Datatype_extent, 0, PyDoc_STR("extent: int\n\nExtent."), 0},
  {"lb", __pyx_getprop_6mpi4py_3MPI_8Datatype_lb, 0, PyDoc_STR("lb: int\n\nLower bound."), 0},
  {"ub", __pyx_getprop_6mpi4py_3MPI_8Datatype_ub, 0, PyDoc_STR("ub: int\n\nUpper bound."), 0},
  {"true_extent", __pyx_getprop_6mpi4py_3MPI_8Datatype_true_extent, 0, PyDoc_STR("true_extent: int\n\nTrue extent."), 0},
  {"true_lb", __pyx_getprop_6mpi4py_3MPI_8Datatype_true_lb, 0, PyDoc_STR("true_lb: int\n\nTrue lower bound."), 0},
  {"true_ub", __pyx_getprop_6mpi4py_3MPI_8Datatype_true_ub, 0, PyDoc_STR("true_ub: int\n\nTrue upper bound."), 0},
  {"envelope", __pyx_getprop_6mpi4py_3MPI_8Datatype_envelope, 0, PyDoc_STR("envelope: tuple[int, int, int, int, int]\n\nEnvelope."), 0},
  {"contents", __pyx_getprop_6mpi4py_3MPI_8Datatype_contents, 0, PyDoc_STR("contents: tuple[list[int], list[int], list[int], list[Datatype]]\n\nContents."), 0},
  {"combiner", __pyx_getprop_6mpi4py_3MPI_8Datatype_combiner, 0, PyDoc_STR("combiner: int\n\nCombiner."), 0},
  {"is_named", __pyx_getprop_6mpi4py_3MPI_8Datatype_is_named, 0, PyDoc_STR("is_named: bool\n\nIs a named datatype."), 0},
  {"is_predefined", __pyx_getprop_6mpi4py_3MPI_8Datatype_is_predefined, 0, PyDoc_STR("is_predefined: bool\n\nIs a predefined datatype."), 0},
  {"name", __pyx_getprop_6mpi4py_3MPI_8Datatype_name, __pyx_setprop_6mpi4py_3MPI_8Datatype_name, PyDoc_STR("name: str\n\nPrint name."), 0},
  {"typestr", __pyx_getprop_6mpi4py_3MPI_8Datatype_typestr, 0, PyDoc_STR("typestr: str\n\nType string."), 0},
  {"typechar", __pyx_getprop_6mpi4py_3MPI_8Datatype_typechar, 0, PyDoc_STR("typechar: str\n\nCharacter code."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyMemberDef PyMPIDatatype_Type_members[] = {
  #if !CYTHON_USE_TYPE_SLOTS
  {"__weaklistoffset__", T_PYSSIZET, offsetof(struct PyMPIDatatypeObject, __weakref__), READONLY, 0},
  #endif
  {0, 0, 0, 0, 0}
};
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x03090000
#if defined(__GNUC__) || defined(__clang__)
#warning "src/mpi4py/MPI.pxd:50:20: : __weakref__ is unsupported in the Limited API when running on Python <3.9."
#elif defined(_MSC_VER)
#pragma message("src/mpi4py/MPI.pxd:50:20: : __weakref__ is unsupported in the Limited API when running on Python <3.9.")
#endif
#endif
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},
  {Py_tp_members, (void*)PyMPIDatatype_Type_members},
  {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*/
  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*/
  0, /*nb_int*/
  0, /*nb_long (reserved)*/
  0, /*nb_float*/
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  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*/
  0, /*nb_matrix_multiply*/
  0, /*nb_inplace_matrix_multiply*/
};

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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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;
  o = __Pyx_AllocateExtensionType(t, 0);
  if (unlikely(!o)) return 0;
  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(__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);
  PyTypeObject *tp = Py_TYPE(o);
  #if CYTHON_USE_TYPE_SLOTS
  (*tp->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  Py_DECREF(tp);
  #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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_31Set_cancelled, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_30Set_cancelled},
  {"tomemory", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_33tomemory, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_32tomemory},
  {"py2f", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_35py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_34py2f},
  {"f2py", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_37f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_36f2py},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Status[] = {
  {"source", __pyx_getprop_6mpi4py_3MPI_6Status_source, __pyx_setprop_6mpi4py_3MPI_6Status_source, PyDoc_STR("source: int\n\nMessage source."), 0},
  {"tag", __pyx_getprop_6mpi4py_3MPI_6Status_tag, __pyx_setprop_6mpi4py_3MPI_6Status_tag, PyDoc_STR("tag: int\n\nMessage tag."), 0},
  {"error", __pyx_getprop_6mpi4py_3MPI_6Status_error, __pyx_setprop_6mpi4py_3MPI_6Status_error, PyDoc_STR("error: int\n\nMessage error."), 0},
  {"count", __pyx_getprop_6mpi4py_3MPI_6Status_count, __pyx_setprop_6mpi4py_3MPI_6Status_count, PyDoc_STR("count: int\n\nByte count."), 0},
  {"cancelled", __pyx_getprop_6mpi4py_3MPI_6Status_cancelled, __pyx_setprop_6mpi4py_3MPI_6Status_cancelled, PyDoc_STR("cancelled: bool\n\nCancelled state."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyMemberDef PyMPIStatus_Type_members[] = {
  #if !CYTHON_USE_TYPE_SLOTS
  {"__weaklistoffset__", T_PYSSIZET, offsetof(struct PyMPIStatusObject, __weakref__), READONLY, 0},
  #endif
  {0, 0, 0, 0, 0}
};
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x03090000
#if defined(__GNUC__) || defined(__clang__)
#warning "src/mpi4py/MPI.pxd:58:18: : __weakref__ is unsupported in the Limited API when running on Python <3.9."
#elif defined(_MSC_VER)
#pragma message("src/mpi4py/MPI.pxd:58:18: : __weakref__ is unsupported in the Limited API when running on Python <3.9.")
#endif
#endif
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},
  {Py_tp_members, (void*)PyMPIStatus_Type_members},
  {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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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;
  o = __Pyx_AllocateExtensionType(t, 0);
  if (unlikely(!o)) return 0;
  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(__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);
  PyTypeObject *tp = Py_TYPE(o);
  #if CYTHON_USE_TYPE_SLOTS
  (*tp->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  Py_DECREF(tp);
  #endif
}

static int __pyx_tp_traverse_6mpi4py_3MPI_Request(PyObject *o, visitproc v, void *a) {
  int e;
  struct PyMPIRequestObject *p = (struct PyMPIRequestObject *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_11fromhandle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_10fromhandle},
  {"free", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_13free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_12free},
  {"Wait", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_15Wait, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_14Wait},
  {"Test", (PyCFunction)(void(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_21Waitany, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_20Waitany},
  {"Testany", (PyCFunction)(void(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_27Waitall, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_26Waitall},
  {"Testall", (PyCFunction)(void(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_33Waitsome, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_32Waitsome},
  {"Testsome", (PyCFunction)(void(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_39Cancel, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_38Cancel},
  {"Free", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_41Free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_40Free},
  {"toint", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_43toint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_42toint},
  {"fromint", (PyCFunction)__pyx_pw_6mpi4py_3MPI_7Request_45fromint, METH_O, __pyx_doc_6mpi4py_3MPI_7Request_44fromint},
  {"py2f", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_47py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_46py2f},
  {"f2py", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_49f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_48f2py},
  {"wait", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_51wait, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_50wait},
  {"test", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_53test, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_52test},
  {"get_status", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_55get_status, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_54get_status},
  {"waitany", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_57waitany, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_56waitany},
  {"testany", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_59testany, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_58testany},
  {"get_status_any", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_61get_status_any, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_60get_status_any},
  {"waitall", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_63waitall, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_62waitall},
  {"testall", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_65testall, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_64testall},
  {"get_status_all", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_67get_status_all, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_66get_status_all},
  {"waitsome", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_69waitsome, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_68waitsome},
  {"testsome", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_71testsome, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_70testsome},
  {"get_status_some", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_73get_status_some, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_72get_status_some},
  {"cancel", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_75cancel, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_74cancel},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Request[] = {
  {"handle", __pyx_getprop_6mpi4py_3MPI_7Request_handle, 0, PyDoc_STR("handle: int\n\nMPI handle."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyMemberDef PyMPIRequest_Type_members[] = {
  #if !CYTHON_USE_TYPE_SLOTS
  {"__weaklistoffset__", T_PYSSIZET, offsetof(struct PyMPIRequestObject, __weakref__), READONLY, 0},
  #endif
  {0, 0, 0, 0, 0}
};
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x03090000
#if defined(__GNUC__) || defined(__clang__)
#warning "src/mpi4py/MPI.pxd:66:19: : __weakref__ is unsupported in the Limited API when running on Python <3.9."
#elif defined(_MSC_VER)
#pragma message("src/mpi4py/MPI.pxd:66:19: : __weakref__ is unsupported in the Limited API when running on Python <3.9.")
#endif
#endif
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},
  {Py_tp_members, (void*)PyMPIRequest_Type_members},
  {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*/
  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*/
  0, /*nb_int*/
  0, /*nb_long (reserved)*/
  0, /*nb_float*/
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  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*/
  0, /*nb_matrix_multiply*/
  0, /*nb_inplace_matrix_multiply*/
};

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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Prequest_3Start, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Prequest_2Start},
  {"Startall", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Prequest_5Startall, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Prequest_4Startall},
  {"Pready", (PyCFunction)(void(*)(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(*)(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(*)(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(*)(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_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI_Request},
  {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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Grequest_3Start, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Grequest_2Start},
  {"Complete", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Grequest_5Complete, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Grequest_4Complete},
  {"complete", (PyCFunction)(void(*)(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_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI_Request},
  {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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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;
  o = __Pyx_AllocateExtensionType(t, 0);
  if (unlikely(!o)) return 0;
  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(__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);
  PyTypeObject *tp = Py_TYPE(o);
  #if CYTHON_USE_TYPE_SLOTS
  (*tp->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  Py_DECREF(tp);
  #endif
}

static int __pyx_tp_traverse_6mpi4py_3MPI_Message(PyObject *o, visitproc v, void *a) {
  int e;
  struct PyMPIMessageObject *p = (struct PyMPIMessageObject *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_11fromhandle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_10fromhandle},
  {"free", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_13free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_12free},
  {"Probe", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_15Probe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_14Probe},
  {"Iprobe", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_17Iprobe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_16Iprobe},
  {"Recv", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_19Recv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_18Recv},
  {"Irecv", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_21Irecv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_20Irecv},
  {"probe", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_23probe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_22probe},
  {"iprobe", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_25iprobe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_24iprobe},
  {"recv", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_27recv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_26recv},
  {"irecv", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_29irecv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_28irecv},
  {"toint", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_31toint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_30toint},
  {"fromint", (PyCFunction)__pyx_pw_6mpi4py_3MPI_7Message_33fromint, METH_O, __pyx_doc_6mpi4py_3MPI_7Message_32fromint},
  {"py2f", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_35py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_34py2f},
  {"f2py", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_37f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_36f2py},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Message[] = {
  {"handle", __pyx_getprop_6mpi4py_3MPI_7Message_handle, 0, PyDoc_STR("handle: int\n\nMPI handle."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyMemberDef PyMPIMessage_Type_members[] = {
  #if !CYTHON_USE_TYPE_SLOTS
  {"__weaklistoffset__", T_PYSSIZET, offsetof(struct PyMPIMessageObject, __weakref__), READONLY, 0},
  #endif
  {0, 0, 0, 0, 0}
};
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x03090000
#if defined(__GNUC__) || defined(__clang__)
#warning "src/mpi4py/MPI.pxd:87:19: : __weakref__ is unsupported in the Limited API when running on Python <3.9."
#elif defined(_MSC_VER)
#pragma message("src/mpi4py/MPI.pxd:87:19: : __weakref__ is unsupported in the Limited API when running on Python <3.9.")
#endif
#endif
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},
  {Py_tp_members, (void*)PyMPIMessage_Type_members},
  {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*/
  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*/
  0, /*nb_int*/
  0, /*nb_long (reserved)*/
  0, /*nb_float*/
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  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*/
  0, /*nb_matrix_multiply*/
  0, /*nb_inplace_matrix_multiply*/
};

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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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;
  o = __Pyx_AllocateExtensionType(t, 0);
  if (unlikely(!o)) return 0;
  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(__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);
  }
  PyTypeObject *tp = Py_TYPE(o);
  #if CYTHON_USE_TYPE_SLOTS
  (*tp->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  Py_DECREF(tp);
  #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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_2Op_13fromhandle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_2Op_12fromhandle},
  {"free", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_2Op_15free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_2Op_14free},
  {"Create", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_2Op_17Create, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_2Op_16Create},
  {"Free", (PyCFunction)(void(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_2Op_23Reduce_local, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_2Op_22Reduce_local},
  {"toint", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_2Op_25toint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_2Op_24toint},
  {"fromint", (PyCFunction)__pyx_pw_6mpi4py_3MPI_2Op_27fromint, METH_O, __pyx_doc_6mpi4py_3MPI_2Op_26fromint},
  {"py2f", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_2Op_29py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_2Op_28py2f},
  {"f2py", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_2Op_31f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_2Op_30f2py},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Op[] = {
  {"handle", __pyx_getprop_6mpi4py_3MPI_2Op_handle, 0, PyDoc_STR("handle: int\n\nMPI handle."), 0},
  {"is_commutative", __pyx_getprop_6mpi4py_3MPI_2Op_is_commutative, 0, PyDoc_STR("is_commutative: bool\n\nIs a commutative operation."), 0},
  {"is_predefined", __pyx_getprop_6mpi4py_3MPI_2Op_is_predefined, 0, PyDoc_STR("is_predefined: bool\n\nIs a predefined operation."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyMemberDef PyMPIOp_Type_members[] = {
  #if !CYTHON_USE_TYPE_SLOTS
  {"__weaklistoffset__", T_PYSSIZET, offsetof(struct PyMPIOpObject, __weakref__), READONLY, 0},
  #endif
  {0, 0, 0, 0, 0}
};
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x03090000
#if defined(__GNUC__) || defined(__clang__)
#warning "src/mpi4py/MPI.pxd:96:16: : __weakref__ is unsupported in the Limited API when running on Python <3.9."
#elif defined(_MSC_VER)
#pragma message("src/mpi4py/MPI.pxd:96:16: : __weakref__ is unsupported in the Limited API when running on Python <3.9.")
#endif
#endif
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},
  {Py_tp_members, (void*)PyMPIOp_Type_members},
  {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*/
  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*/
  0, /*nb_int*/
  0, /*nb_long (reserved)*/
  0, /*nb_float*/
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  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*/
  0, /*nb_matrix_multiply*/
  0, /*nb_inplace_matrix_multiply*/
};

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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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;
  o = __Pyx_AllocateExtensionType(t, 0);
  if (unlikely(!o)) return 0;
  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(__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);
  }
  PyTypeObject *tp = Py_TYPE(o);
  #if CYTHON_USE_TYPE_SLOTS
  (*tp->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  Py_DECREF(tp);
  #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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_11fromhandle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_10fromhandle},
  {"free", (PyCFunction)(void(*)(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(*)(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(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_21Compare, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_20Compare},
  {"Dup", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_23Dup, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_22Dup},
  {"Union", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_25Union, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_24Union},
  {"Intersection", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_27Intersection, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_26Intersection},
  {"Difference", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_29Difference, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_28Difference},
  {"Incl", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_31Incl, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_30Incl},
  {"Excl", (PyCFunction)(void(*)(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(*)(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(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_41Free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_40Free},
  {"toint", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_43toint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_42toint},
  {"fromint", (PyCFunction)__pyx_pw_6mpi4py_3MPI_5Group_45fromint, METH_O, __pyx_doc_6mpi4py_3MPI_5Group_44fromint},
  {"py2f", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_47py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_46py2f},
  {"f2py", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_49f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_48f2py},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Group[] = {
  {"handle", __pyx_getprop_6mpi4py_3MPI_5Group_handle, 0, PyDoc_STR("handle: int\n\nMPI handle."), 0},
  {"size", __pyx_getprop_6mpi4py_3MPI_5Group_size, 0, PyDoc_STR("size: int\n\nNumber of processes."), 0},
  {"rank", __pyx_getprop_6mpi4py_3MPI_5Group_rank, 0, PyDoc_STR("rank: int\n\nRank of this process."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyMemberDef PyMPIGroup_Type_members[] = {
  #if !CYTHON_USE_TYPE_SLOTS
  {"__weaklistoffset__", T_PYSSIZET, offsetof(struct PyMPIGroupObject, __weakref__), READONLY, 0},
  #endif
  {0, 0, 0, 0, 0}
};
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x03090000
#if defined(__GNUC__) || defined(__clang__)
#warning "src/mpi4py/MPI.pxd:104:17: : __weakref__ is unsupported in the Limited API when running on Python <3.9."
#elif defined(_MSC_VER)
#pragma message("src/mpi4py/MPI.pxd:104:17: : __weakref__ is unsupported in the Limited API when running on Python <3.9.")
#endif
#endif
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},
  {Py_tp_members, (void*)PyMPIGroup_Type_members},
  {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*/
  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*/
  0, /*nb_int*/
  0, /*nb_long (reserved)*/
  0, /*nb_float*/
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  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*/
  0, /*nb_matrix_multiply*/
  0, /*nb_inplace_matrix_multiply*/
};

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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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;
  o = __Pyx_AllocateExtensionType(t, 0);
  if (unlikely(!o)) return 0;
  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(__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);
  }
  PyTypeObject *tp = Py_TYPE(o);
  #if CYTHON_USE_TYPE_SLOTS
  (*tp->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  Py_DECREF(tp);
  #endif
}

static PyObject *__pyx_sq_item_6mpi4py_3MPI_Info(PyObject *o, Py_ssize_t i) {
  PyObject *r;
  PyObject *x = PyLong_FromSsize_t(i); if(!x) return 0;
  #if CYTHON_USE_TYPE_SLOTS || (!CYTHON_USE_TYPE_SPECS && __PYX_LIMITED_VERSION_HEX < 0x030A0000)
  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
  #else
  r = ((binaryfunc)PyType_GetSlot(Py_TYPE(o), Py_mp_subscript))(o, x);
  #endif
  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_49__setitem__(o, i, v);
  }
  else {
    return __pyx_pw_6mpi4py_3MPI_4Info_51__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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_11fromhandle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_10fromhandle},
  {"free", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_13free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_12free},
  {"Create", (PyCFunction)(void(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_19Free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_18Free},
  {"Dup", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_21Dup, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_20Dup},
  {"Get", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_23Get, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_22Get},
  {"Set", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_25Set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_24Set},
  {"Delete", (PyCFunction)(void(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_31Get_nthkey, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_30Get_nthkey},
  {"toint", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_33toint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_32toint},
  {"fromint", (PyCFunction)__pyx_pw_6mpi4py_3MPI_4Info_35fromint, METH_O, __pyx_doc_6mpi4py_3MPI_4Info_34fromint},
  {"py2f", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_37py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_36py2f},
  {"f2py", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_39f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_38f2py},
  {"get", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_53get, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_52get},
  {"keys", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_55keys, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_54keys},
  {"values", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_57values, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_56values},
  {"items", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_59items, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_58items},
  {"update", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_61update, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_60update},
  {"pop", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_63pop, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_62pop},
  {"popitem", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_65popitem, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_64popitem},
  {"copy", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_67copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_66copy},
  {"clear", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_69clear, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_68clear},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Info[] = {
  {"handle", __pyx_getprop_6mpi4py_3MPI_4Info_handle, 0, PyDoc_STR("handle: int\n\nMPI handle."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyMemberDef PyMPIInfo_Type_members[] = {
  #if !CYTHON_USE_TYPE_SLOTS
  {"__weaklistoffset__", T_PYSSIZET, offsetof(struct PyMPIInfoObject, __weakref__), READONLY, 0},
  #endif
  {0, 0, 0, 0, 0}
};
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x03090000
#if defined(__GNUC__) || defined(__clang__)
#warning "src/mpi4py/MPI.pxd:112:16: : __weakref__ is unsupported in the Limited API when running on Python <3.9."
#elif defined(_MSC_VER)
#pragma message("src/mpi4py/MPI.pxd:112:16: : __weakref__ is unsupported in the Limited API when running on Python <3.9.")
#endif
#endif
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_41__len__},
  {Py_sq_item, (void *)__pyx_sq_item_6mpi4py_3MPI_Info},
  {Py_sq_contains, (void *)__pyx_pw_6mpi4py_3MPI_4Info_43__contains__},
  {Py_mp_length, (void *)__pyx_pw_6mpi4py_3MPI_4Info_41__len__},
  {Py_mp_subscript, (void *)__pyx_pw_6mpi4py_3MPI_4Info_47__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_45__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},
  {Py_tp_members, (void*)PyMPIInfo_Type_members},
  {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*/
  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*/
  0, /*nb_int*/
  0, /*nb_long (reserved)*/
  0, /*nb_float*/
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  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*/
  0, /*nb_matrix_multiply*/
  0, /*nb_inplace_matrix_multiply*/
};

static PySequenceMethods __pyx_tp_as_sequence_Info = {
  __pyx_pw_6mpi4py_3MPI_4Info_41__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_43__contains__, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_Info = {
  __pyx_pw_6mpi4py_3MPI_4Info_41__len__, /*mp_length*/
  __pyx_pw_6mpi4py_3MPI_4Info_47__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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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_45__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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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;
  o = __Pyx_AllocateExtensionType(t, 0);
  if (unlikely(!o)) return 0;
  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(__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);
  }
  PyTypeObject *tp = Py_TYPE(o);
  #if CYTHON_USE_TYPE_SLOTS
  (*tp->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  Py_DECREF(tp);
  #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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_10Errhandler_11fromhandle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_10Errhandler_10fromhandle},
  {"free", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_10Errhandler_13free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_10Errhandler_12free},
  {"Free", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_10Errhandler_15Free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_10Errhandler_14Free},
  {"toint", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_10Errhandler_17toint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_10Errhandler_16toint},
  {"fromint", (PyCFunction)__pyx_pw_6mpi4py_3MPI_10Errhandler_19fromint, METH_O, __pyx_doc_6mpi4py_3MPI_10Errhandler_18fromint},
  {"py2f", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_10Errhandler_21py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_10Errhandler_20py2f},
  {"f2py", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_10Errhandler_23f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_10Errhandler_22f2py},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Errhandler[] = {
  {"handle", __pyx_getprop_6mpi4py_3MPI_10Errhandler_handle, 0, PyDoc_STR("handle: int\n\nMPI handle."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyMemberDef PyMPIErrhandler_Type_members[] = {
  #if !CYTHON_USE_TYPE_SLOTS
  {"__weaklistoffset__", T_PYSSIZET, offsetof(struct PyMPIErrhandlerObject, __weakref__), READONLY, 0},
  #endif
  {0, 0, 0, 0, 0}
};
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x03090000
#if defined(__GNUC__) || defined(__clang__)
#warning "src/mpi4py/MPI.pxd:120:22: : __weakref__ is unsupported in the Limited API when running on Python <3.9."
#elif defined(_MSC_VER)
#pragma message("src/mpi4py/MPI.pxd:120:22: : __weakref__ is unsupported in the Limited API when running on Python <3.9.")
#endif
#endif
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},
  {Py_tp_members, (void*)PyMPIErrhandler_Type_members},
  {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*/
  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*/
  0, /*nb_int*/
  0, /*nb_long (reserved)*/
  0, /*nb_float*/
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  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*/
  0, /*nb_matrix_multiply*/
  0, /*nb_inplace_matrix_multiply*/
};

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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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;
  o = __Pyx_AllocateExtensionType(t, 0);
  if (unlikely(!o)) return 0;
  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(__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);
  }
  PyTypeObject *tp = Py_TYPE(o);
  #if CYTHON_USE_TYPE_SLOTS
  (*tp->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  Py_DECREF(tp);
  #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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_11fromhandle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_10fromhandle},
  {"free", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_13free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_12free},
  {"Init", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_15Init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_14Init},
  {"Finalize", (PyCFunction)(void(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_43Call_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_42Call_errhandler},
  {"toint", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_45toint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_44toint},
  {"fromint", (PyCFunction)__pyx_pw_6mpi4py_3MPI_7Session_47fromint, METH_O, __pyx_doc_6mpi4py_3MPI_7Session_46fromint},
  {"py2f", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_49py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_48py2f},
  {"f2py", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_51f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_50f2py},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Session[] = {
  {"handle", __pyx_getprop_6mpi4py_3MPI_7Session_handle, 0, PyDoc_STR("handle: int\n\nMPI handle."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyMemberDef PyMPISession_Type_members[] = {
  #if !CYTHON_USE_TYPE_SLOTS
  {"__weaklistoffset__", T_PYSSIZET, offsetof(struct PyMPISessionObject, __weakref__), READONLY, 0},
  #endif
  {0, 0, 0, 0, 0}
};
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x03090000
#if defined(__GNUC__) || defined(__clang__)
#warning "src/mpi4py/MPI.pxd:128:20: : __weakref__ is unsupported in the Limited API when running on Python <3.9."
#elif defined(_MSC_VER)
#pragma message("src/mpi4py/MPI.pxd:128:20: : __weakref__ is unsupported in the Limited API when running on Python <3.9.")
#endif
#endif
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},
  {Py_tp_members, (void*)PyMPISession_Type_members},
  {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*/
  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*/
  0, /*nb_int*/
  0, /*nb_long (reserved)*/
  0, /*nb_float*/
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  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*/
  0, /*nb_matrix_multiply*/
  0, /*nb_inplace_matrix_multiply*/
};

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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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;
  o = __Pyx_AllocateExtensionType(t, 0);
  if (unlikely(!o)) return 0;
  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(__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);
  }
  PyTypeObject *tp = Py_TYPE(o);
  #if CYTHON_USE_TYPE_SLOTS
  (*tp->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  Py_DECREF(tp);
  #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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_11fromhandle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_10fromhandle},
  {"free", (PyCFunction)(void(*)(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(*)(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(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_21Compare, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_20Compare},
  {"Clone", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_23Clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_22Clone},
  {"Dup", (PyCFunction)(void(*)(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(*)(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(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_33Create, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_32Create},
  {"Split", (PyCFunction)(void(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_39Free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_38Free},
  {"Revoke", (PyCFunction)(void(*)(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(*)(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(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_49Agree, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_48Agree},
  {"Iagree", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_51Iagree, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_50Iagree},
  {"Shrink", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_53Shrink, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_52Shrink},
  {"Ishrink", (PyCFunction)(void(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_69Send, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_68Send},
  {"Recv", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_71Recv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_70Recv},
  {"Sendrecv", (PyCFunction)(void(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_77Isend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_76Isend},
  {"Irecv", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_79Irecv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_78Irecv},
  {"Isendrecv", (PyCFunction)(void(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_85Probe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_84Probe},
  {"Iprobe", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_87Iprobe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_86Iprobe},
  {"Mprobe", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_89Mprobe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_88Mprobe},
  {"Improbe", (PyCFunction)(void(*)(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(*)(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(*)(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(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_101Bsend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_100Bsend},
  {"Ssend", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_103Ssend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_102Ssend},
  {"Rsend", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_105Rsend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_104Rsend},
  {"Ibsend", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_107Ibsend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_106Ibsend},
  {"Issend", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_109Issend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_108Issend},
  {"Irsend", (PyCFunction)(void(*)(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(*)(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(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_119Barrier, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_118Barrier},
  {"Bcast", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_121Bcast, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_120Bcast},
  {"Gather", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_123Gather, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_122Gather},
  {"Gatherv", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_125Gatherv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_124Gatherv},
  {"Scatter", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_127Scatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_126Scatter},
  {"Scatterv", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_129Scatterv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_128Scatterv},
  {"Allgather", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_131Allgather, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_130Allgather},
  {"Allgatherv", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_133Allgatherv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_132Allgatherv},
  {"Alltoall", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_135Alltoall, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_134Alltoall},
  {"Alltoallv", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_137Alltoallv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_136Alltoallv},
  {"Alltoallw", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_139Alltoallw, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_138Alltoallw},
  {"Reduce", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_141Reduce, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_140Reduce},
  {"Allreduce", (PyCFunction)(void(*)(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(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_149Ibarrier, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_148Ibarrier},
  {"Ibcast", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_151Ibcast, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_150Ibcast},
  {"Igather", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_153Igather, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_152Igather},
  {"Igatherv", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_155Igatherv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_154Igatherv},
  {"Iscatter", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_157Iscatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_156Iscatter},
  {"Iscatterv", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_159Iscatterv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_158Iscatterv},
  {"Iallgather", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_161Iallgather, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_160Iallgather},
  {"Iallgatherv", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_163Iallgatherv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_162Iallgatherv},
  {"Ialltoall", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_165Ialltoall, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_164Ialltoall},
  {"Ialltoallv", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_167Ialltoallv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_166Ialltoallv},
  {"Ialltoallw", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_169Ialltoallw, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_168Ialltoallw},
  {"Ireduce", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_171Ireduce, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_170Ireduce},
  {"Iallreduce", (PyCFunction)(void(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_217Disconnect, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_216Disconnect},
  {"Join", (PyCFunction)(void(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_243Set_name, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_242Set_name},
  {"toint", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_245toint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_244toint},
  {"fromint", (PyCFunction)__pyx_pw_6mpi4py_3MPI_4Comm_247fromint, METH_O, __pyx_doc_6mpi4py_3MPI_4Comm_246fromint},
  {"py2f", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_249py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_248py2f},
  {"f2py", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_251f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_250f2py},
  {"send", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_253send, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_252send},
  {"bsend", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_255bsend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_254bsend},
  {"ssend", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_257ssend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_256ssend},
  {"recv", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_259recv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_258recv},
  {"sendrecv", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_261sendrecv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_260sendrecv},
  {"isend", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_263isend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_262isend},
  {"ibsend", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_265ibsend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_264ibsend},
  {"issend", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_267issend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_266issend},
  {"irecv", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_269irecv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_268irecv},
  {"probe", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_271probe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_270probe},
  {"iprobe", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_273iprobe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_272iprobe},
  {"mprobe", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_275mprobe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_274mprobe},
  {"improbe", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_277improbe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_276improbe},
  {"barrier", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_279barrier, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_278barrier},
  {"bcast", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_281bcast, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_280bcast},
  {"gather", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_283gather, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_282gather},
  {"scatter", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_285scatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_284scatter},
  {"allgather", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_287allgather, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_286allgather},
  {"alltoall", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_289alltoall, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_288alltoall},
  {"reduce", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_291reduce, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_290reduce},
  {"allreduce", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_293allreduce, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_292allreduce},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Comm[] = {
  {"handle", __pyx_getprop_6mpi4py_3MPI_4Comm_handle, 0, PyDoc_STR("handle: int\n\nMPI handle."), 0},
  {"group", __pyx_getprop_6mpi4py_3MPI_4Comm_group, 0, PyDoc_STR("group: Group\n\nGroup."), 0},
  {"size", __pyx_getprop_6mpi4py_3MPI_4Comm_size, 0, PyDoc_STR("size: int\n\nNumber of processes."), 0},
  {"rank", __pyx_getprop_6mpi4py_3MPI_4Comm_rank, 0, PyDoc_STR("rank: int\n\nRank of this process."), 0},
  {"info", __pyx_getprop_6mpi4py_3MPI_4Comm_info, __pyx_setprop_6mpi4py_3MPI_4Comm_info, PyDoc_STR("info: Info\n\nInfo hints."), 0},
  {"is_inter", __pyx_getprop_6mpi4py_3MPI_4Comm_is_inter, 0, PyDoc_STR("is_inter: bool\n\nIs intercommunicator."), 0},
  {"is_intra", __pyx_getprop_6mpi4py_3MPI_4Comm_is_intra, 0, PyDoc_STR("is_intra: bool\n\nIs intracommunicator."), 0},
  {"topology", __pyx_getprop_6mpi4py_3MPI_4Comm_topology, 0, PyDoc_STR("topology: int\n\nTopology type."), 0},
  {"is_topo", __pyx_getprop_6mpi4py_3MPI_4Comm_is_topo, 0, PyDoc_STR("is_topo: bool\n\nIs a topology."), 0},
  {"name", __pyx_getprop_6mpi4py_3MPI_4Comm_name, __pyx_setprop_6mpi4py_3MPI_4Comm_name, PyDoc_STR("name: str\n\nPrint name."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyMemberDef PyMPIComm_Type_members[] = {
  #if !CYTHON_USE_TYPE_SLOTS
  {"__weaklistoffset__", T_PYSSIZET, offsetof(struct PyMPICommObject, __weakref__), READONLY, 0},
  #endif
  {0, 0, 0, 0, 0}
};
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x03090000
#if defined(__GNUC__) || defined(__clang__)
#warning "src/mpi4py/MPI.pxd:136:16: : __weakref__ is unsupported in the Limited API when running on Python <3.9."
#elif defined(_MSC_VER)
#pragma message("src/mpi4py/MPI.pxd:136:16: : __weakref__ is unsupported in the Limited API when running on Python <3.9.")
#endif
#endif
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},
  {Py_tp_members, (void*)PyMPIComm_Type_members},
  {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*/
  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*/
  0, /*nb_int*/
  0, /*nb_long (reserved)*/
  0, /*nb_float*/
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  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*/
  0, /*nb_matrix_multiply*/
  0, /*nb_inplace_matrix_multiply*/
};

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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_21Scan, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_20Scan},
  {"Exscan", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_23Exscan, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_22Exscan},
  {"Iscan", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_25Iscan, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_24Iscan},
  {"Iexscan", (PyCFunction)(void(*)(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(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_33scan, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_32scan},
  {"exscan", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_35exscan, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_34exscan},
  {"Spawn", (PyCFunction)(void(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_41Accept, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_40Accept},
  {"Connect", (PyCFunction)(void(*)(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_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI_Comm},
  {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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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[] = {
  {"degrees", __pyx_getprop_6mpi4py_3MPI_8Topocomm_degrees, 0, PyDoc_STR("degrees: tuple[int, int]\n\nNumber of incoming and outgoing neighbors."), 0},
  {"indegree", __pyx_getprop_6mpi4py_3MPI_8Topocomm_indegree, 0, PyDoc_STR("indegree: int\n\nNumber of incoming neighbors."), 0},
  {"outdegree", __pyx_getprop_6mpi4py_3MPI_8Topocomm_outdegree, 0, PyDoc_STR("outdegree: int\n\nNumber of outgoing neighbors."), 0},
  {"inoutedges", __pyx_getprop_6mpi4py_3MPI_8Topocomm_inoutedges, 0, PyDoc_STR("inoutedges: tuple[list[int], list[int]]\n\nIncoming and outgoing neighbors."), 0},
  {"inedges", __pyx_getprop_6mpi4py_3MPI_8Topocomm_inedges, 0, PyDoc_STR("inedges: list[int]\n\nIncoming neighbors."), 0},
  {"outedges", __pyx_getprop_6mpi4py_3MPI_8Topocomm_outedges, 0, PyDoc_STR("outedges: list[int]\n\nOutgoing neighbors."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot PyMPITopocomm_Type_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI_Comm},
  {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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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(*)(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(*)(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(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Cartcomm_11Shift, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Cartcomm_10Shift},
  {"Sub", (PyCFunction)(void(*)(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[] = {
  {"dim", __pyx_getprop_6mpi4py_3MPI_8Cartcomm_dim, 0, PyDoc_STR("dim: int\n\nNumber of dimensions."), 0},
  {"ndim", __pyx_getprop_6mpi4py_3MPI_8Cartcomm_ndim, 0, PyDoc_STR("ndim: int\n\nNumber of dimensions."), 0},
  {"topo", __pyx_getprop_6mpi4py_3MPI_8Cartcomm_topo, 0, PyDoc_STR("topo: tuple[list[int], list[int], list[int]]\n\nTopology information."), 0},
  {"dims", __pyx_getprop_6mpi4py_3MPI_8Cartcomm_dims, 0, PyDoc_STR("dims: list[int]\n\nDimensions."), 0},
  {"periods", __pyx_getprop_6mpi4py_3MPI_8Cartcomm_periods, 0, PyDoc_STR("periods: list[int]\n\nPeriodicity."), 0},
  {"coords", __pyx_getprop_6mpi4py_3MPI_8Cartcomm_coords, 0, PyDoc_STR("coords: list[int]\n\nCoordinates."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot PyMPICartcomm_Type_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI_Comm},
  {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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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(*)(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(*)(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(*)(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(*)(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[] = {
  {"dims", __pyx_getprop_6mpi4py_3MPI_9Graphcomm_dims, 0, PyDoc_STR("dims: tuple[int, int]\n\nNumber of nodes and edges."), 0},
  {"nnodes", __pyx_getprop_6mpi4py_3MPI_9Graphcomm_nnodes, 0, PyDoc_STR("nnodes: int\n\nNumber of nodes."), 0},
  {"nedges", __pyx_getprop_6mpi4py_3MPI_9Graphcomm_nedges, 0, PyDoc_STR("nedges: int\n\nNumber of edges."), 0},
  {"topo", __pyx_getprop_6mpi4py_3MPI_9Graphcomm_topo, 0, PyDoc_STR("topo: tuple[list[int], list[int]]\n\nTopology information."), 0},
  {"index", __pyx_getprop_6mpi4py_3MPI_9Graphcomm_index, 0, PyDoc_STR("index: list[int]\n\nIndex."), 0},
  {"edges", __pyx_getprop_6mpi4py_3MPI_9Graphcomm_edges, 0, PyDoc_STR("edges: list[int]\n\nEdges."), 0},
  {"nneighbors", __pyx_getprop_6mpi4py_3MPI_9Graphcomm_nneighbors, 0, PyDoc_STR("nneighbors: int\n\nNumber of neighbors."), 0},
  {"neighbors", __pyx_getprop_6mpi4py_3MPI_9Graphcomm_neighbors, 0, PyDoc_STR("neighbors: list[int]\n\nNeighbors."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot PyMPIGraphcomm_Type_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI_Comm},
  {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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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(*)(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(*)(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_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI_Comm},
  {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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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(*)(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(*)(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(*)(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(*)(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[] = {
  {"remote_group", __pyx_getprop_6mpi4py_3MPI_9Intercomm_remote_group, 0, PyDoc_STR("remote_group: Group\n\nRemote group."), 0},
  {"remote_size", __pyx_getprop_6mpi4py_3MPI_9Intercomm_remote_size, 0, PyDoc_STR("remote_size: int\n\nNumber of remote processes."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot PyMPIIntercomm_Type_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI_Comm},
  {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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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;
  o = __Pyx_AllocateExtensionType(t, 0);
  if (unlikely(!o)) return 0;
  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(__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);
  PyTypeObject *tp = Py_TYPE(o);
  #if CYTHON_USE_TYPE_SLOTS
  (*tp->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  Py_DECREF(tp);
  #endif
}

static int __pyx_tp_traverse_6mpi4py_3MPI_Win(PyObject *o, visitproc v, void *a) {
  int e;
  struct PyMPIWinObject *p = (struct PyMPIWinObject *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_11fromhandle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_10fromhandle},
  {"free", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_13free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_12free},
  {"Create", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_15Create, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_14Create},
  {"Allocate", (PyCFunction)(void(*)(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(*)(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(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_25Attach, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_24Attach},
  {"Detach", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_27Detach, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_26Detach},
  {"Free", (PyCFunction)(void(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_47tomemory, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_46tomemory},
  {"Put", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_51Put, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_50Put},
  {"Get", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_53Get, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_52Get},
  {"Accumulate", (PyCFunction)(void(*)(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(*)(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(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_63Rput, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_62Rput},
  {"Rget", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_65Rget, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_64Rget},
  {"Raccumulate", (PyCFunction)(void(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_71Fence, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_70Fence},
  {"Start", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_73Start, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_72Start},
  {"Complete", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_75Complete, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_74Complete},
  {"Post", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_77Post, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_76Post},
  {"Wait", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_79Wait, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_78Wait},
  {"Test", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_81Test, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_80Test},
  {"Lock", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_83Lock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_82Lock},
  {"Unlock", (PyCFunction)(void(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_111Set_name, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_110Set_name},
  {"toint", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_113toint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_112toint},
  {"fromint", (PyCFunction)__pyx_pw_6mpi4py_3MPI_3Win_115fromint, METH_O, __pyx_doc_6mpi4py_3MPI_3Win_114fromint},
  {"py2f", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_117py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_116py2f},
  {"f2py", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_119f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_118f2py},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Win[] = {
  {"handle", __pyx_getprop_6mpi4py_3MPI_3Win_handle, 0, PyDoc_STR("handle: int\n\nMPI handle."), 0},
  {"info", __pyx_getprop_6mpi4py_3MPI_3Win_info, __pyx_setprop_6mpi4py_3MPI_3Win_info, PyDoc_STR("info: Info\n\nInfo hints."), 0},
  {"group", __pyx_getprop_6mpi4py_3MPI_3Win_group, 0, PyDoc_STR("group: Group\n\nGroup."), 0},
  {"group_size", __pyx_getprop_6mpi4py_3MPI_3Win_group_size, 0, PyDoc_STR("group_size: int\n\nGroup size."), 0},
  {"group_rank", __pyx_getprop_6mpi4py_3MPI_3Win_group_rank, 0, PyDoc_STR("group_rank: int\n\nGroup rank."), 0},
  {"attrs", __pyx_getprop_6mpi4py_3MPI_3Win_attrs, 0, PyDoc_STR("attrs: tuple[int, int, int]\n\nAttributes."), 0},
  {"flavor", __pyx_getprop_6mpi4py_3MPI_3Win_flavor, 0, PyDoc_STR("flavor: int\n\nCreate flavor."), 0},
  {"model", __pyx_getprop_6mpi4py_3MPI_3Win_model, 0, PyDoc_STR("model: int\n\nMemory model."), 0},
  {"name", __pyx_getprop_6mpi4py_3MPI_3Win_name, __pyx_setprop_6mpi4py_3MPI_3Win_name, PyDoc_STR("name: str\n\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 = {
  __pyx_pw_6mpi4py_3MPI_3Win_49__getbuffer__, /*bf_getbuffer*/
  0, /*bf_releasebuffer*/
};
#endif
static PyMemberDef PyMPIWin_Type_members[] = {
  #if !CYTHON_USE_TYPE_SLOTS
  {"__weaklistoffset__", T_PYSSIZET, offsetof(struct PyMPIWinObject, __weakref__), READONLY, 0},
  #endif
  {0, 0, 0, 0, 0}
};
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x03090000
#if defined(__GNUC__) || defined(__clang__)
#warning "src/mpi4py/MPI.pxd:180:16: : __weakref__ is unsupported in the Limited API when running on Python <3.9."
#elif defined(_MSC_VER)
#pragma message("src/mpi4py/MPI.pxd:180:16: : __weakref__ is unsupported in the Limited API when running on Python <3.9.")
#endif
#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},
  {Py_tp_members, (void*)PyMPIWin_Type_members},
  {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*/
  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*/
  0, /*nb_int*/
  0, /*nb_long (reserved)*/
  0, /*nb_float*/
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  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*/
  0, /*nb_matrix_multiply*/
  0, /*nb_inplace_matrix_multiply*/
};

static PyBufferProcs __pyx_tp_as_buffer_Win = {
  __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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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;
  o = __Pyx_AllocateExtensionType(t, 0);
  if (unlikely(!o)) return 0;
  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(__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);
  }
  PyTypeObject *tp = Py_TYPE(o);
  #if CYTHON_USE_TYPE_SLOTS
  (*tp->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  Py_DECREF(tp);
  #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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_11fromhandle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_10fromhandle},
  {"free", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_13free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_12free},
  {"Open", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_15Open, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_14Open},
  {"Close", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_17Close, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_16Close},
  {"Delete", (PyCFunction)(void(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_131Call_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_130Call_errhandler},
  {"toint", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_133toint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_132toint},
  {"fromint", (PyCFunction)__pyx_pw_6mpi4py_3MPI_4File_135fromint, METH_O, __pyx_doc_6mpi4py_3MPI_4File_134fromint},
  {"py2f", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_137py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_136py2f},
  {"f2py", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_139f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_138f2py},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_File[] = {
  {"handle", __pyx_getprop_6mpi4py_3MPI_4File_handle, 0, PyDoc_STR("handle: int\n\nMPI handle."), 0},
  {"size", __pyx_getprop_6mpi4py_3MPI_4File_size, 0, PyDoc_STR("size: int\n\nSize (in bytes)."), 0},
  {"amode", __pyx_getprop_6mpi4py_3MPI_4File_amode, 0, PyDoc_STR("amode: int\n\nAccess mode."), 0},
  {"group", __pyx_getprop_6mpi4py_3MPI_4File_group, 0, PyDoc_STR("group: Group\n\nGroup."), 0},
  {"group_size", __pyx_getprop_6mpi4py_3MPI_4File_group_size, 0, PyDoc_STR("group_size: int\n\nGroup size."), 0},
  {"group_rank", __pyx_getprop_6mpi4py_3MPI_4File_group_rank, 0, PyDoc_STR("group_rank: int\n\nGroup rank."), 0},
  {"info", __pyx_getprop_6mpi4py_3MPI_4File_info, __pyx_setprop_6mpi4py_3MPI_4File_info, PyDoc_STR("info: Info\n\nInfo hints."), 0},
  {"atomicity", __pyx_getprop_6mpi4py_3MPI_4File_atomicity, __pyx_setprop_6mpi4py_3MPI_4File_atomicity, PyDoc_STR("atomicity: bool\n\nAtomicity mode."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyMemberDef PyMPIFile_Type_members[] = {
  #if !CYTHON_USE_TYPE_SLOTS
  {"__weaklistoffset__", T_PYSSIZET, offsetof(struct PyMPIFileObject, __weakref__), READONLY, 0},
  #endif
  {0, 0, 0, 0, 0}
};
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x03090000
#if defined(__GNUC__) || defined(__clang__)
#warning "src/mpi4py/MPI.pxd:189:16: : __weakref__ is unsupported in the Limited API when running on Python <3.9."
#elif defined(_MSC_VER)
#pragma message("src/mpi4py/MPI.pxd:189:16: : __weakref__ is unsupported in the Limited API when running on Python <3.9.")
#endif
#endif
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},
  {Py_tp_members, (void*)PyMPIFile_Type_members},
  {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*/
  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*/
  0, /*nb_int*/
  0, /*nb_long (reserved)*/
  0, /*nb_float*/
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  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*/
  0, /*nb_matrix_multiply*/
  0, /*nb_inplace_matrix_multiply*/
};

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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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;
  o = __Pyx_AllocateExtensionType(t, 1);
  if (unlikely(!o)) return 0;
  if (unlikely(__pyx_pw_6mpi4py_3MPI_6_PyMem_1__cinit__(o, __pyx_mstate_global->__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);
  }
  PyTypeObject *tp = Py_TYPE(o);
  #if CYTHON_USE_TYPE_SLOTS
  (*tp->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  Py_DECREF(tp);
  #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 = {
  __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 = {
  __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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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;
  o = __Pyx_AllocateExtensionType(t, 1);
  if (unlikely(!o)) return 0;
  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);
  }
  PyTypeObject *tp = Py_TYPE(o);
  #if CYTHON_USE_TYPE_SLOTS
  (*tp->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  Py_DECREF(tp);
  #endif
}

static PyObject *__pyx_sq_item_6mpi4py_3MPI_buffer(PyObject *o, Py_ssize_t i) {
  PyObject *r;
  PyObject *x = PyLong_FromSsize_t(i); if(!x) return 0;
  #if CYTHON_USE_TYPE_SLOTS || (!CYTHON_USE_TYPE_SPECS && __PYX_LIMITED_VERSION_HEX < 0x030A0000)
  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
  #else
  r = ((binaryfunc)PyType_GetSlot(Py_TYPE(o), Py_mp_subscript))(o, x);
  #endif
  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_GetFullyQualifiedName(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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6buffer_5allocate, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6buffer_4allocate},
  {"frombuffer", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6buffer_7frombuffer, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6buffer_6frombuffer},
  {"fromaddress", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6buffer_9fromaddress, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6buffer_8fromaddress},
  {"cast", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6buffer_11cast, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6buffer_10cast},
  {"tobytes", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6buffer_13tobytes, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6buffer_12tobytes},
  {"toreadonly", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6buffer_15toreadonly, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6buffer_14toreadonly},
  {"release", (PyCFunction)(void(*)(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[] = {
  {"address", __pyx_getprop_6mpi4py_3MPI_6buffer_address, 0, PyDoc_STR("address: int\n\nBuffer address."), 0},
  {"obj", __pyx_getprop_6mpi4py_3MPI_6buffer_obj, 0, PyDoc_STR("obj: Buffer | None\n\nObject exposing buffer."), 0},
  {"nbytes", __pyx_getprop_6mpi4py_3MPI_6buffer_nbytes, 0, PyDoc_STR("nbytes: int\n\nBuffer size (in bytes)."), 0},
  {"readonly", __pyx_getprop_6mpi4py_3MPI_6buffer_readonly, 0, PyDoc_STR("readonly: bool\n\nBuffer is read-only."), 0},
  {"format", __pyx_getprop_6mpi4py_3MPI_6buffer_format, 0, PyDoc_STR("format: str\n\nFormat of each element."), 0},
  {"itemsize", __pyx_getprop_6mpi4py_3MPI_6buffer_itemsize, 0, PyDoc_STR("itemsize: int\n\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 = {
  __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 = {
  __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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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_BottomType __pyx_vtable_6mpi4py_3MPI_BottomType;

static PyObject *__pyx_tp_new_6mpi4py_3MPI_BottomType(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_6mpi4py_3MPI_BottomType *p;
  PyObject *o;
  o = __Pyx_AllocateExtensionType(t, 1);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_6mpi4py_3MPI_BottomType *)o);
  p->__pyx_vtab = __pyx_vtabptr_6mpi4py_3MPI_BottomType;
  return o;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI_BottomType(PyObject *o) {
  PyTypeObject *tp = Py_TYPE(o);
  #if CYTHON_USE_TYPE_SLOTS
  (*tp->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  Py_DECREF(tp);
  #endif
}

static PyObject *__pyx_tp_richcompare_6mpi4py_3MPI_BottomType(PyObject *o1, PyObject *o2, int op) {
  switch (op) {
    case Py_EQ: {
      return __pyx_pw_6mpi4py_3MPI_10BottomType_9__eq__(o1, o2);
    }
    case Py_NE: {
      return __pyx_pw_6mpi4py_3MPI_10BottomType_11__ne__(o1, o2);
    }
    default: {
      return __Pyx_NewRef(Py_NotImplemented);
    }
  }
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_BottomType[] = {
  {"__reduce__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_10BottomType_17__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_10BottomType_16__reduce__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
#if !CYTHON_COMPILING_IN_LIMITED_API

static PyBufferProcs __pyx_tp_as_buffer_BottomType = {
  __pyx_pw_6mpi4py_3MPI_10BottomType_13__getbuffer__, /*bf_getbuffer*/
  0, /*bf_releasebuffer*/
};
#endif
static PyType_Slot __pyx_type_6mpi4py_3MPI_BottomType_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI_BottomType},
  {Py_tp_repr, (void *)__pyx_pw_6mpi4py_3MPI_10BottomType_15__repr__},
  {Py_nb_bool, (void *)__pyx_pw_6mpi4py_3MPI_10BottomType_1__bool__},
  {Py_nb_int, (void *)__pyx_pw_6mpi4py_3MPI_10BottomType_3__int__},
  {Py_nb_index, (void *)__pyx_pw_6mpi4py_3MPI_10BottomType_5__index__},
  {Py_tp_hash, (void *)__pyx_pw_6mpi4py_3MPI_10BottomType_7__hash__},
  #if defined(Py_bf_getbuffer)
  {Py_bf_getbuffer, (void *)__pyx_pw_6mpi4py_3MPI_10BottomType_13__getbuffer__},
  #endif
  {Py_tp_doc, (void *)PyDoc_STR("\n    Type of `BOTTOM`.\n    ")},
  {Py_tp_richcompare, (void *)__pyx_tp_richcompare_6mpi4py_3MPI_BottomType},
  {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,
  __pyx_type_6mpi4py_3MPI_BottomType_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_BottomType = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  __pyx_pw_6mpi4py_3MPI_10BottomType_1__bool__, /*nb_bool*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  __pyx_pw_6mpi4py_3MPI_10BottomType_3__int__, /*nb_int*/
  0, /*nb_long (reserved)*/
  0, /*nb_float*/
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  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*/
  __pyx_pw_6mpi4py_3MPI_10BottomType_5__index__, /*nb_index*/
  0, /*nb_matrix_multiply*/
  0, /*nb_inplace_matrix_multiply*/
};

static PyBufferProcs __pyx_tp_as_buffer_BottomType = {
  __pyx_pw_6mpi4py_3MPI_10BottomType_13__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*/
  __pyx_tp_dealloc_6mpi4py_3MPI_BottomType, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  __pyx_pw_6mpi4py_3MPI_10BottomType_15__repr__, /*tp_repr*/
  &__pyx_tp_as_number_BottomType, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  __pyx_pw_6mpi4py_3MPI_10BottomType_7__hash__, /*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, /*tp_flags*/
  PyDoc_STR("\n    Type of `BOTTOM`.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_tp_richcompare_6mpi4py_3MPI_BottomType, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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_InPlaceType __pyx_vtable_6mpi4py_3MPI_InPlaceType;

static PyObject *__pyx_tp_new_6mpi4py_3MPI_InPlaceType(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_6mpi4py_3MPI_InPlaceType *p;
  PyObject *o;
  o = __Pyx_AllocateExtensionType(t, 1);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_6mpi4py_3MPI_InPlaceType *)o);
  p->__pyx_vtab = __pyx_vtabptr_6mpi4py_3MPI_InPlaceType;
  return o;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI_InPlaceType(PyObject *o) {
  PyTypeObject *tp = Py_TYPE(o);
  #if CYTHON_USE_TYPE_SLOTS
  (*tp->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  Py_DECREF(tp);
  #endif
}

static PyObject *__pyx_tp_richcompare_6mpi4py_3MPI_InPlaceType(PyObject *o1, PyObject *o2, int op) {
  switch (op) {
    case Py_EQ: {
      return __pyx_pw_6mpi4py_3MPI_11InPlaceType_7__eq__(o1, o2);
    }
    case Py_NE: {
      return __pyx_pw_6mpi4py_3MPI_11InPlaceType_9__ne__(o1, o2);
    }
    default: {
      return __Pyx_NewRef(Py_NotImplemented);
    }
  }
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_InPlaceType[] = {
  {"__reduce__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_11InPlaceType_15__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_11InPlaceType_14__reduce__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
#if !CYTHON_COMPILING_IN_LIMITED_API

static PyBufferProcs __pyx_tp_as_buffer_InPlaceType = {
  __pyx_pw_6mpi4py_3MPI_11InPlaceType_11__getbuffer__, /*bf_getbuffer*/
  0, /*bf_releasebuffer*/
};
#endif
static PyType_Slot __pyx_type_6mpi4py_3MPI_InPlaceType_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI_InPlaceType},
  {Py_tp_repr, (void *)__pyx_pw_6mpi4py_3MPI_11InPlaceType_13__repr__},
  {Py_nb_bool, (void *)__pyx_pw_6mpi4py_3MPI_11InPlaceType_1__bool__},
  {Py_nb_int, (void *)__pyx_pw_6mpi4py_3MPI_11InPlaceType_3__int__},
  {Py_tp_hash, (void *)__pyx_pw_6mpi4py_3MPI_11InPlaceType_5__hash__},
  #if defined(Py_bf_getbuffer)
  {Py_bf_getbuffer, (void *)__pyx_pw_6mpi4py_3MPI_11InPlaceType_11__getbuffer__},
  #endif
  {Py_tp_doc, (void *)PyDoc_STR("\n    Type of `IN_PLACE`.\n    ")},
  {Py_tp_richcompare, (void *)__pyx_tp_richcompare_6mpi4py_3MPI_InPlaceType},
  {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,
  __pyx_type_6mpi4py_3MPI_InPlaceType_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_InPlaceType = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  __pyx_pw_6mpi4py_3MPI_11InPlaceType_1__bool__, /*nb_bool*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  __pyx_pw_6mpi4py_3MPI_11InPlaceType_3__int__, /*nb_int*/
  0, /*nb_long (reserved)*/
  0, /*nb_float*/
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  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*/
  0, /*nb_matrix_multiply*/
  0, /*nb_inplace_matrix_multiply*/
};

static PyBufferProcs __pyx_tp_as_buffer_InPlaceType = {
  __pyx_pw_6mpi4py_3MPI_11InPlaceType_11__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*/
  __pyx_tp_dealloc_6mpi4py_3MPI_InPlaceType, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  __pyx_pw_6mpi4py_3MPI_11InPlaceType_13__repr__, /*tp_repr*/
  &__pyx_tp_as_number_InPlaceType, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  __pyx_pw_6mpi4py_3MPI_11InPlaceType_5__hash__, /*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, /*tp_flags*/
  PyDoc_STR("\n    Type of `IN_PLACE`.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_tp_richcompare_6mpi4py_3MPI_InPlaceType, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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_BufferAutomaticType __pyx_vtable_6mpi4py_3MPI_BufferAutomaticType;

static PyObject *__pyx_tp_new_6mpi4py_3MPI_BufferAutomaticType(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *p;
  PyObject *o;
  o = __Pyx_AllocateExtensionType(t, 1);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *)o);
  p->__pyx_vtab = __pyx_vtabptr_6mpi4py_3MPI_BufferAutomaticType;
  return o;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI_BufferAutomaticType(PyObject *o) {
  PyTypeObject *tp = Py_TYPE(o);
  #if CYTHON_USE_TYPE_SLOTS
  (*tp->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  Py_DECREF(tp);
  #endif
}

static PyObject *__pyx_tp_richcompare_6mpi4py_3MPI_BufferAutomaticType(PyObject *o1, PyObject *o2, int op) {
  switch (op) {
    case Py_EQ: {
      return __pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_7__eq__(o1, o2);
    }
    case Py_NE: {
      return __pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_9__ne__(o1, o2);
    }
    default: {
      return __Pyx_NewRef(Py_NotImplemented);
    }
  }
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_BufferAutomaticType[] = {
  {"__reduce__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_15__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_19BufferAutomaticType_14__reduce__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
#if !CYTHON_COMPILING_IN_LIMITED_API

static PyBufferProcs __pyx_tp_as_buffer_BufferAutomaticType = {
  __pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_11__getbuffer__, /*bf_getbuffer*/
  0, /*bf_releasebuffer*/
};
#endif
static PyType_Slot __pyx_type_6mpi4py_3MPI_BufferAutomaticType_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI_BufferAutomaticType},
  {Py_tp_repr, (void *)__pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_13__repr__},
  {Py_nb_bool, (void *)__pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_1__bool__},
  {Py_nb_int, (void *)__pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_3__int__},
  {Py_tp_hash, (void *)__pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_5__hash__},
  #if defined(Py_bf_getbuffer)
  {Py_bf_getbuffer, (void *)__pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_11__getbuffer__},
  #endif
  {Py_tp_doc, (void *)PyDoc_STR("\n    Type of `BUFFER_AUTOMATIC`.\n    ")},
  {Py_tp_richcompare, (void *)__pyx_tp_richcompare_6mpi4py_3MPI_BufferAutomaticType},
  {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,
  __pyx_type_6mpi4py_3MPI_BufferAutomaticType_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_BufferAutomaticType = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  __pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_1__bool__, /*nb_bool*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  __pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_3__int__, /*nb_int*/
  0, /*nb_long (reserved)*/
  0, /*nb_float*/
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  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*/
  0, /*nb_matrix_multiply*/
  0, /*nb_inplace_matrix_multiply*/
};

static PyBufferProcs __pyx_tp_as_buffer_BufferAutomaticType = {
  __pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_11__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*/
  __pyx_tp_dealloc_6mpi4py_3MPI_BufferAutomaticType, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  __pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_13__repr__, /*tp_repr*/
  &__pyx_tp_as_number_BufferAutomaticType, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  __pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_5__hash__, /*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, /*tp_flags*/
  PyDoc_STR("\n    Type of `BUFFER_AUTOMATIC`.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_tp_richcompare_6mpi4py_3MPI_BufferAutomaticType, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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;
  o = __Pyx_AllocateExtensionType(t, 1);
  if (unlikely(!o)) return 0;
  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);
  PyTypeObject *tp = Py_TYPE(o);
  #if CYTHON_USE_TYPE_SLOTS
  (*tp->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  Py_DECREF(tp);
  #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;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  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[] = {
  {"copy_fn", __pyx_getprop_6mpi4py_3MPI_9_p_keyval_copy_fn, __pyx_setprop_6mpi4py_3MPI_9_p_keyval_copy_fn, 0, 0},
  {"delete_fn", __pyx_getprop_6mpi4py_3MPI_9_p_keyval_delete_fn, __pyx_setprop_6mpi4py_3MPI_9_p_keyval_delete_fn, 0, 0},
  {"nopython", __pyx_getprop_6mpi4py_3MPI_9_p_keyval_nopython, __pyx_setprop_6mpi4py_3MPI_9_p_keyval_nopython, 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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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;
  o = __Pyx_AllocateExtensionType(t, 1);
  if (unlikely(!o)) return 0;
  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_mstate_global->__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);
  PyTypeObject *tp = Py_TYPE(o);
  #if CYTHON_USE_TYPE_SLOTS
  (*tp->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  Py_DECREF(tp);
  #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;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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;
  o = __Pyx_AllocateExtensionType(t, 1);
  if (unlikely(!o)) return 0;
  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);
  PyTypeObject *tp = Py_TYPE(o);
  #if CYTHON_USE_TYPE_SLOTS
  (*tp->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  Py_DECREF(tp);
  #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;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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;
  o = __Pyx_AllocateExtensionType(t, 1);
  if (unlikely(!o)) return 0;
  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);
  PyTypeObject *tp = Py_TYPE(o);
  #if CYTHON_USE_TYPE_SLOTS
  (*tp->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  Py_DECREF(tp);
  #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;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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;
  o = __Pyx_AllocateExtensionType(t, 1);
  if (unlikely(!o)) return 0;
  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);
  PyTypeObject *tp = Py_TYPE(o);
  #if CYTHON_USE_TYPE_SLOTS
  (*tp->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  Py_DECREF(tp);
  #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;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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;
  o = __Pyx_AllocateExtensionType(t, 1);
  if (unlikely(!o)) return 0;
  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_mstate_global->__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);
  PyTypeObject *tp = Py_TYPE(o);
  #if CYTHON_USE_TYPE_SLOTS
  (*tp->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  Py_DECREF(tp);
  #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;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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;
  o = __Pyx_AllocateExtensionType(t, 1);
  if (unlikely(!o)) return 0;
  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_mstate_global->__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);
  PyTypeObject *tp = Py_TYPE(o);
  #if CYTHON_USE_TYPE_SLOTS
  (*tp->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  Py_DECREF(tp);
  #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;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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;
  o = __Pyx_AllocateExtensionType(t, 1);
  if (unlikely(!o)) return 0;
  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_mstate_global->__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);
  PyTypeObject *tp = Py_TYPE(o);
  #if CYTHON_USE_TYPE_SLOTS
  (*tp->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  Py_DECREF(tp);
  #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;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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;
  o = __Pyx_AllocateExtensionType(t, 1);
  if (unlikely(!o)) return 0;
  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_mstate_global->__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);
  PyTypeObject *tp = Py_TYPE(o);
  #if CYTHON_USE_TYPE_SLOTS
  (*tp->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  Py_DECREF(tp);
  #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;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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;
  o = __Pyx_AllocateExtensionType(t, 1);
  if (unlikely(!o)) return 0;
  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_mstate_global->__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);
  PyTypeObject *tp = Py_TYPE(o);
  #if CYTHON_USE_TYPE_SLOTS
  (*tp->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  Py_DECREF(tp);
  #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;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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;
  o = __Pyx_AllocateExtensionType(t, 0);
  if (unlikely(!o)) return 0;
  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(__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);
  PyTypeObject *tp = Py_TYPE(o);
  #if CYTHON_USE_TYPE_SLOTS
  (*tp->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  Py_DECREF(tp);
  #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;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  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(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Pickle_5dumps, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Pickle_4dumps},
  {"loads", (PyCFunction)(void(*)(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(*)(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(*)(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[] = {
  {"PROTOCOL", __pyx_getprop_6mpi4py_3MPI_6Pickle_PROTOCOL, __pyx_setprop_6mpi4py_3MPI_6Pickle_PROTOCOL, PyDoc_STR("PROTOCOL: int | None\n\nProtocol version."), 0},
  {"THRESHOLD", __pyx_getprop_6mpi4py_3MPI_6Pickle_THRESHOLD, __pyx_setprop_6mpi4py_3MPI_6Pickle_THRESHOLD, PyDoc_STR("THRESHOLD: int\n\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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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;
  o = __Pyx_AllocateExtensionType(t, 1);
  if (unlikely(!o)) return 0;
  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);
  PyTypeObject *tp = Py_TYPE(o);
  #if CYTHON_USE_TYPE_SLOTS
  (*tp->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  Py_DECREF(tp);
  #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;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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;
  o = __Pyx_AllocateExtensionType(t, 1);
  if (unlikely(!o)) return 0;
  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);
  PyTypeObject *tp = Py_TYPE(o);
  #if CYTHON_USE_TYPE_SLOTS
  (*tp->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  Py_DECREF(tp);
  #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;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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___pyx_defaults(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  o = __Pyx_AllocateExtensionType(t, 1);
  if (unlikely(!o)) return 0;
  return o;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI___pyx_defaults(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(__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___pyx_defaults) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyTypeObject *tp = Py_TYPE(o);
  #if CYTHON_USE_TYPE_SLOTS
  (*tp->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  Py_DECREF(tp);
  #endif
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_6mpi4py_3MPI___pyx_defaults_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI___pyx_defaults},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI___pyx_defaults},
  {0, 0},
};
static PyType_Spec __pyx_type_6mpi4py_3MPI___pyx_defaults_spec = {
  "mpi4py.MPI.__pyx_defaults",
  sizeof(struct __pyx_defaults),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER,
  __pyx_type_6mpi4py_3MPI___pyx_defaults_slots,
};
#else

static PyTypeObject __pyx_type_6mpi4py_3MPI___pyx_defaults = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""__pyx_defaults", /*tp_name*/
  sizeof(struct __pyx_defaults), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI___pyx_defaults, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*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_defaults, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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___pyx_defaults1(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  o = __Pyx_AllocateExtensionType(t, 1);
  if (unlikely(!o)) return 0;
  return o;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI___pyx_defaults1(PyObject *o) {
  struct __pyx_defaults1 *p = (struct __pyx_defaults1 *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(__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_defaults1) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->arg0);
  PyTypeObject *tp = Py_TYPE(o);
  #if CYTHON_USE_TYPE_SLOTS
  (*tp->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  Py_DECREF(tp);
  #endif
}

static int __pyx_tp_traverse_6mpi4py_3MPI___pyx_defaults1(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_defaults1 *p = (struct __pyx_defaults1 *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->arg0) {
    e = (*v)(((PyObject *)p->arg0), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6mpi4py_3MPI___pyx_defaults1(PyObject *o) {
  PyObject* tmp;
  struct __pyx_defaults1 *p = (struct __pyx_defaults1 *)o;
  tmp = ((PyObject*)p->arg0);
  p->arg0 = ((struct PyMPIInfoObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_6mpi4py_3MPI___pyx_defaults1_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI___pyx_defaults1},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_6mpi4py_3MPI___pyx_defaults1},
  {Py_tp_clear, (void *)__pyx_tp_clear_6mpi4py_3MPI___pyx_defaults1},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI___pyx_defaults1},
  {0, 0},
};
static PyType_Spec __pyx_type_6mpi4py_3MPI___pyx_defaults1_spec = {
  "mpi4py.MPI.__pyx_defaults1",
  sizeof(struct __pyx_defaults1),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC,
  __pyx_type_6mpi4py_3MPI___pyx_defaults1_slots,
};
#else

static PyTypeObject __pyx_type_6mpi4py_3MPI___pyx_defaults1 = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""__pyx_defaults1", /*tp_name*/
  sizeof(struct __pyx_defaults1), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI___pyx_defaults1, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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___pyx_defaults1, /*tp_traverse*/
  __pyx_tp_clear_6mpi4py_3MPI___pyx_defaults1, /*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_defaults1, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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___pyx_defaults2(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  o = __Pyx_AllocateExtensionType(t, 1);
  if (unlikely(!o)) return 0;
  return o;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI___pyx_defaults2(PyObject *o) {
  struct __pyx_defaults2 *p = (struct __pyx_defaults2 *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(__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_defaults2) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->arg0);
  PyTypeObject *tp = Py_TYPE(o);
  #if CYTHON_USE_TYPE_SLOTS
  (*tp->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  Py_DECREF(tp);
  #endif
}

static int __pyx_tp_traverse_6mpi4py_3MPI___pyx_defaults2(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_defaults2 *p = (struct __pyx_defaults2 *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->arg0) {
    e = (*v)(p->arg0, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6mpi4py_3MPI___pyx_defaults2(PyObject *o) {
  PyObject* tmp;
  struct __pyx_defaults2 *p = (struct __pyx_defaults2 *)o;
  tmp = ((PyObject*)p->arg0);
  p->arg0 = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_6mpi4py_3MPI___pyx_defaults2_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI___pyx_defaults2},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_6mpi4py_3MPI___pyx_defaults2},
  {Py_tp_clear, (void *)__pyx_tp_clear_6mpi4py_3MPI___pyx_defaults2},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI___pyx_defaults2},
  {0, 0},
};
static PyType_Spec __pyx_type_6mpi4py_3MPI___pyx_defaults2_spec = {
  "mpi4py.MPI.__pyx_defaults2",
  sizeof(struct __pyx_defaults2),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC,
  __pyx_type_6mpi4py_3MPI___pyx_defaults2_slots,
};
#else

static PyTypeObject __pyx_type_6mpi4py_3MPI___pyx_defaults2 = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""__pyx_defaults2", /*tp_name*/
  sizeof(struct __pyx_defaults2), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI___pyx_defaults2, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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___pyx_defaults2, /*tp_traverse*/
  __pyx_tp_clear_6mpi4py_3MPI___pyx_defaults2, /*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_defaults2, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI___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))))
  {
    o = (PyObject*)__pyx_mstate_global->__pyx_freelist_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback[--__pyx_mstate_global->__pyx_freecount_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback];
    #if CYTHON_USE_TYPE_SPECS
    Py_DECREF(Py_TYPE(o));
    #endif
    memset(o, 0, sizeof(struct __pyx_obj_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback));
    #if CYTHON_COMPILING_IN_LIMITED_API
    (void) PyObject_Init(o, t);
    #else
    (void) PyObject_INIT(o, t);
    #endif
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = __Pyx_AllocateExtensionType(t, 1);
    if (unlikely(!o)) return 0;
  }
  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(__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 (likely((int)(__pyx_mstate_global->__pyx_freecount_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI___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))))
  {
    __pyx_mstate_global->__pyx_freelist_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback[__pyx_mstate_global->__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
  {
    PyTypeObject *tp = Py_TYPE(o);
    #if CYTHON_USE_TYPE_SLOTS
    (*tp->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
    #if CYTHON_USE_TYPE_SPECS
    Py_DECREF(tp);
    #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;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  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,
  __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*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  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___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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !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}
};
/* #### Code section: initfunc_declarations ### */
static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(__pyx_mstatetype *__pyx_mstate); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_InitConstants(__pyx_mstatetype *__pyx_mstate); /*proto*/
static CYTHON_SMALL_CODE void __Pyx_CleanupGlobals(__pyx_mstatetype *__pyx_mstate); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(__pyx_mstatetype *__pyx_mstate); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(__pyx_mstatetype *__pyx_mstate); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(__pyx_mstatetype *__pyx_mstate); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(__pyx_mstatetype *__pyx_mstate); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(__pyx_mstatetype *__pyx_mstate); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(__pyx_mstatetype *__pyx_mstate); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(__pyx_mstatetype *__pyx_mstate); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_CreateCodeObjects(__pyx_mstatetype *__pyx_mstate); /*proto*/
/* #### Code section: init_module ### */

static int __Pyx_modinit_global_init_code(__pyx_mstatetype *__pyx_mstate) {
  __Pyx_RefNannyDeclarations
  CYTHON_UNUSED_VAR(__pyx_mstate);
  __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___BOTTOM__ = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___IN_PLACE__ = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___BUFFER_AUTOMATIC__ = 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__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_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___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___FLOAT16_T__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___FLOAT32_T__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___FLOAT64_T__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___BFLOAT16_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___LOGICAL16__ = ((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(__pyx_mstatetype *__pyx_mstate) {
  __Pyx_RefNannyDeclarations
  CYTHON_UNUSED_VAR(__pyx_mstate);
  __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0);
  /*--- Variable export code ---*/
  __Pyx_RefNannyFinishContext();
  return 0;
}

static int __Pyx_modinit_function_export_code(__pyx_mstatetype *__pyx_mstate) {
  __Pyx_RefNannyDeclarations
  CYTHON_UNUSED_VAR(__pyx_mstate);
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0);
  /*--- Function export code ---*/
  {
    __pyx_t_1 = __Pyx_ApiExport_GetApiDict(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    const char * __pyx_export_signature = __Pyx_PyBytes_AsString(__pyx_mstate_global->__pyx_kp_b_MPI_Comm_PyObject_MPI_Datatype_P);
    #if !CYTHON_ASSUME_SAFE_MACROS
    if (unlikely(!__pyx_export_signature)) __PYX_ERR(0, 1, __pyx_L1_error)
    #endif
    const char * __pyx_export_name = __pyx_export_signature + 570;
    void (*const __pyx_export_pointers[])(void) = {(void (*)(void))&__pyx_f_6mpi4py_3MPI_PyMPIComm_Get, (void (*)(void))&__pyx_f_6mpi4py_3MPI_PyMPIDatatype_Get, (void (*)(void))&__pyx_f_6mpi4py_3MPI_PyMPIErrhandler_Get, (void (*)(void))&__pyx_f_6mpi4py_3MPI_PyMPIFile_Get, (void (*)(void))&__pyx_f_6mpi4py_3MPI_PyMPIGroup_Get, (void (*)(void))&__pyx_f_6mpi4py_3MPI_PyMPIInfo_Get, (void (*)(void))&__pyx_f_6mpi4py_3MPI_PyMPIMessage_Get, (void (*)(void))&__pyx_f_6mpi4py_3MPI_PyMPIOp_Get, (void (*)(void))&__pyx_f_6mpi4py_3MPI_PyMPIRequest_Get, (void (*)(void))&__pyx_f_6mpi4py_3MPI_PyMPISession_Get, (void (*)(void))&__pyx_f_6mpi4py_3MPI_PyMPIStatus_Get, (void (*)(void))&__pyx_f_6mpi4py_3MPI_PyMPIWin_Get, (void (*)(void))&__pyx_f_6mpi4py_3MPI_PyMPIComm_New, (void (*)(void))&__pyx_f_6mpi4py_3MPI_PyMPIDatatype_New, (void (*)(void))&__pyx_f_6mpi4py_3MPI_PyMPIErrhandler_New, (void (*)(void))&__pyx_f_6mpi4py_3MPI_PyMPIFile_New, (void (*)(void))&__pyx_f_6mpi4py_3MPI_PyMPIGroup_New, (void (*)(void))&__pyx_f_6mpi4py_3MPI_PyMPIInfo_New, (void (*)(void))&__pyx_f_6mpi4py_3MPI_PyMPIMessage_New, (void (*)(void))&__pyx_f_6mpi4py_3MPI_PyMPIOp_New, (void (*)(void))&__pyx_f_6mpi4py_3MPI_PyMPIGrequest_New, (void (*)(void))&__pyx_f_6mpi4py_3MPI_PyMPIPrequest_New, (void (*)(void))&__pyx_f_6mpi4py_3MPI_PyMPIRequest_New, (void (*)(void))&__pyx_f_6mpi4py_3MPI_PyMPISession_New, (void (*)(void))&__pyx_f_6mpi4py_3MPI_PyMPIStatus_New, (void (*)(void))&__pyx_f_6mpi4py_3MPI_PyMPIWin_New, (void (*)(void)) NULL};
    void (*const *__pyx_export_pointer)(void) = __pyx_export_pointers;
    const char *__pyx_export_current_signature = __pyx_export_signature;
    while (*__pyx_export_pointer) {
      if (__Pyx_ExportFunction(__pyx_t_1, __pyx_export_name, *__pyx_export_pointer, __pyx_export_current_signature) < (0)) __PYX_ERR(0, 1, __pyx_L1_error)
      ++__pyx_export_pointer;
      __pyx_export_name = strchr(__pyx_export_name, '\0') + 1;
      __pyx_export_signature = strchr(__pyx_export_signature, '\0') + 1;
      if (*__pyx_export_signature != '\0') __pyx_export_current_signature = __pyx_export_signature;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_RefNannyFinishContext();
  return -1;
}

static int __Pyx_modinit_type_init_code(__pyx_mstatetype *__pyx_mstate) {
  __Pyx_RefNannyDeclarations
  CYTHON_UNUSED_VAR(__pyx_mstate);
  PyObject *__pyx_t_1 = 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_mstate->__pyx_ptype_6mpi4py_3MPI_Datatype = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &PyMPIDatatype_Type_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Datatype)) __PYX_ERR(24, 45, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPIDatatype_Type_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Datatype) < (0)) __PYX_ERR(24, 45, __pyx_L1_error)
  #else
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI_Datatype) < (0)) __PYX_ERR(24, 45, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Datatype);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Datatype->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Datatype->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Datatype->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Datatype, (PyObject *) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Datatype) < (0)) __PYX_ERR(24, 45, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Datatype->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Datatype->tp_weaklistoffset = offsetof(struct PyMPIDatatypeObject, __weakref__);
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Status = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &PyMPIStatus_Type_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Status)) __PYX_ERR(25, 1, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPIStatus_Type_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Status) < (0)) __PYX_ERR(25, 1, __pyx_L1_error)
  #else
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI_Status) < (0)) __PYX_ERR(25, 1, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Status);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Status->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Status->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Status->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Status, (PyObject *) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Status) < (0)) __PYX_ERR(25, 1, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Status->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Status->tp_weaklistoffset = offsetof(struct PyMPIStatusObject, __weakref__);
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Request = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &PyMPIRequest_Type_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Request)) __PYX_ERR(26, 1, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPIRequest_Type_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Request) < (0)) __PYX_ERR(26, 1, __pyx_L1_error)
  #else
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI_Request) < (0)) __PYX_ERR(26, 1, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Request);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Request->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Request->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Request->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Request, (PyObject *) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Request) < (0)) __PYX_ERR(26, 1, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Request->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Request->tp_weaklistoffset = offsetof(struct PyMPIRequestObject, __weakref__);
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 473, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI_Prequest)) __PYX_ERR(26, 473, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPIPrequest_Type_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Prequest) < (0)) __PYX_ERR(26, 473, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Prequest = &PyMPIPrequest_Type;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest->tp_base = __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Prequest) < (0)) __PYX_ERR(26, 473, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Prequest);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Prequest->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Prequest->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Prequest->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Prequest, (PyObject *) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Prequest) < (0)) __PYX_ERR(26, 473, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Prequest->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Prequest->tp_weaklistoffset = offsetof(struct PyMPIPrequestObject, __pyx_base.__weakref__);
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 545, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI_Grequest)) __PYX_ERR(26, 545, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPIGrequest_Type_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Grequest) < (0)) __PYX_ERR(26, 545, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Grequest = &PyMPIGrequest_Type;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Grequest->tp_base = __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Grequest) < (0)) __PYX_ERR(26, 545, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Grequest);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Grequest->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Grequest->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Grequest->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Grequest, (PyObject *) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Grequest) < (0)) __PYX_ERR(26, 545, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Grequest->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Grequest->tp_weaklistoffset = offsetof(struct PyMPIGrequestObject, __pyx_base.__weakref__);
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Message = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &PyMPIMessage_Type_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Message)) __PYX_ERR(27, 1, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPIMessage_Type_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Message) < (0)) __PYX_ERR(27, 1, __pyx_L1_error)
  #else
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI_Message) < (0)) __PYX_ERR(27, 1, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Message);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Message->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Message->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Message->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Message, (PyObject *) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Message) < (0)) __PYX_ERR(27, 1, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Message->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Message->tp_weaklistoffset = offsetof(struct PyMPIMessageObject, __weakref__);
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Op = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &PyMPIOp_Type_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Op)) __PYX_ERR(28, 1, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPIOp_Type_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Op) < (0)) __PYX_ERR(28, 1, __pyx_L1_error)
  #else
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI_Op) < (0)) __PYX_ERR(28, 1, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Op);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Op->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Op->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Op->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Op, (PyObject *) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Op) < (0)) __PYX_ERR(28, 1, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Op->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Op->tp_weaklistoffset = offsetof(struct PyMPIOpObject, __weakref__);
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Group = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &PyMPIGroup_Type_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Group)) __PYX_ERR(29, 1, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPIGroup_Type_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Group) < (0)) __PYX_ERR(29, 1, __pyx_L1_error)
  #else
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI_Group) < (0)) __PYX_ERR(29, 1, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Group);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Group->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Group->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Group->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Group, (PyObject *) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Group) < (0)) __PYX_ERR(29, 1, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Group->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Group->tp_weaklistoffset = offsetof(struct PyMPIGroupObject, __weakref__);
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Info = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &PyMPIInfo_Type_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Info)) __PYX_ERR(30, 1, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPIInfo_Type_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Info) < (0)) __PYX_ERR(30, 1, __pyx_L1_error)
  #else
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI_Info) < (0)) __PYX_ERR(30, 1, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Info);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Info->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Info->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Info->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Info, (PyObject *) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Info) < (0)) __PYX_ERR(30, 1, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Info->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Info->tp_weaklistoffset = offsetof(struct PyMPIInfoObject, __weakref__);
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Errhandler = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &PyMPIErrhandler_Type_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Errhandler)) __PYX_ERR(31, 1, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPIErrhandler_Type_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Errhandler) < (0)) __PYX_ERR(31, 1, __pyx_L1_error)
  #else
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI_Errhandler) < (0)) __PYX_ERR(31, 1, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Errhandler);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Errhandler->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Errhandler->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Errhandler->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Errhandler, (PyObject *) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Errhandler) < (0)) __PYX_ERR(31, 1, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Errhandler->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Errhandler->tp_weaklistoffset = offsetof(struct PyMPIErrhandlerObject, __weakref__);
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Session = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &PyMPISession_Type_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Session)) __PYX_ERR(32, 1, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPISession_Type_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Session) < (0)) __PYX_ERR(32, 1, __pyx_L1_error)
  #else
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI_Session) < (0)) __PYX_ERR(32, 1, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Session);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Session->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Session->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Session->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Session, (PyObject *) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Session) < (0)) __PYX_ERR(32, 1, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Session->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Session->tp_weaklistoffset = offsetof(struct PyMPISessionObject, __weakref__);
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Comm = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &PyMPIComm_Type_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Comm)) __PYX_ERR(33, 34, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPIComm_Type_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Comm) < (0)) __PYX_ERR(33, 34, __pyx_L1_error)
  #else
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI_Comm) < (0)) __PYX_ERR(33, 34, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Comm);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Comm->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Comm->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Comm->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Comm, (PyObject *) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Comm) < (0)) __PYX_ERR(33, 34, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Comm->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Comm->tp_weaklistoffset = offsetof(struct PyMPICommObject, __weakref__);
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 2185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI_Intracomm)) __PYX_ERR(33, 2185, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPIIntracomm_Type_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Intracomm) < (0)) __PYX_ERR(33, 2185, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Intracomm = &PyMPIIntracomm_Type;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm->tp_base = __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Intracomm) < (0)) __PYX_ERR(33, 2185, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Intracomm);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Intracomm->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Intracomm->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Intracomm->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Intracomm, (PyObject *) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Intracomm) < (0)) __PYX_ERR(33, 2185, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Intracomm->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Intracomm->tp_weaklistoffset = offsetof(struct PyMPIIntracommObject, __pyx_base.__weakref__);
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 2669, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI_Topocomm)) __PYX_ERR(33, 2669, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPITopocomm_Type_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Topocomm) < (0)) __PYX_ERR(33, 2669, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Topocomm = &PyMPITopocomm_Type;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Topocomm->tp_base = __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Topocomm) < (0)) __PYX_ERR(33, 2669, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Topocomm);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Topocomm->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Topocomm->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Topocomm->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Topocomm, (PyObject *) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Topocomm) < (0)) __PYX_ERR(33, 2669, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Topocomm->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Topocomm->tp_weaklistoffset = offsetof(struct PyMPITopocommObject, __pyx_base.__pyx_base.__weakref__);
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Topocomm); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 3022, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI_Cartcomm)) __PYX_ERR(33, 3022, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPICartcomm_Type_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Cartcomm) < (0)) __PYX_ERR(33, 3022, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Cartcomm = &PyMPICartcomm_Type;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Cartcomm->tp_base = __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Topocomm;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Cartcomm) < (0)) __PYX_ERR(33, 3022, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Cartcomm);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Cartcomm->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Cartcomm->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Cartcomm->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Cartcomm, (PyObject *) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Cartcomm) < (0)) __PYX_ERR(33, 3022, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Cartcomm->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Cartcomm->tp_weaklistoffset = offsetof(struct PyMPICartcommObject, __pyx_base.__pyx_base.__pyx_base.__weakref__);
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Topocomm); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 3164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI_Graphcomm)) __PYX_ERR(33, 3164, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPIGraphcomm_Type_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Graphcomm) < (0)) __PYX_ERR(33, 3164, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Graphcomm = &PyMPIGraphcomm_Type;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Graphcomm->tp_base = __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Topocomm;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Graphcomm) < (0)) __PYX_ERR(33, 3164, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Graphcomm);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Graphcomm->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Graphcomm->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Graphcomm->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Graphcomm, (PyObject *) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Graphcomm) < (0)) __PYX_ERR(33, 3164, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Graphcomm->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Graphcomm->tp_weaklistoffset = offsetof(struct PyMPIGraphcommObject, __pyx_base.__pyx_base.__pyx_base.__weakref__);
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Topocomm); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 3270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI_Distgraphcomm)) __PYX_ERR(33, 3270, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPIDistgraphcomm_Type_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Distgraphcomm) < (0)) __PYX_ERR(33, 3270, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Distgraphcomm = &PyMPIDistgraphcomm_Type;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Distgraphcomm->tp_base = __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Topocomm;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Distgraphcomm) < (0)) __PYX_ERR(33, 3270, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Distgraphcomm);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Distgraphcomm->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Distgraphcomm->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Distgraphcomm->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Distgraphcomm, (PyObject *) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Distgraphcomm) < (0)) __PYX_ERR(33, 3270, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Distgraphcomm->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Distgraphcomm->tp_weaklistoffset = offsetof(struct PyMPIDistgraphcommObject, __pyx_base.__pyx_base.__pyx_base.__weakref__);
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 3334, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI_Intercomm)) __PYX_ERR(33, 3334, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPIIntercomm_Type_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Intercomm) < (0)) __PYX_ERR(33, 3334, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Intercomm = &PyMPIIntercomm_Type;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intercomm->tp_base = __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Intercomm) < (0)) __PYX_ERR(33, 3334, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Intercomm);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Intercomm->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Intercomm->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Intercomm->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Intercomm, (PyObject *) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Intercomm) < (0)) __PYX_ERR(33, 3334, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Intercomm->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Intercomm->tp_weaklistoffset = offsetof(struct PyMPIIntercommObject, __pyx_base.__weakref__);
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Win = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &PyMPIWin_Type_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Win)) __PYX_ERR(34, 27, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Win->tp_as_buffer = &__pyx_tp_as_buffer_Win;
  if (!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Win->tp_as_buffer->bf_releasebuffer && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Win->tp_base->tp_as_buffer && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Win->tp_base->tp_as_buffer->bf_releasebuffer) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Win->tp_as_buffer->bf_releasebuffer = __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI_Win) < (0)) __PYX_ERR(34, 27, __pyx_L1_error)
  #else
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI_Win) < (0)) __PYX_ERR(34, 27, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Win);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Win->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Win->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Win->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Win, (PyObject *) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Win) < (0)) __PYX_ERR(34, 27, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Win->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Win->tp_weaklistoffset = offsetof(struct PyMPIWinObject, __weakref__);
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_File = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &PyMPIFile_Type_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_File)) __PYX_ERR(35, 51, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPIFile_Type_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_File) < (0)) __PYX_ERR(35, 51, __pyx_L1_error)
  #else
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI_File) < (0)) __PYX_ERR(35, 51, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_File);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_File->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_File->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_File->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_File, (PyObject *) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_File) < (0)) __PYX_ERR(35, 51, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_File->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_File->tp_weaklistoffset = offsetof(struct PyMPIFileObject, __weakref__);
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__PyMem = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI__PyMem_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__PyMem)) __PYX_ERR(5, 17, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__PyMem->tp_as_buffer = &__pyx_tp_as_buffer__PyMem;
  if (!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__PyMem->tp_as_buffer->bf_releasebuffer && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__PyMem->tp_base->tp_as_buffer && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__PyMem->tp_base->tp_as_buffer->bf_releasebuffer) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__PyMem->tp_as_buffer->bf_releasebuffer = __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI__PyMem) < (0)) __PYX_ERR(5, 17, __pyx_L1_error)
  #else
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI__PyMem) < (0)) __PYX_ERR(5, 17, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__PyMem);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__PyMem->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__PyMem->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__PyMem->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_buffer = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI_buffer_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_buffer)) __PYX_ERR(1, 112, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_buffer->tp_as_buffer = &__pyx_tp_as_buffer_buffer;
  if (!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_buffer->tp_as_buffer->bf_releasebuffer && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_buffer->tp_base->tp_as_buffer && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_buffer->tp_base->tp_as_buffer->bf_releasebuffer) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_buffer->tp_as_buffer->bf_releasebuffer = __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI_buffer) < (0)) __PYX_ERR(1, 112, __pyx_L1_error)
  #else
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI_buffer) < (0)) __PYX_ERR(1, 112, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_buffer);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_buffer->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_buffer->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_buffer->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_buffer, (PyObject *) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_buffer) < (0)) __PYX_ERR(1, 112, __pyx_L1_error)
  __pyx_vtabptr_6mpi4py_3MPI_BottomType = &__pyx_vtable_6mpi4py_3MPI_BottomType;
  __pyx_vtable_6mpi4py_3MPI_BottomType.as_str = (PyObject *(*)(struct __pyx_obj_6mpi4py_3MPI_BottomType *))__pyx_f_6mpi4py_3MPI_10BottomType_as_str;
  __pyx_vtable_6mpi4py_3MPI_BottomType.as_buf = (void *(*)(struct __pyx_obj_6mpi4py_3MPI_BottomType *))__pyx_f_6mpi4py_3MPI_10BottomType_as_buf;
  __pyx_vtable_6mpi4py_3MPI_BottomType.as_int = (MPI_Aint (*)(struct __pyx_obj_6mpi4py_3MPI_BottomType *))__pyx_f_6mpi4py_3MPI_10BottomType_as_int;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_BottomType = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI_BottomType_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_BottomType)) __PYX_ERR(3, 4, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_BottomType->tp_as_buffer = &__pyx_tp_as_buffer_BottomType;
  if (!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_BottomType->tp_as_buffer->bf_releasebuffer && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_BottomType->tp_base->tp_as_buffer && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_BottomType->tp_base->tp_as_buffer->bf_releasebuffer) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_BottomType->tp_as_buffer->bf_releasebuffer = __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI_BottomType) < (0)) __PYX_ERR(3, 4, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_BottomType = &__pyx_type_6mpi4py_3MPI_BottomType;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_BottomType) < (0)) __PYX_ERR(3, 4, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_BottomType);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_BottomType->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_BottomType->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_BottomType->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_BottomType, __pyx_vtabptr_6mpi4py_3MPI_BottomType) < (0)) __PYX_ERR(3, 4, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_BottomType) < (0)) __PYX_ERR(3, 4, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_BottomType, (PyObject *) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_BottomType) < (0)) __PYX_ERR(3, 4, __pyx_L1_error)
  __pyx_vtabptr_6mpi4py_3MPI_InPlaceType = &__pyx_vtable_6mpi4py_3MPI_InPlaceType;
  __pyx_vtable_6mpi4py_3MPI_InPlaceType.as_str = (PyObject *(*)(struct __pyx_obj_6mpi4py_3MPI_InPlaceType *))__pyx_f_6mpi4py_3MPI_11InPlaceType_as_str;
  __pyx_vtable_6mpi4py_3MPI_InPlaceType.as_buf = (void *(*)(struct __pyx_obj_6mpi4py_3MPI_InPlaceType *))__pyx_f_6mpi4py_3MPI_11InPlaceType_as_buf;
  __pyx_vtable_6mpi4py_3MPI_InPlaceType.as_int = (MPI_Aint (*)(struct __pyx_obj_6mpi4py_3MPI_InPlaceType *))__pyx_f_6mpi4py_3MPI_11InPlaceType_as_int;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_InPlaceType = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI_InPlaceType_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_InPlaceType)) __PYX_ERR(3, 57, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_InPlaceType->tp_as_buffer = &__pyx_tp_as_buffer_InPlaceType;
  if (!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_InPlaceType->tp_as_buffer->bf_releasebuffer && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_InPlaceType->tp_base->tp_as_buffer && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_InPlaceType->tp_base->tp_as_buffer->bf_releasebuffer) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_InPlaceType->tp_as_buffer->bf_releasebuffer = __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI_InPlaceType) < (0)) __PYX_ERR(3, 57, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_InPlaceType = &__pyx_type_6mpi4py_3MPI_InPlaceType;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_InPlaceType) < (0)) __PYX_ERR(3, 57, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_InPlaceType);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_InPlaceType->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_InPlaceType->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_InPlaceType->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_InPlaceType, __pyx_vtabptr_6mpi4py_3MPI_InPlaceType) < (0)) __PYX_ERR(3, 57, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_InPlaceType) < (0)) __PYX_ERR(3, 57, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_InPlaceType, (PyObject *) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_InPlaceType) < (0)) __PYX_ERR(3, 57, __pyx_L1_error)
  __pyx_vtabptr_6mpi4py_3MPI_BufferAutomaticType = &__pyx_vtable_6mpi4py_3MPI_BufferAutomaticType;
  __pyx_vtable_6mpi4py_3MPI_BufferAutomaticType.as_str = (PyObject *(*)(struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *))__pyx_f_6mpi4py_3MPI_19BufferAutomaticType_as_str;
  __pyx_vtable_6mpi4py_3MPI_BufferAutomaticType.as_buf = (void *(*)(struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *))__pyx_f_6mpi4py_3MPI_19BufferAutomaticType_as_buf;
  __pyx_vtable_6mpi4py_3MPI_BufferAutomaticType.as_int = (MPI_Aint (*)(struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *))__pyx_f_6mpi4py_3MPI_19BufferAutomaticType_as_int;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_BufferAutomaticType = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI_BufferAutomaticType_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_BufferAutomaticType)) __PYX_ERR(3, 107, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_BufferAutomaticType->tp_as_buffer = &__pyx_tp_as_buffer_BufferAutomaticType;
  if (!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_BufferAutomaticType->tp_as_buffer->bf_releasebuffer && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_BufferAutomaticType->tp_base->tp_as_buffer && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_BufferAutomaticType->tp_base->tp_as_buffer->bf_releasebuffer) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_BufferAutomaticType->tp_as_buffer->bf_releasebuffer = __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI_BufferAutomaticType) < (0)) __PYX_ERR(3, 107, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_BufferAutomaticType = &__pyx_type_6mpi4py_3MPI_BufferAutomaticType;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_BufferAutomaticType) < (0)) __PYX_ERR(3, 107, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_BufferAutomaticType);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_BufferAutomaticType->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_BufferAutomaticType->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_BufferAutomaticType->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_BufferAutomaticType, __pyx_vtabptr_6mpi4py_3MPI_BufferAutomaticType) < (0)) __PYX_ERR(3, 107, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_BufferAutomaticType) < (0)) __PYX_ERR(3, 107, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_BufferAutomaticType, (PyObject *) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_BufferAutomaticType) < (0)) __PYX_ERR(3, 107, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_keyval = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI__p_keyval_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_keyval)) __PYX_ERR(12, 10, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI__p_keyval_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_keyval) < (0)) __PYX_ERR(12, 10, __pyx_L1_error)
  #else
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI__p_keyval) < (0)) __PYX_ERR(12, 10, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_keyval);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_keyval->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_keyval->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_keyval->tp_getattro = PyObject_GenericGetAttr;
  }
  #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_mstate->__pyx_ptype_6mpi4py_3MPI__p_rs = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI__p_rs_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_rs)) __PYX_ERR(14, 4, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI__p_rs_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_rs) < (0)) __PYX_ERR(14, 4, __pyx_L1_error)
  #else
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI__p_rs) < (0)) __PYX_ERR(14, 4, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_rs);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_rs->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_rs->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_rs->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_rs, __pyx_vtabptr_6mpi4py_3MPI__p_rs) < (0)) __PYX_ERR(14, 4, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_rs) < (0)) __PYX_ERR(14, 4, __pyx_L1_error)
  __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_mstate->__pyx_ptype_6mpi4py_3MPI__p_greq = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI__p_greq_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_greq)) __PYX_ERR(14, 138, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI__p_greq_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_greq) < (0)) __PYX_ERR(14, 138, __pyx_L1_error)
  #else
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI__p_greq) < (0)) __PYX_ERR(14, 138, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_greq);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_greq->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_greq->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_greq->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_greq, __pyx_vtabptr_6mpi4py_3MPI__p_greq) < (0)) __PYX_ERR(14, 138, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_greq) < (0)) __PYX_ERR(14, 138, __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_mstate->__pyx_ptype_6mpi4py_3MPI__p_datarep = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI__p_datarep_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_datarep)) __PYX_ERR(19, 7, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI__p_datarep_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_datarep) < (0)) __PYX_ERR(19, 7, __pyx_L1_error)
  #else
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI__p_datarep) < (0)) __PYX_ERR(19, 7, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_datarep);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_datarep->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_datarep->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_datarep->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_datarep, __pyx_vtabptr_6mpi4py_3MPI__p_datarep) < (0)) __PYX_ERR(19, 7, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_datarep) < (0)) __PYX_ERR(19, 7, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_message = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI__p_message_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_message)) __PYX_ERR(20, 62, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI__p_message_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_message) < (0)) __PYX_ERR(20, 62, __pyx_L1_error)
  #else
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI__p_message) < (0)) __PYX_ERR(20, 62, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_message);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_message->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_message->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_message->tp_getattro = PyObject_GenericGetAttr;
  }
  #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_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_p2p)) __PYX_ERR(20, 376, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI__p_msg_p2p_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_p2p) < (0)) __PYX_ERR(20, 376, __pyx_L1_error)
  #else
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_p2p) < (0)) __PYX_ERR(20, 376, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_p2p);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_p2p->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_p2p->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_p2p->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_p2p, __pyx_vtabptr_6mpi4py_3MPI__p_msg_p2p) < (0)) __PYX_ERR(20, 376, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_p2p) < (0)) __PYX_ERR(20, 376, __pyx_L1_error)
  __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_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_cco)) __PYX_ERR(20, 436, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI__p_msg_cco_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_cco) < (0)) __PYX_ERR(20, 436, __pyx_L1_error)
  #else
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_cco) < (0)) __PYX_ERR(20, 436, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_cco);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_cco->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_cco->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_cco->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_cco, __pyx_vtabptr_6mpi4py_3MPI__p_msg_cco) < (0)) __PYX_ERR(20, 436, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_cco) < (0)) __PYX_ERR(20, 436, __pyx_L1_error)
  __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_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_ccow)) __PYX_ERR(20, 837, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI__p_msg_ccow_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_ccow) < (0)) __PYX_ERR(20, 837, __pyx_L1_error)
  #else
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_ccow) < (0)) __PYX_ERR(20, 837, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_ccow);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_ccow->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_ccow->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_ccow->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_ccow, __pyx_vtabptr_6mpi4py_3MPI__p_msg_ccow) < (0)) __PYX_ERR(20, 837, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_ccow) < (0)) __PYX_ERR(20, 837, __pyx_L1_error)
  __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_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_rma)) __PYX_ERR(20, 907, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI__p_msg_rma_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_rma) < (0)) __PYX_ERR(20, 907, __pyx_L1_error)
  #else
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_rma) < (0)) __PYX_ERR(20, 907, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_rma);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_rma->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_rma->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_rma->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_rma, __pyx_vtabptr_6mpi4py_3MPI__p_msg_rma) < (0)) __PYX_ERR(20, 907, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_rma) < (0)) __PYX_ERR(20, 907, __pyx_L1_error)
  __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_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_io)) __PYX_ERR(20, 1073, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI__p_msg_io_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_io) < (0)) __PYX_ERR(20, 1073, __pyx_L1_error)
  #else
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_io) < (0)) __PYX_ERR(20, 1073, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_io);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_io->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_io->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_io->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_io, __pyx_vtabptr_6mpi4py_3MPI__p_msg_io) < (0)) __PYX_ERR(20, 1073, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_msg_io) < (0)) __PYX_ERR(20, 1073, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Pickle = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI_Pickle_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Pickle)) __PYX_ERR(21, 26, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI_Pickle_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Pickle) < (0)) __PYX_ERR(21, 26, __pyx_L1_error)
  #else
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI_Pickle) < (0)) __PYX_ERR(21, 26, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Pickle);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Pickle->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Pickle->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Pickle->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Pickle, (PyObject *) __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Pickle) < (0)) __PYX_ERR(21, 26, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI__p_req_buf)) __PYX_ERR(21, 475, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI__p_req_buf_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_req_buf) < (0)) __PYX_ERR(21, 475, __pyx_L1_error)
  #else
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI__p_req_buf) < (0)) __PYX_ERR(21, 475, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_req_buf);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_req_buf->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_req_buf->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_req_buf->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI__p_req_obj)) __PYX_ERR(21, 495, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI__p_req_obj_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_req_obj) < (0)) __PYX_ERR(21, 495, __pyx_L1_error)
  #else
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI__p_req_obj) < (0)) __PYX_ERR(21, 495, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_req_obj);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_req_obj->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_req_obj->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI__p_req_obj->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_defaults = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI___pyx_defaults_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_defaults)) __PYX_ERR(2, 9, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI___pyx_defaults_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_defaults) < (0)) __PYX_ERR(2, 9, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_defaults = &__pyx_type_6mpi4py_3MPI___pyx_defaults;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_defaults) < (0)) __PYX_ERR(2, 9, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_defaults);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_defaults->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_defaults->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_defaults->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_defaults1 = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI___pyx_defaults1_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_defaults1)) __PYX_ERR(33, 3485, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI___pyx_defaults1_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_defaults1) < (0)) __PYX_ERR(33, 3485, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_defaults1 = &__pyx_type_6mpi4py_3MPI___pyx_defaults1;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_defaults1) < (0)) __PYX_ERR(33, 3485, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_defaults1);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_defaults1->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_defaults1->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_defaults1->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_defaults2 = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI___pyx_defaults2_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_defaults2)) __PYX_ERR(33, 3540, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI___pyx_defaults2_spec, __pyx_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_defaults2) < (0)) __PYX_ERR(33, 3540, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_defaults2 = &__pyx_type_6mpi4py_3MPI___pyx_defaults2;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_defaults2) < (0)) __PYX_ERR(33, 3540, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_defaults2);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_defaults2->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_defaults2->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_defaults2->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback)) __PYX_ERR(21, 129, __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_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback) < (0)) __PYX_ERR(21, 129, __pyx_L1_error)
  #else
  __pyx_mstate->__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_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback) < (0)) __PYX_ERR(21, 129, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback->tp_dictoffset && __pyx_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_RefNannyFinishContext();
  return -1;
}

static int __Pyx_modinit_type_import_code(__pyx_mstatetype *__pyx_mstate) {
  __Pyx_RefNannyDeclarations
  CYTHON_UNUSED_VAR(__pyx_mstate);
  __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0);
  /*--- Type import code ---*/
  __Pyx_RefNannyFinishContext();
  return 0;
}

static int __Pyx_modinit_variable_import_code(__pyx_mstatetype *__pyx_mstate) {
  __Pyx_RefNannyDeclarations
  CYTHON_UNUSED_VAR(__pyx_mstate);
  __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0);
  /*--- Variable import code ---*/
  __Pyx_RefNannyFinishContext();
  return 0;
}

static int __Pyx_modinit_function_import_code(__pyx_mstatetype *__pyx_mstate) {
  __Pyx_RefNannyDeclarations
  CYTHON_UNUSED_VAR(__pyx_mstate);
  __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0);
  /*--- Function import code ---*/
  __Pyx_RefNannyFinishContext();
  return 0;
}

#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},
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
  {Py_mod_gil, __Pyx_FREETHREADING_COMPATIBLE},
  #endif
  #if PY_VERSION_HEX >= 0x030C0000 && CYTHON_USE_MODULE_STATE
  {Py_mod_multiple_interpreters, Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED},
  #endif
  {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_USE_MODULE_STATE
      sizeof(__pyx_mstatetype), /* m_size */
    #else
      (CYTHON_PEP489_MULTI_PHASE_INIT) ? 0 : -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

/* PyModInitFuncType */
#ifndef CYTHON_NO_PYINIT_EXPORT
  #define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
#else
  #ifdef __cplusplus
  #define __Pyx_PyMODINIT_FUNC extern "C" PyObject *
  #else
  #define __Pyx_PyMODINIT_FUNC PyObject *
  #endif
#endif

__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);
}
/* ModuleCreationPEP489 */
#if CYTHON_COMPILING_IN_LIMITED_API && (__PYX_LIMITED_VERSION_HEX < 0x03090000\
      || ((defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS)) && __PYX_LIMITED_VERSION_HEX < 0x030A0000))
static PY_INT64_T __Pyx_GetCurrentInterpreterId(void) {
    {
        PyObject *module = PyImport_ImportModule("_interpreters"); // 3.13+ I think
        if (!module) {
            PyErr_Clear(); // just try the 3.8-3.12 version
            module = PyImport_ImportModule("_xxsubinterpreters");
            if (!module) goto bad;
        }
        PyObject *current = PyObject_CallMethod(module, "get_current", NULL);
        Py_DECREF(module);
        if (!current) goto bad;
        if (PyTuple_Check(current)) {
            PyObject *new_current = PySequence_GetItem(current, 0);
            Py_DECREF(current);
            current = new_current;
            if (!new_current) goto bad;
        }
        long long as_c_int = PyLong_AsLongLong(current);
        Py_DECREF(current);
        return as_c_int;
    }
  bad:
    PySys_WriteStderr("__Pyx_GetCurrentInterpreterId failed. Try setting the C define CYTHON_PEP489_MULTI_PHASE_INIT=0\n");
    return -1;
}
#endif
#if !CYTHON_USE_MODULE_STATE
static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
    static PY_INT64_T main_interpreter_id = -1;
#if CYTHON_COMPILING_IN_GRAAL && defined(GRAALPY_VERSION_NUM) && GRAALPY_VERSION_NUM > 0x19000000
    PY_INT64_T current_id = GraalPyInterpreterState_GetIDFromThreadState(PyThreadState_Get());
#elif CYTHON_COMPILING_IN_GRAAL
    PY_INT64_T current_id = PyInterpreterState_GetIDFromThreadState(PyThreadState_Get());
#elif CYTHON_COMPILING_IN_LIMITED_API && (__PYX_LIMITED_VERSION_HEX < 0x03090000\
      || ((defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS)) && __PYX_LIMITED_VERSION_HEX < 0x030A0000))
    PY_INT64_T current_id = __Pyx_GetCurrentInterpreterId();
#elif CYTHON_COMPILING_IN_LIMITED_API
    PY_INT64_T current_id = PyInterpreterState_GetID(PyInterpreterState_Get());
#else
    PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp);
#endif
    if (unlikely(current_id == -1)) {
        return -1;
    }
    if (main_interpreter_id == -1) {
        main_interpreter_id = current_id;
        return 0;
    } else if (unlikely(main_interpreter_id != current_id)) {
        PyErr_SetString(
            PyExc_ImportError,
            "Interpreter change detected - this module can only be loaded into one interpreter per process.");
        return -1;
    }
    return 0;
}
#endif
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)
{
    PyObject *value = PyObject_GetAttrString(spec, from_name);
    int result = 0;
    if (likely(value)) {
        if (allow_none || value != Py_None) {
            result = PyDict_SetItemString(moddict, to_name, value);
        }
        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 !CYTHON_USE_MODULE_STATE
    if (__Pyx_check_single_interpreter())
        return NULL;
    #endif
    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;
    moddict = PyModule_GetDict(module);
    if (unlikely(!moddict)) goto bad;
    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
{
  int stringtab_initialized = 0;
  #if CYTHON_USE_MODULE_STATE
  int pystate_addmodule_run = 0;
  #endif
  __pyx_mstatetype *__pyx_mstate = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  Py_ssize_t __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = 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;
  }
  #else
  if (__pyx_m) return __Pyx_NewRef(__pyx_m);
  #endif
  /*--- Module creation code ---*/
  #if CYTHON_PEP489_MULTI_PHASE_INIT
  __pyx_t_1 = __pyx_pyinit_module;
  Py_INCREF(__pyx_t_1);
  #else
  __pyx_t_1 = PyModule_Create(&__pyx_moduledef); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  #if CYTHON_USE_MODULE_STATE
  {
    int add_module_result = __Pyx_State_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(0, 1, __pyx_L1_error)
    pystate_addmodule_run = 1;
  }
  #else
  __pyx_m = __pyx_t_1;
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
  PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_NOT_USED);
  #endif
  __pyx_mstate = __pyx_mstate_global;
  CYTHON_UNUSED_VAR(__pyx_t_1);
  __pyx_mstate->__pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_mstate->__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error)
  Py_INCREF(__pyx_mstate->__pyx_d);
  __pyx_mstate->__pyx_b = __Pyx_PyImport_AddModuleRef(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_mstate->__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_cython_runtime = __Pyx_PyImport_AddModuleRef("cython_runtime"); if (unlikely(!__pyx_mstate->__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_mstate->__pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  /* ImportRefnannyAPI */
  #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("PyInit_MPI", 0);
  __Pyx_init_runtime_version();
  if (__Pyx_check_binary_version(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API) < (0)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_mstate->__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_mstate->__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_mstate->__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
  /*--- Library function declarations ---*/
  /*--- Initialize various global constants etc. ---*/
  if (__Pyx_InitConstants(__pyx_mstate) < (0)) __PYX_ERR(0, 1, __pyx_L1_error)
  stringtab_initialized = 1;
  if (__Pyx_InitGlobals() < (0)) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__pyx_module_is_main_mpi4py__MPI) {
    if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_name, __pyx_mstate_global->__pyx_n_u_main) < (0)) __PYX_ERR(0, 1, __pyx_L1_error)
  }
  {
    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error)
    if (!PyDict_GetItemString(modules, "mpi4py.MPI")) {
      if (unlikely((PyDict_SetItemString(modules, "mpi4py.MPI", __pyx_m) < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
    }
  }
  /*--- Builtin init code ---*/
  if (__Pyx_InitCachedBuiltins(__pyx_mstate) < (0)) __PYX_ERR(0, 1, __pyx_L1_error)
  /*--- Constants init code ---*/
  if (__Pyx_InitCachedConstants(__pyx_mstate) < (0)) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_CreateCodeObjects(__pyx_mstate) < (0)) __PYX_ERR(0, 1, __pyx_L1_error)
  /*--- Global type/function init code ---*/
  (void)__Pyx_modinit_global_init_code(__pyx_mstate);
  (void)__Pyx_modinit_variable_export_code(__pyx_mstate);
  if (unlikely((__Pyx_modinit_function_export_code(__pyx_mstate) < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
  if (unlikely((__Pyx_modinit_type_init_code(__pyx_mstate) < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
  (void)__Pyx_modinit_type_import_code(__pyx_mstate);
  (void)__Pyx_modinit_variable_import_code(__pyx_mstate);
  (void)__Pyx_modinit_function_import_code(__pyx_mstate);
  /*--- Execution code ---*/

  /* "src/mpi4py/MPI.src/MPI.pyx":3
 * # -----------------------------------------------------------------------------
 * 
 * __doc__ = """Message Passing Interface."""             # <<<<<<<<<<<<<<
 * 
 * from mpi4py.libmpi cimport *
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_doc, __pyx_mstate_global->__pyx_kp_u_Message_Passing_Interface) < (0)) __PYX_ERR(36, 3, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/atimport.pxi":76
 * 
 * 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":77
 * 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":78
 * 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":79
 * 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":80
 * 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":81
 * 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":82
 * 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":83
 * 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":328
 * 
 * 
 * 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":329
 * 
 * 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":330
 * 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":349
 * 
 * 
 * cdef int abort_status = 0             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_v_6mpi4py_3MPI_abort_status = 0;

  /* "src/mpi4py/MPI.src/atimport.pxi":362
 * 
 * 
 * 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(4, 362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(4, 362, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(4, 362, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_1_set_abort_status, 0, __pyx_mstate_global->__pyx_n_u_set_abort_status, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[1])); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_set_abort_status, __pyx_t_3) < (0)) __PYX_ERR(4, 362, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/atimport.pxi":377
 *     enum: PyMPI_ERR_UNAVAILABLE
 * 
 * cdef object MPIException = <object>PyExc_RuntimeError             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __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":412
 *     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(36, 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(36, 11, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asbuffer.pxi":55
 * 
 * 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":56
 * 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":131
 *         PyMPI_ReleaseBuffer(self.kind, &self.view)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def allocate(
 *         Aint nbytes: int,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_nbytes, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(1, 131, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_clear, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(1, 131, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_buffer) < (0)) __PYX_ERR(1, 131, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6buffer_5allocate, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_buffer_allocate, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[2])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[14]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_buffer, __pyx_mstate_global->__pyx_n_u_allocate, __pyx_t_2) < (0)) __PYX_ERR(1, 131, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_3 = NULL;
  __Pyx_GetNameInClass(__pyx_t_5, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_buffer, __pyx_mstate_global->__pyx_n_u_allocate); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_5};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_staticmethod, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 131, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_buffer, __pyx_mstate_global->__pyx_n_u_allocate, __pyx_t_2) < (0)) __PYX_ERR(1, 131, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":146
 *         return buf
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def frombuffer(
 *         obj: Buffer,
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_obj, __pyx_mstate_global->__pyx_n_u_Buffer) < (0)) __PYX_ERR(1, 146, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_readonly, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(1, 146, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_buffer) < (0)) __PYX_ERR(1, 146, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6buffer_7frombuffer, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_buffer_frombuffer, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[3])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[14]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_buffer, __pyx_mstate_global->__pyx_n_u_frombuffer, __pyx_t_5) < (0)) __PYX_ERR(1, 146, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_2 = NULL;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_buffer, __pyx_mstate_global->__pyx_n_u_frombuffer); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_3};
    __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_staticmethod, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 146, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
  }
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_buffer, __pyx_mstate_global->__pyx_n_u_frombuffer, __pyx_t_5) < (0)) __PYX_ERR(1, 146, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":159
 *         return buf
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def fromaddress(
 *         address: int,
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_address, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(1, 159, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_nbytes, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(1, 159, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_readonly, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(1, 159, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_buffer) < (0)) __PYX_ERR(1, 159, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6buffer_9fromaddress, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_buffer_fromaddress, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[4])); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[14]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_buffer, __pyx_mstate_global->__pyx_n_u_fromaddress, __pyx_t_3) < (0)) __PYX_ERR(1, 159, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_5 = NULL;
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_buffer, __pyx_mstate_global->__pyx_n_u_fromaddress); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_2};
    __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_staticmethod, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 159, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_buffer, __pyx_mstate_global->__pyx_n_u_fromaddress, __pyx_t_3) < (0)) __PYX_ERR(1, 159, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":216
 *     # memoryview methods
 * 
 *     def cast(             # <<<<<<<<<<<<<<
 *         self,
 *         format: str,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_format, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(1, 216, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_shape, __pyx_mstate_global->__pyx_kp_u_list_int_tuple_int) < (0)) __PYX_ERR(1, 216, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_memoryview) < (0)) __PYX_ERR(1, 216, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6buffer_11cast, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_buffer_cast, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[5])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[15]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_buffer, __pyx_mstate_global->__pyx_n_u_cast, __pyx_t_2) < (0)) __PYX_ERR(1, 216, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":230
 *             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(1, 230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_order, __pyx_mstate_global->__pyx_kp_u_str_None) < (0)) __PYX_ERR(1, 230, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bytes) < (0)) __PYX_ERR(1, 230, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6buffer_13tobytes, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_buffer_tobytes, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[6])); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_buffer, __pyx_mstate_global->__pyx_n_u_tobytes, __pyx_t_3) < (0)) __PYX_ERR(1, 230, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":236
 *         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(1, 236, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_buffer) < (0)) __PYX_ERR(1, 236, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6buffer_15toreadonly, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_buffer_toreadonly, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[7])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 236, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_buffer, __pyx_mstate_global->__pyx_n_u_toreadonly, __pyx_t_2) < (0)) __PYX_ERR(1, 236, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":246
 *         return buf
 * 
 *     def release(self) -> None:             # <<<<<<<<<<<<<<
 *         """Release the underlying buffer exposed by the buffer object."""
 *         PyMPI_ReleaseBuffer(self.kind, &self.view)
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 246, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(1, 246, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6buffer_17release, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_buffer_release, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[8])); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 246, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_buffer, __pyx_mstate_global->__pyx_n_u_release, __pyx_t_3) < (0)) __PYX_ERR(1, 246, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":313
 * 
 * 
 * memory = buffer  # Backward compatibility alias             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_memory, ((PyObject *)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_buffer)) < (0)) __PYX_ERR(1, 313, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/constant.pxi":45
 *         return self.as_str()
 * 
 *     def __reduce__(self) -> str:             # <<<<<<<<<<<<<<
 *         return self.as_str()
 * 
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(3, 45, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_10BottomType_17__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BottomType___reduce, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[9])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_BottomType, __pyx_mstate_global->__pyx_n_u_reduce, __pyx_t_2) < (0)) __PYX_ERR(3, 45, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/constant.pxi":49
 * 
 * 
 * cdef object __BOTTOM__ = BottomType()             # <<<<<<<<<<<<<<
 * 
 * cdef inline bint is_BOTTOM(object obj):
*/
  __pyx_t_3 = NULL;
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_BottomType, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 49, __pyx_L1_error)
    __Pyx_GOTREF((PyObject *)__pyx_t_2);
  }
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI___BOTTOM__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___BOTTOM__, ((PyObject *)__pyx_t_2));
  __Pyx_GIVEREF((PyObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/constant.pxi":95
 *         return self.as_str()
 * 
 *     def __reduce__(self) -> str:             # <<<<<<<<<<<<<<
 *         return self.as_str()
 * 
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(3, 95, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_11InPlaceType_15__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_InPlaceType___reduce, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[10])); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_InPlaceType, __pyx_mstate_global->__pyx_n_u_reduce, __pyx_t_3) < (0)) __PYX_ERR(3, 95, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/constant.pxi":99
 * 
 * 
 * cdef object __IN_PLACE__ = InPlaceType()             # <<<<<<<<<<<<<<
 * 
 * cdef inline bint is_IN_PLACE(object obj):
*/
  __pyx_t_2 = NULL;
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_InPlaceType, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 99, __pyx_L1_error)
    __Pyx_GOTREF((PyObject *)__pyx_t_3);
  }
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI___IN_PLACE__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___IN_PLACE__, ((PyObject *)__pyx_t_3));
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/constant.pxi":145
 *         return self.as_str()
 * 
 *     def __reduce__(self) -> str:             # <<<<<<<<<<<<<<
 *         return self.as_str()
 * 
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(3, 145, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_19BufferAutomaticType_15__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BufferAutomaticType___reduce, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[11])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_BufferAutomaticType, __pyx_mstate_global->__pyx_n_u_reduce, __pyx_t_2) < (0)) __PYX_ERR(3, 145, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/constant.pxi":149
 * 
 * 
 * cdef object __BUFFER_AUTOMATIC__ = BufferAutomaticType()             # <<<<<<<<<<<<<<
 * 
 * cdef inline bint is_BUFFER_AUTOMATIC(object obj):
*/
  __pyx_t_3 = NULL;
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_BufferAutomaticType, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 149, __pyx_L1_error)
    __Pyx_GOTREF((PyObject *)__pyx_t_2);
  }
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI___BUFFER_AUTOMATIC__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___BUFFER_AUTOMATIC__, ((PyObject *)__pyx_t_2));
  __Pyx_GIVEREF((PyObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "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             # <<<<<<<<<<<<<<
 * 
 * try:
*/
  __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
 * 
 * try:             # <<<<<<<<<<<<<<
 *     from _thread import allocate_lock as Lock
 *     from _thread import RLock as RLock
*/
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_7, &__pyx_t_8);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_7);
    __Pyx_XGOTREF(__pyx_t_8);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/objmodel.pxi":7
 * 
 * try:
 *     from _thread import allocate_lock as Lock             # <<<<<<<<<<<<<<
 *     from _thread import RLock as RLock
 * except ImportError:                       # ~> uncovered
*/
      {
        PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_allocate_lock};
        __pyx_t_9 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_thread, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(11, 7, __pyx_L2_error)
      }
      __pyx_t_2 = __pyx_t_9;
      __Pyx_GOTREF(__pyx_t_2);
      {
        PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_allocate_lock};
        __pyx_t_10 = 0; {
          __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_imported_names[__pyx_t_10]); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 7, __pyx_L2_error)
          __Pyx_GOTREF(__pyx_t_3);
          switch (__pyx_t_10) {
            case 0:
            __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);
            break;
            default:;
          }
          __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
 * try:
 *     from _thread import allocate_lock as Lock
 *     from _thread import RLock as RLock             # <<<<<<<<<<<<<<
 * except ImportError:                       # ~> uncovered
 *     from threading import Lock  as Lock   # ~> uncovered
*/
      {
        PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_RLock};
        __pyx_t_9 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_thread, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(11, 8, __pyx_L2_error)
      }
      __pyx_t_2 = __pyx_t_9;
      __Pyx_GOTREF(__pyx_t_2);
      {
        PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_RLock};
        __pyx_t_10 = 0; {
          __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_imported_names[__pyx_t_10]); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 8, __pyx_L2_error)
          __Pyx_GOTREF(__pyx_t_3);
          switch (__pyx_t_10) {
            case 0:
            __Pyx_INCREF(__pyx_t_3);
            __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_RLock);
            __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_RLock, __pyx_t_3);
            __Pyx_GIVEREF(__pyx_t_3);
            break;
            default:;
          }
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        }
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "src/mpi4py/MPI.src/objmodel.pxi":6
 * cdef object RLock = None
 * 
 * try:             # <<<<<<<<<<<<<<
 *     from _thread import allocate_lock as Lock
 *     from _thread import RLock as RLock
*/
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    goto __pyx_L7_try_end;
    __pyx_L2_error:;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":9
 *     from _thread import allocate_lock as Lock
 *     from _thread import RLock as RLock
 * except ImportError:                       # ~> uncovered             # <<<<<<<<<<<<<<
 *     from threading import Lock  as Lock   # ~> uncovered
 *     from threading import RLock as RLock  # ~> uncovered
*/
    __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ImportError))));
    if (__pyx_t_4) {
      __Pyx_AddTraceback("mpi4py.MPI", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_5) < 0) __PYX_ERR(11, 9, __pyx_L4_except_error)
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_5);

      /* "src/mpi4py/MPI.src/objmodel.pxi":10
 *     from _thread import RLock as RLock
 * except ImportError:                       # ~> uncovered
 *     from threading import Lock  as Lock   # ~> uncovered             # <<<<<<<<<<<<<<
 *     from threading import RLock as RLock  # ~> uncovered
 * 
*/
      {
        PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_Lock};
        __pyx_t_9 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_threading, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(11, 10, __pyx_L4_except_error)
      }
      __pyx_t_11 = __pyx_t_9;
      __Pyx_GOTREF(__pyx_t_11);
      {
        PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_Lock};
        __pyx_t_10 = 0; {
          __pyx_t_12 = __Pyx_ImportFrom(__pyx_t_11, __pyx_imported_names[__pyx_t_10]); if (unlikely(!__pyx_t_12)) __PYX_ERR(11, 10, __pyx_L4_except_error)
          __Pyx_GOTREF(__pyx_t_12);
          switch (__pyx_t_10) {
            case 0:
            __Pyx_INCREF(__pyx_t_12);
            __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_Lock);
            __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_Lock, __pyx_t_12);
            __Pyx_GIVEREF(__pyx_t_12);
            break;
            default:;
          }
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        }
      }
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

      /* "src/mpi4py/MPI.src/objmodel.pxi":11
 * except ImportError:                       # ~> uncovered
 *     from threading import Lock  as Lock   # ~> uncovered
 *     from threading import RLock as RLock  # ~> uncovered             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
      {
        PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_RLock};
        __pyx_t_9 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_threading, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(11, 11, __pyx_L4_except_error)
      }
      __pyx_t_11 = __pyx_t_9;
      __Pyx_GOTREF(__pyx_t_11);
      {
        PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_RLock};
        __pyx_t_10 = 0; {
          __pyx_t_12 = __Pyx_ImportFrom(__pyx_t_11, __pyx_imported_names[__pyx_t_10]); if (unlikely(!__pyx_t_12)) __PYX_ERR(11, 11, __pyx_L4_except_error)
          __Pyx_GOTREF(__pyx_t_12);
          switch (__pyx_t_10) {
            case 0:
            __Pyx_INCREF(__pyx_t_12);
            __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_RLock);
            __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_RLock, __pyx_t_12);
            __Pyx_GIVEREF(__pyx_t_12);
            break;
            default:;
          }
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        }
      }
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L3_exception_handled;
    }
    goto __pyx_L4_except_error;

    /* "src/mpi4py/MPI.src/objmodel.pxi":6
 * cdef object RLock = None
 * 
 * try:             # <<<<<<<<<<<<<<
 *     from _thread import allocate_lock as Lock
 *     from _thread import RLock as RLock
*/
    __pyx_L4_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_7, __pyx_t_8);
    goto __pyx_L1_error;
    __pyx_L3_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_7, __pyx_t_8);
    __pyx_L7_try_end:;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":314
 * # -----------------------------------------------------------------------------
 * 
 * cdef dict def_registry = {}             # <<<<<<<<<<<<<<
 * 
 * cdef inline type def_class(handle_t handle):
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 314, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_def_registry);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject*)__pyx_t_5));
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":352
 *     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":353
 * 
 * cdef __newobj__ = None
 * from copyreg import __newobj__             # <<<<<<<<<<<<<<
 * 
 * cdef inline object def_reduce(PyMPIClass self):
*/
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_newobj};
    __pyx_t_8 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_copyreg, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(11, 353, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_t_8;
  __Pyx_GOTREF(__pyx_t_5);
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_newobj};
    __pyx_t_10 = 0; {
      __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_5, __pyx_imported_names[__pyx_t_10]); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 353, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      switch (__pyx_t_10) {
        case 0:
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI___newobj__);
        __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___newobj__, __pyx_t_3);
        __Pyx_GIVEREF(__pyx_t_3);
        break;
        default:;
      }
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":504
 * # Op
 * 
 * cdef dict def_op = {}             # <<<<<<<<<<<<<<
 * 
 * cdef inline Op def_Op(MPI_Op arg, object name):
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 504, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_def_op);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_def_op, ((PyObject*)__pyx_t_5));
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 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_3 = NULL;
  __Pyx_INCREF(__pyx_v_6mpi4py_3MPI_Lock);
  __pyx_t_2 = __pyx_v_6mpi4py_3MPI_Lock; 
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 30, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
  }
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_keyval_lock_type);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_keyval_lock_type, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 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 = NULL;
  __Pyx_INCREF(__pyx_v_6mpi4py_3MPI_Lock);
  __pyx_t_3 = __pyx_v_6mpi4py_3MPI_Lock; 
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 31, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
  }
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_keyval_lock_comm);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_keyval_lock_comm, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 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_3 = NULL;
  __Pyx_INCREF(__pyx_v_6mpi4py_3MPI_Lock);
  __pyx_t_2 = __pyx_v_6mpi4py_3MPI_Lock; 
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 32, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
  }
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_keyval_lock_win);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_keyval_lock_win, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 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_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_keyval_registry_type);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_keyval_registry_type, ((PyObject*)__pyx_t_5));
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 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_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_keyval_registry_comm);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_keyval_registry_comm, ((PyObject*)__pyx_t_5));
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 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_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_keyval_registry_win);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_keyval_registry_win, ((PyObject*)__pyx_t_5));
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":39
 * 
 * _keyval_registry = {
 *     'Datatype' : keyval_registry_type,             # <<<<<<<<<<<<<<
 *     'Comm'     : keyval_registry_comm,
 *     'Win'      : keyval_registry_win,
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_Datatype, __pyx_v_6mpi4py_3MPI_keyval_registry_type) < (0)) __PYX_ERR(12, 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_5, __pyx_mstate_global->__pyx_n_u_Comm, __pyx_v_6mpi4py_3MPI_keyval_registry_comm) < (0)) __PYX_ERR(12, 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_5, __pyx_mstate_global->__pyx_n_u_Win, __pyx_v_6mpi4py_3MPI_keyval_registry_win) < (0)) __PYX_ERR(12, 39, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_keyval_registry, __pyx_t_5) < (0)) __PYX_ERR(12, 38, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 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 = NULL;
  __Pyx_INCREF(__pyx_v_6mpi4py_3MPI_Lock);
  __pyx_t_3 = __pyx_v_6mpi4py_3MPI_Lock; 
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
  }
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_errhdl_lock);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_errhdl_lock, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 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_5 = PyList_New(1 * 33); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  { 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_5, __pyx_temp, Py_None) != (0)) __PYX_ERR(13, 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_3 = PyList_New(1 * 33); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 18, __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) != (0)) __PYX_ERR(13, 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_2 = PyList_New(1 * 33); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 19, __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) != (0)) __PYX_ERR(13, 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_11 = PyList_New(1 * 33); if (unlikely(!__pyx_t_11)) __PYX_ERR(13, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  { 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_11, __pyx_temp, Py_None) != (0)) __PYX_ERR(13, 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_12 = __Pyx_PyList_Pack(4, __pyx_t_5, __pyx_t_3, __pyx_t_2, __pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(13, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_errhdl_registry);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_errhdl_registry, ((PyObject*)__pyx_t_12));
  __Pyx_GIVEREF(__pyx_t_12);
  __pyx_t_12 = 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_11 = NULL;
  __Pyx_INCREF(__pyx_v_6mpi4py_3MPI_Lock);
  __pyx_t_2 = __pyx_v_6mpi4py_3MPI_Lock; 
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_11, NULL};
    __pyx_t_12 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_12)) __PYX_ERR(15, 97, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
  }
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_op_user_lock);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_op_user_lock, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_12);
  __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/opimpl.pxi":98
 * 
 * cdef object op_user_lock     = Lock()
 * cdef list   op_user_registry = [None]*(1+32)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_12 = PyList_New(1 * 33); if (unlikely(!__pyx_t_12)) __PYX_ERR(15, 98, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  { 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_12, __pyx_temp, Py_None) != (0)) __PYX_ERR(15, 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_12));
  __Pyx_GIVEREF(__pyx_t_12);
  __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":8
 *     Session
 * 
 * cdef dict _mpi_buffer_comm = {}             # <<<<<<<<<<<<<<
 * cdef dict _mpi_buffer_session = {}
 * 
*/
  __pyx_t_12 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_12)) __PYX_ERR(16, 8, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI__mpi_buffer_comm);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI__mpi_buffer_comm, ((PyObject*)__pyx_t_12));
  __Pyx_GIVEREF(__pyx_t_12);
  __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":9
 * 
 * cdef dict _mpi_buffer_comm = {}
 * cdef dict _mpi_buffer_session = {}             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_12 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_12)) __PYX_ERR(16, 9, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI__mpi_buffer_session);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI__mpi_buffer_session, ((PyObject*)__pyx_t_12));
  __Pyx_GIVEREF(__pyx_t_12);
  __pyx_t_12 = 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_12 = __Pyx_PyLong_From_MPI_Aint(((MPI_Aint)MPI_UNWEIGHTED)); if (unlikely(!__pyx_t_12)) __PYX_ERR(17, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI___UNWEIGHTED__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___UNWEIGHTED__, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_12);
  __pyx_t_12 = 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_12 = __Pyx_PyLong_From_MPI_Aint(((MPI_Aint)MPI_WEIGHTS_EMPTY)); if (unlikely(!__pyx_t_12)) __PYX_ERR(17, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI___WEIGHTS_EMPTY__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___WEIGHTS_EMPTY__, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_12);
  __pyx_t_12 = 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_2 = NULL;
  __Pyx_INCREF(__pyx_v_6mpi4py_3MPI_Lock);
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_Lock; 
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_12 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_11, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    if (unlikely(!__pyx_t_12)) __PYX_ERR(17, 61, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
  }
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_commlock_lock);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_commlock_lock, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_12);
  __pyx_t_12 = 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_12 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_12)) __PYX_ERR(17, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_commlock_registry);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_commlock_registry, ((PyObject*)__pyx_t_12));
  __Pyx_GIVEREF(__pyx_t_12);
  __pyx_t_12 = 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_12 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(17, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_comm, __pyx_mstate_global->__pyx_n_u_Comm) < (0)) __PYX_ERR(17, 137, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_key, __pyx_mstate_global->__pyx_kp_u_Hashable_None) < (0)) __PYX_ERR(17, 137, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Lock) < (0)) __PYX_ERR(17, 137, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3_comm_lock, 0, __pyx_mstate_global->__pyx_n_u_comm_lock, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[12])); if (unlikely(!__pyx_t_11)) __PYX_ERR(17, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_12);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_comm_lock, __pyx_t_11) < (0)) __PYX_ERR(17, 137, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/commimpl.pxi":144
 * 
 * 
 * def _comm_lock_table(Comm comm: Comm) -> dict[Hashable, Lock]:             # <<<<<<<<<<<<<<
 *     """
 *     Internal communicator lock table.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(17, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_comm, __pyx_mstate_global->__pyx_n_u_Comm) < (0)) __PYX_ERR(17, 144, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_dict_Hashable_Lock) < (0)) __PYX_ERR(17, 144, __pyx_L1_error)
  __pyx_t_12 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5_comm_lock_table, 0, __pyx_mstate_global->__pyx_n_u_comm_lock_table, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[13])); if (unlikely(!__pyx_t_12)) __PYX_ERR(17, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_12);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_12, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_comm_lock_table, __pyx_t_12) < (0)) __PYX_ERR(17, 144, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":3
 * # -----------------------------------------------------------------------------
 * 
 * cdef object datarep_lock     = Lock()             # <<<<<<<<<<<<<<
 * cdef dict   datarep_registry = {}
 * 
*/
  __pyx_t_11 = NULL;
  __Pyx_INCREF(__pyx_v_6mpi4py_3MPI_Lock);
  __pyx_t_2 = __pyx_v_6mpi4py_3MPI_Lock; 
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_11, NULL};
    __pyx_t_12 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_12)) __PYX_ERR(19, 3, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
  }
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_datarep_lock);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_datarep_lock, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_12);
  __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":4
 * 
 * cdef object datarep_lock     = Lock()
 * cdef dict   datarep_registry = {}             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_12 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_12)) __PYX_ERR(19, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_datarep_registry);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_datarep_registry, ((PyObject*)__pyx_t_12));
  __Pyx_GIVEREF(__pyx_t_12);
  __pyx_t_12 = 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_mstate_global->__pyx_int_262144);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyPickle_THRESHOLD);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_PyPickle_THRESHOLD, __pyx_mstate_global->__pyx_int_262144);
  __Pyx_GIVEREF(__pyx_mstate_global->__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
*/
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_dumps};
    __pyx_t_8 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pickle, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(21, 16, __pyx_L1_error)
  }
  __pyx_t_12 = __pyx_t_8;
  __Pyx_GOTREF(__pyx_t_12);
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_dumps};
    __pyx_t_10 = 0; {
      __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_12, __pyx_imported_names[__pyx_t_10]); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 16, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      switch (__pyx_t_10) {
        case 0:
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyPickle_dumps);
        __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_PyPickle_dumps, __pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_2);
        break;
        default:;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 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
 * 
*/
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_loads};
    __pyx_t_8 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pickle, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(21, 17, __pyx_L1_error)
  }
  __pyx_t_12 = __pyx_t_8;
  __Pyx_GOTREF(__pyx_t_12);
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_loads};
    __pyx_t_10 = 0; {
      __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_12, __pyx_imported_names[__pyx_t_10]); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 17, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      switch (__pyx_t_10) {
        case 0:
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyPickle_loads);
        __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_PyPickle_loads, __pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_2);
        break;
        default:;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 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:
*/
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_HIGHEST_PROTOCOL};
    __pyx_t_8 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pickle, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(21, 18, __pyx_L1_error)
  }
  __pyx_t_12 = __pyx_t_8;
  __Pyx_GOTREF(__pyx_t_12);
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_HIGHEST_PROTOCOL};
    __pyx_t_10 = 0; {
      __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_12, __pyx_imported_names[__pyx_t_10]); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 18, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      switch (__pyx_t_10) {
        case 0:
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL);
        __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL, __pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_2);
        break;
        default:;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 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_13 = (Py_GETENV(((char *)"MPI4PY_PICKLE_PROTOCOL")) != NULL);
  if (__pyx_t_13) {

    /* "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_2 = NULL;
    __pyx_t_11 = __Pyx_PyBytes_FromString(Py_GETENV(((char *)"MPI4PY_PICKLE_PROTOCOL"))); if (unlikely(!__pyx_t_11)) __PYX_ERR(21, 21, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_6 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_11};
      __pyx_t_12 = __Pyx_PyObject_FastCall((PyObject*)(&PyLong_Type), __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_12)) __PYX_ERR(21, 21, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
    }
    __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL);
    __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL, __pyx_t_12);
    __Pyx_GIVEREF(__pyx_t_12);
    __pyx_t_12 = 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_13 = (Py_GETENV(((char *)"MPI4PY_PICKLE_THRESHOLD")) != NULL);
  if (__pyx_t_13) {

    /* "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_11 = NULL;
    __pyx_t_2 = __Pyx_PyBytes_FromString(Py_GETENV(((char *)"MPI4PY_PICKLE_THRESHOLD"))); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 24, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_2};
      __pyx_t_12 = __Pyx_PyObject_FastCall((PyObject*)(&PyLong_Type), __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_12)) __PYX_ERR(21, 24, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
    }
    __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyPickle_THRESHOLD);
    __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_PyPickle_THRESHOLD, __pyx_t_12);
    __Pyx_GIVEREF(__pyx_t_12);
    __pyx_t_12 = 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_12 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(21, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_obj, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(21, 65, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bytes) < (0)) __PYX_ERR(21, 65, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Pickle_5dumps, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Pickle_dumps, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[14])); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_12);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Pickle, __pyx_mstate_global->__pyx_n_u_dumps, __pyx_t_2) < (0)) __PYX_ERR(21, 65, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":74
 *         return cdumps(self, obj)
 * 
 *     def loads(             # <<<<<<<<<<<<<<
 *         self,
 *         data: Buffer,
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_data, __pyx_mstate_global->__pyx_n_u_Buffer) < (0)) __PYX_ERR(21, 74, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(21, 74, __pyx_L1_error)
  __pyx_t_12 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Pickle_7loads, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Pickle_loads, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[15])); if (unlikely(!__pyx_t_12)) __PYX_ERR(21, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_12);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_12, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Pickle, __pyx_mstate_global->__pyx_n_u_loads, __pyx_t_12) < (0)) __PYX_ERR(21, 74, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":83
 *         return cloads(self, data)
 * 
 *     def dumps_oob(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
*/
  __pyx_t_12 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(21, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_obj, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(21, 83, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_tuple_bytes_list_buffer) < (0)) __PYX_ERR(21, 83, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Pickle_9dumps_oob, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Pickle_dumps_oob, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[16])); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_12);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Pickle, __pyx_mstate_global->__pyx_n_u_dumps_oob, __pyx_t_2) < (0)) __PYX_ERR(21, 83, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":92
 *         return cdumps_oob(self, obj)
 * 
 *     def loads_oob(             # <<<<<<<<<<<<<<
 *         self,
 *         data: Buffer,
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_data, __pyx_mstate_global->__pyx_n_u_Buffer) < (0)) __PYX_ERR(21, 92, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_buffers, __pyx_mstate_global->__pyx_kp_u_Iterable_Buffer) < (0)) __PYX_ERR(21, 92, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(21, 92, __pyx_L1_error)
  __pyx_t_12 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Pickle_11loads_oob, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Pickle_loads_oob, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[17])); if (unlikely(!__pyx_t_12)) __PYX_ERR(21, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_12);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_12, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Pickle, __pyx_mstate_global->__pyx_n_u_loads_oob, __pyx_t_12) < (0)) __PYX_ERR(21, 92, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":124
 * 
 * 
 * cdef Pickle PyMPI_PICKLE = Pickle()             # <<<<<<<<<<<<<<
 * pickle = PyMPI_PICKLE
 * 
*/
  __pyx_t_2 = NULL;
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_12 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Pickle, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_12)) __PYX_ERR(21, 124, __pyx_L1_error)
    __Pyx_GOTREF((PyObject *)__pyx_t_12);
  }
  __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_12));
  __Pyx_GIVEREF((PyObject *)__pyx_t_12);
  __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":125
 * 
 * cdef Pickle PyMPI_PICKLE = Pickle()
 * pickle = PyMPI_PICKLE             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_pickle, ((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE)) < (0)) __PYX_ERR(21, 125, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1247
 * 
 * 
 * def _commctx_intra(             # <<<<<<<<<<<<<<
 *     Intracomm comm: Intracomm,
 * ) -> tuple[Intracomm, int]:
*/
  __pyx_t_12 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(21, 1247, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_comm, __pyx_mstate_global->__pyx_n_u_Intracomm) < (0)) __PYX_ERR(21, 1247, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_tuple_Intracomm_int) < (0)) __PYX_ERR(21, 1247, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7_commctx_intra, 0, __pyx_mstate_global->__pyx_n_u_commctx_intra_2, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[18])); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 1247, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_12);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_commctx_intra_2, __pyx_t_2) < (0)) __PYX_ERR(21, 1247, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1259
 * 
 * 
 * def _commctx_inter(             # <<<<<<<<<<<<<<
 *     Intercomm comm: Intercomm,
 * ) -> tuple[Intercomm, int, Intracomm, bool]:
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 1259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_comm, __pyx_mstate_global->__pyx_n_u_Intercomm) < (0)) __PYX_ERR(21, 1259, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_tuple_Intercomm_int_Intracomm_bo) < (0)) __PYX_ERR(21, 1259, __pyx_L1_error)
  __pyx_t_12 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9_commctx_inter, 0, __pyx_mstate_global->__pyx_n_u_commctx_inter_2, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[19])); if (unlikely(!__pyx_t_12)) __PYX_ERR(21, 1259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_12);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_12, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_commctx_inter_2, __pyx_t_12) < (0)) __PYX_ERR(21, 1259, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":37
 * # ------------------
 * 
 * UNDEFINED = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 * #: Undefined integer value
 * 
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_UNDEFINED); if (unlikely(!__pyx_t_12)) __PYX_ERR(36, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_UNDEFINED, __pyx_t_12) < (0)) __PYX_ERR(36, 37, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":40
 * #: Undefined integer value
 * 
 * ANY_SOURCE = MPI_ANY_SOURCE             # <<<<<<<<<<<<<<
 * #: Wildcard source value for receives
 * 
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ANY_SOURCE); if (unlikely(!__pyx_t_12)) __PYX_ERR(36, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE, __pyx_t_12) < (0)) __PYX_ERR(36, 40, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":43
 * #: Wildcard source value for receives
 * 
 * ANY_TAG = MPI_ANY_TAG             # <<<<<<<<<<<<<<
 * #: Wildcard tag value for receives
 * 
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ANY_TAG); if (unlikely(!__pyx_t_12)) __PYX_ERR(36, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ANY_TAG, __pyx_t_12) < (0)) __PYX_ERR(36, 43, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":46
 * #: Wildcard tag value for receives
 * 
 * PROC_NULL = MPI_PROC_NULL             # <<<<<<<<<<<<<<
 * #: Special process rank for send/receive
 * 
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_PROC_NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(36, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_PROC_NULL, __pyx_t_12) < (0)) __PYX_ERR(36, 46, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":49
 * #: Special process rank for send/receive
 * 
 * ROOT = MPI_ROOT             # <<<<<<<<<<<<<<
 * #: Root process for collective inter-communications
 * 
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ROOT); if (unlikely(!__pyx_t_12)) __PYX_ERR(36, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ROOT, __pyx_t_12) < (0)) __PYX_ERR(36, 49, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":52
 * #: Root process for collective inter-communications
 * 
 * BOTTOM = __BOTTOM__             # <<<<<<<<<<<<<<
 * #: Special address for buffers
 * 
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_BOTTOM, __pyx_v_6mpi4py_3MPI___BOTTOM__) < (0)) __PYX_ERR(36, 52, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":55
 * #: Special address for buffers
 * 
 * IN_PLACE = __IN_PLACE__             # <<<<<<<<<<<<<<
 * #: *In-place* option for collective communications
 * 
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_IN_PLACE, __pyx_v_6mpi4py_3MPI___IN_PLACE__) < (0)) __PYX_ERR(36, 55, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":62
 * # ----------------------------
 * 
 * KEYVAL_INVALID    = MPI_KEYVAL_INVALID             # <<<<<<<<<<<<<<
 * 
 * TAG_UB            = MPI_TAG_UB
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_KEYVAL_INVALID); if (unlikely(!__pyx_t_12)) __PYX_ERR(36, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_KEYVAL_INVALID, __pyx_t_12) < (0)) __PYX_ERR(36, 62, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":64
 * KEYVAL_INVALID    = MPI_KEYVAL_INVALID
 * 
 * TAG_UB            = MPI_TAG_UB             # <<<<<<<<<<<<<<
 * IO                = MPI_IO
 * WTIME_IS_GLOBAL   = MPI_WTIME_IS_GLOBAL
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_TAG_UB); if (unlikely(!__pyx_t_12)) __PYX_ERR(36, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_TAG_UB, __pyx_t_12) < (0)) __PYX_ERR(36, 64, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":65
 * 
 * TAG_UB            = MPI_TAG_UB
 * IO                = MPI_IO             # <<<<<<<<<<<<<<
 * WTIME_IS_GLOBAL   = MPI_WTIME_IS_GLOBAL
 * 
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_IO); if (unlikely(!__pyx_t_12)) __PYX_ERR(36, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_IO, __pyx_t_12) < (0)) __PYX_ERR(36, 65, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":66
 * TAG_UB            = MPI_TAG_UB
 * IO                = MPI_IO
 * WTIME_IS_GLOBAL   = MPI_WTIME_IS_GLOBAL             # <<<<<<<<<<<<<<
 * 
 * UNIVERSE_SIZE     = MPI_UNIVERSE_SIZE
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_WTIME_IS_GLOBAL); if (unlikely(!__pyx_t_12)) __PYX_ERR(36, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_WTIME_IS_GLOBAL, __pyx_t_12) < (0)) __PYX_ERR(36, 66, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":68
 * WTIME_IS_GLOBAL   = MPI_WTIME_IS_GLOBAL
 * 
 * UNIVERSE_SIZE     = MPI_UNIVERSE_SIZE             # <<<<<<<<<<<<<<
 * APPNUM            = MPI_APPNUM
 * 
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_UNIVERSE_SIZE); if (unlikely(!__pyx_t_12)) __PYX_ERR(36, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_UNIVERSE_SIZE, __pyx_t_12) < (0)) __PYX_ERR(36, 68, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":69
 * 
 * UNIVERSE_SIZE     = MPI_UNIVERSE_SIZE
 * APPNUM            = MPI_APPNUM             # <<<<<<<<<<<<<<
 * 
 * LASTUSEDCODE      = MPI_LASTUSEDCODE
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_APPNUM); if (unlikely(!__pyx_t_12)) __PYX_ERR(36, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_APPNUM, __pyx_t_12) < (0)) __PYX_ERR(36, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":71
 * APPNUM            = MPI_APPNUM
 * 
 * LASTUSEDCODE      = MPI_LASTUSEDCODE             # <<<<<<<<<<<<<<
 * 
 * WIN_BASE          = MPI_WIN_BASE
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_LASTUSEDCODE); if (unlikely(!__pyx_t_12)) __PYX_ERR(36, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LASTUSEDCODE, __pyx_t_12) < (0)) __PYX_ERR(36, 71, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":73
 * LASTUSEDCODE      = MPI_LASTUSEDCODE
 * 
 * WIN_BASE          = MPI_WIN_BASE             # <<<<<<<<<<<<<<
 * WIN_SIZE          = MPI_WIN_SIZE
 * WIN_DISP_UNIT     = MPI_WIN_DISP_UNIT
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_WIN_BASE); if (unlikely(!__pyx_t_12)) __PYX_ERR(36, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_WIN_BASE, __pyx_t_12) < (0)) __PYX_ERR(36, 73, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 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
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_WIN_SIZE); if (unlikely(!__pyx_t_12)) __PYX_ERR(36, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_WIN_SIZE, __pyx_t_12) < (0)) __PYX_ERR(36, 74, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":75
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_WIN_DISP_UNIT); if (unlikely(!__pyx_t_12)) __PYX_ERR(36, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_WIN_DISP_UNIT, __pyx_t_12) < (0)) __PYX_ERR(36, 75, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":76
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_WIN_CREATE_FLAVOR); if (unlikely(!__pyx_t_12)) __PYX_ERR(36, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_WIN_CREATE_FLAVOR, __pyx_t_12) < (0)) __PYX_ERR(36, 76, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":77
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_WIN_CREATE_FLAVOR); if (unlikely(!__pyx_t_12)) __PYX_ERR(36, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_WIN_FLAVOR, __pyx_t_12) < (0)) __PYX_ERR(36, 77, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":78
 * WIN_CREATE_FLAVOR = MPI_WIN_CREATE_FLAVOR
 * WIN_FLAVOR        = MPI_WIN_CREATE_FLAVOR
 * WIN_MODEL         = MPI_WIN_MODEL             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_WIN_MODEL); if (unlikely(!__pyx_t_12)) __PYX_ERR(36, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_WIN_MODEL, __pyx_t_12) < (0)) __PYX_ERR(36, 78, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":5
 * 
 * # No Errors
 * SUCCESS          = MPI_SUCCESS             # <<<<<<<<<<<<<<
 * ERR_LASTCODE     = MPI_ERR_LASTCODE
 * # ABI
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_SUCCESS); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SUCCESS, __pyx_t_12) < (0)) __PYX_ERR(23, 5, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":6
 * # No Errors
 * SUCCESS          = MPI_SUCCESS
 * ERR_LASTCODE     = MPI_ERR_LASTCODE             # <<<<<<<<<<<<<<
 * # ABI
 * ERR_ABI          = MPI_ERR_ABI
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_LASTCODE); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_LASTCODE, __pyx_t_12) < (0)) __PYX_ERR(23, 6, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":8
 * ERR_LASTCODE     = MPI_ERR_LASTCODE
 * # ABI
 * ERR_ABI          = MPI_ERR_ABI             # <<<<<<<<<<<<<<
 * # Object Handles
 * ERR_TYPE         = MPI_ERR_TYPE
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_ABI); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 8, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_ABI, __pyx_t_12) < (0)) __PYX_ERR(23, 8, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":10
 * ERR_ABI          = MPI_ERR_ABI
 * # Object Handles
 * ERR_TYPE         = MPI_ERR_TYPE             # <<<<<<<<<<<<<<
 * ERR_REQUEST      = MPI_ERR_REQUEST
 * ERR_OP           = MPI_ERR_OP
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_TYPE); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_TYPE, __pyx_t_12) < (0)) __PYX_ERR(23, 10, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":11
 * # Object Handles
 * ERR_TYPE         = MPI_ERR_TYPE
 * ERR_REQUEST      = MPI_ERR_REQUEST             # <<<<<<<<<<<<<<
 * ERR_OP           = MPI_ERR_OP
 * ERR_GROUP        = MPI_ERR_GROUP
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_REQUEST); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_REQUEST, __pyx_t_12) < (0)) __PYX_ERR(23, 11, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":12
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_OP); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_OP, __pyx_t_12) < (0)) __PYX_ERR(23, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":13
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_GROUP); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 13, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_GROUP, __pyx_t_12) < (0)) __PYX_ERR(23, 13, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":14
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_INFO); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_INFO, __pyx_t_12) < (0)) __PYX_ERR(23, 14, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":15
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_ERRHANDLER); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_ERRHANDLER, __pyx_t_12) < (0)) __PYX_ERR(23, 15, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":16
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_SESSION); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_SESSION, __pyx_t_12) < (0)) __PYX_ERR(23, 16, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":17
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_COMM); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_COMM, __pyx_t_12) < (0)) __PYX_ERR(23, 17, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":18
 * ERR_SESSION      = MPI_ERR_SESSION
 * ERR_COMM         = MPI_ERR_COMM
 * ERR_WIN          = MPI_ERR_WIN             # <<<<<<<<<<<<<<
 * ERR_FILE         = MPI_ERR_FILE
 * # Communication Arguments
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_WIN); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_WIN, __pyx_t_12) < (0)) __PYX_ERR(23, 18, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":19
 * ERR_COMM         = MPI_ERR_COMM
 * ERR_WIN          = MPI_ERR_WIN
 * ERR_FILE         = MPI_ERR_FILE             # <<<<<<<<<<<<<<
 * # Communication Arguments
 * ERR_BUFFER       = MPI_ERR_BUFFER
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_FILE); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_FILE, __pyx_t_12) < (0)) __PYX_ERR(23, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":21
 * ERR_FILE         = MPI_ERR_FILE
 * # Communication Arguments
 * ERR_BUFFER       = MPI_ERR_BUFFER             # <<<<<<<<<<<<<<
 * ERR_COUNT        = MPI_ERR_COUNT
 * ERR_TAG          = MPI_ERR_TAG
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_BUFFER); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_BUFFER, __pyx_t_12) < (0)) __PYX_ERR(23, 21, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":22
 * # Communication Arguments
 * ERR_BUFFER       = MPI_ERR_BUFFER
 * ERR_COUNT        = MPI_ERR_COUNT             # <<<<<<<<<<<<<<
 * ERR_TAG          = MPI_ERR_TAG
 * ERR_RANK         = MPI_ERR_RANK
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_COUNT); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_COUNT, __pyx_t_12) < (0)) __PYX_ERR(23, 22, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":23
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_TAG); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_TAG, __pyx_t_12) < (0)) __PYX_ERR(23, 23, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":24
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_RANK); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_RANK, __pyx_t_12) < (0)) __PYX_ERR(23, 24, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":25
 * ERR_TAG          = MPI_ERR_TAG
 * ERR_RANK         = MPI_ERR_RANK
 * ERR_ROOT         = MPI_ERR_ROOT             # <<<<<<<<<<<<<<
 * ERR_TRUNCATE     = MPI_ERR_TRUNCATE
 * # Multiple Completion
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_ROOT); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_ROOT, __pyx_t_12) < (0)) __PYX_ERR(23, 25, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":26
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_TRUNCATE); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_TRUNCATE, __pyx_t_12) < (0)) __PYX_ERR(23, 26, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":28
 * ERR_TRUNCATE     = MPI_ERR_TRUNCATE
 * # Multiple Completion
 * ERR_IN_STATUS    = MPI_ERR_IN_STATUS             # <<<<<<<<<<<<<<
 * ERR_PENDING      = MPI_ERR_PENDING
 * # Topology Arguments
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_IN_STATUS); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_IN_STATUS, __pyx_t_12) < (0)) __PYX_ERR(23, 28, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":29
 * # Multiple Completion
 * ERR_IN_STATUS    = MPI_ERR_IN_STATUS
 * ERR_PENDING      = MPI_ERR_PENDING             # <<<<<<<<<<<<<<
 * # Topology Arguments
 * ERR_TOPOLOGY     = MPI_ERR_TOPOLOGY
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_PENDING); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_PENDING, __pyx_t_12) < (0)) __PYX_ERR(23, 29, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":31
 * ERR_PENDING      = MPI_ERR_PENDING
 * # Topology Arguments
 * ERR_TOPOLOGY     = MPI_ERR_TOPOLOGY             # <<<<<<<<<<<<<<
 * ERR_DIMS         = MPI_ERR_DIMS
 * # Other Arguments
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_TOPOLOGY); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_TOPOLOGY, __pyx_t_12) < (0)) __PYX_ERR(23, 31, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":32
 * # Topology Arguments
 * ERR_TOPOLOGY     = MPI_ERR_TOPOLOGY
 * ERR_DIMS         = MPI_ERR_DIMS             # <<<<<<<<<<<<<<
 * # Other Arguments
 * ERR_ARG          = MPI_ERR_ARG
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_DIMS); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_DIMS, __pyx_t_12) < (0)) __PYX_ERR(23, 32, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":34
 * ERR_DIMS         = MPI_ERR_DIMS
 * # Other Arguments
 * ERR_ARG          = MPI_ERR_ARG             # <<<<<<<<<<<<<<
 * # Other Errors
 * ERR_OTHER        = MPI_ERR_OTHER
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_ARG); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_ARG, __pyx_t_12) < (0)) __PYX_ERR(23, 34, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":36
 * ERR_ARG          = MPI_ERR_ARG
 * # Other Errors
 * ERR_OTHER        = MPI_ERR_OTHER             # <<<<<<<<<<<<<<
 * ERR_UNKNOWN      = MPI_ERR_UNKNOWN
 * ERR_INTERN       = MPI_ERR_INTERN
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_OTHER); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_OTHER, __pyx_t_12) < (0)) __PYX_ERR(23, 36, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":37
 * # Other Errors
 * ERR_OTHER        = MPI_ERR_OTHER
 * ERR_UNKNOWN      = MPI_ERR_UNKNOWN             # <<<<<<<<<<<<<<
 * ERR_INTERN       = MPI_ERR_INTERN
 * # Attributes
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_UNKNOWN); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_UNKNOWN, __pyx_t_12) < (0)) __PYX_ERR(23, 37, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":38
 * ERR_OTHER        = MPI_ERR_OTHER
 * ERR_UNKNOWN      = MPI_ERR_UNKNOWN
 * ERR_INTERN       = MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 * # Attributes
 * ERR_KEYVAL       = MPI_ERR_KEYVAL
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_INTERN); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_INTERN, __pyx_t_12) < (0)) __PYX_ERR(23, 38, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":40
 * ERR_INTERN       = MPI_ERR_INTERN
 * # Attributes
 * ERR_KEYVAL       = MPI_ERR_KEYVAL             # <<<<<<<<<<<<<<
 * # Memory Allocation
 * ERR_NO_MEM       = MPI_ERR_NO_MEM
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_KEYVAL); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_KEYVAL, __pyx_t_12) < (0)) __PYX_ERR(23, 40, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":42
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_NO_MEM); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_NO_MEM, __pyx_t_12) < (0)) __PYX_ERR(23, 42, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":44
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_INFO_KEY); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_INFO_KEY, __pyx_t_12) < (0)) __PYX_ERR(23, 44, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":45
 * # 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_INFO_VALUE); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_INFO_VALUE, __pyx_t_12) < (0)) __PYX_ERR(23, 45, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":46
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_INFO_NOKEY); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_INFO_NOKEY, __pyx_t_12) < (0)) __PYX_ERR(23, 46, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":48
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_SPAWN); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_SPAWN, __pyx_t_12) < (0)) __PYX_ERR(23, 48, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":49
 * # 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_PORT); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_PORT, __pyx_t_12) < (0)) __PYX_ERR(23, 49, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":50
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_SERVICE); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_SERVICE, __pyx_t_12) < (0)) __PYX_ERR(23, 50, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":51
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_NAME); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_NAME, __pyx_t_12) < (0)) __PYX_ERR(23, 51, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":52
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_PROC_ABORTED); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_PROC_ABORTED, __pyx_t_12) < (0)) __PYX_ERR(23, 52, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":54
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_BASE); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_BASE, __pyx_t_12) < (0)) __PYX_ERR(23, 54, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":55
 * # 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_SIZE); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_SIZE, __pyx_t_12) < (0)) __PYX_ERR(23, 55, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":56
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_DISP); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_DISP, __pyx_t_12) < (0)) __PYX_ERR(23, 56, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":57
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_ASSERT); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_ASSERT, __pyx_t_12) < (0)) __PYX_ERR(23, 57, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":58
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_LOCKTYPE); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_LOCKTYPE, __pyx_t_12) < (0)) __PYX_ERR(23, 58, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":59
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_RMA_CONFLICT); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_RMA_CONFLICT, __pyx_t_12) < (0)) __PYX_ERR(23, 59, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":60
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_RMA_SYNC); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_RMA_SYNC, __pyx_t_12) < (0)) __PYX_ERR(23, 60, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":61
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_RMA_RANGE); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_RMA_RANGE, __pyx_t_12) < (0)) __PYX_ERR(23, 61, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":62
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_RMA_ATTACH); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_RMA_ATTACH, __pyx_t_12) < (0)) __PYX_ERR(23, 62, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":63
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_RMA_SHARED); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_RMA_SHARED, __pyx_t_12) < (0)) __PYX_ERR(23, 63, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":64
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_RMA_FLAVOR); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_RMA_FLAVOR, __pyx_t_12) < (0)) __PYX_ERR(23, 64, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":66
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_BAD_FILE); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_BAD_FILE, __pyx_t_12) < (0)) __PYX_ERR(23, 66, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":67
 * # 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_NO_SUCH_FILE); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_NO_SUCH_FILE, __pyx_t_12) < (0)) __PYX_ERR(23, 67, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":68
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_FILE_EXISTS); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_FILE_EXISTS, __pyx_t_12) < (0)) __PYX_ERR(23, 68, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":69
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_FILE_IN_USE); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_FILE_IN_USE, __pyx_t_12) < (0)) __PYX_ERR(23, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":70
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_AMODE); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_AMODE, __pyx_t_12) < (0)) __PYX_ERR(23, 70, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":71
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_ACCESS); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_ACCESS, __pyx_t_12) < (0)) __PYX_ERR(23, 71, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":72
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_READ_ONLY); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_READ_ONLY, __pyx_t_12) < (0)) __PYX_ERR(23, 72, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":73
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_NO_SPACE); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_NO_SPACE, __pyx_t_12) < (0)) __PYX_ERR(23, 73, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":74
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_QUOTA); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_QUOTA, __pyx_t_12) < (0)) __PYX_ERR(23, 74, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":75
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_NOT_SAME); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_NOT_SAME, __pyx_t_12) < (0)) __PYX_ERR(23, 75, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":76
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_IO); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_IO, __pyx_t_12) < (0)) __PYX_ERR(23, 76, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":77
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_UNSUPPORTED_OPERATION); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_UNSUPPORTED_OPERATION, __pyx_t_12) < (0)) __PYX_ERR(23, 77, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":78
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_UNSUPPORTED_DATAREP); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_UNSUPPORTED_DATAREP, __pyx_t_12) < (0)) __PYX_ERR(23, 78, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":79
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_CONVERSION); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_CONVERSION, __pyx_t_12) < (0)) __PYX_ERR(23, 79, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":80
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_DUP_DATAREP); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_DUP_DATAREP, __pyx_t_12) < (0)) __PYX_ERR(23, 80, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":81
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_VALUE_TOO_LARGE); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_VALUE_TOO_LARGE, __pyx_t_12) < (0)) __PYX_ERR(23, 81, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":83
 * 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_REVOKED); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_REVOKED, __pyx_t_12) < (0)) __PYX_ERR(23, 83, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":84
 * # 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_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_PROC_FAILED); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_PROC_FAILED, __pyx_t_12) < (0)) __PYX_ERR(23, 84, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":85
 * ERR_REVOKED             = MPI_ERR_REVOKED
 * ERR_PROC_FAILED         = MPI_ERR_PROC_FAILED
 * ERR_PROC_FAILED_PENDING = MPI_ERR_PROC_FAILED_PENDING             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_12 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ERR_PROC_FAILED_PENDING); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERR_PROC_FAILED_PENDING, __pyx_t_12) < (0)) __PYX_ERR(23, 85, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":88
 * 
 * 
 * def Get_error_class(int errorcode: int) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Convert an *error code* into an *error class*.
*/
  __pyx_t_12 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_errorcode, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(23, 88, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(23, 88, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_11Get_error_class, 0, __pyx_mstate_global->__pyx_n_u_Get_error_class, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[20])); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_12);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Get_error_class, __pyx_t_2) < (0)) __PYX_ERR(23, 88, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":97
 * 
 * 
 * def Get_error_string(int errorcode: int) -> str:             # <<<<<<<<<<<<<<
 *     """
 *     Return the *error string* for a given *error class* or *error code*.
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_errorcode, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(23, 97, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(23, 97, __pyx_L1_error)
  __pyx_t_12 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_13Get_error_string, 0, __pyx_mstate_global->__pyx_n_u_Get_error_string, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[21])); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_12);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_12, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Get_error_string, __pyx_t_12) < (0)) __PYX_ERR(23, 97, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":107
 * 
 * 
 * def Add_error_class() -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Add an *error class* to the known error classes.
*/
  __pyx_t_12 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(23, 107, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_15Add_error_class, 0, __pyx_mstate_global->__pyx_n_u_Add_error_class, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[22])); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_12);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Add_error_class, __pyx_t_2) < (0)) __PYX_ERR(23, 107, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":116
 * 
 * 
 * def Remove_error_class(int errorclass: int) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Remove an *error class* from the known error classes.
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 116, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_errorclass, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(23, 116, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(23, 116, __pyx_L1_error)
  __pyx_t_12 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_17Remove_error_class, 0, __pyx_mstate_global->__pyx_n_u_Remove_error_class, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[23])); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 116, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_12);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_12, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Remove_error_class, __pyx_t_12) < (0)) __PYX_ERR(23, 116, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":123
 * 
 * 
 * def Add_error_code(int errorclass: int) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Add an *error code* to an *error class*.
*/
  __pyx_t_12 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_errorclass, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(23, 123, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(23, 123, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_19Add_error_code, 0, __pyx_mstate_global->__pyx_n_u_Add_error_code, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[24])); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_12);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Add_error_code, __pyx_t_2) < (0)) __PYX_ERR(23, 123, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":132
 * 
 * 
 * def Remove_error_code(int errorcode: int) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Remove an *error code* from the known error codes.
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_errorcode, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(23, 132, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(23, 132, __pyx_L1_error)
  __pyx_t_12 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_21Remove_error_code, 0, __pyx_mstate_global->__pyx_n_u_Remove_error_code, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[25])); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_12);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_12, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Remove_error_code, __pyx_t_12) < (0)) __PYX_ERR(23, 132, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":139
 * 
 * 
 * def Add_error_string(int errorcode: int, string: str) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Associate an *error string* with an *error class* or *error code*.
*/
  __pyx_t_12 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_errorcode, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(23, 139, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_string, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(23, 139, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(23, 139, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_23Add_error_string, 0, __pyx_mstate_global->__pyx_n_u_Add_error_string, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[26])); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_12);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Add_error_string, __pyx_t_2) < (0)) __PYX_ERR(23, 139, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":148
 * 
 * 
 * def Remove_error_string(int errorcode: int) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Remove *error string* association from *error class* or *error code*.
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_errorcode, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(23, 148, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(23, 148, __pyx_L1_error)
  __pyx_t_12 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_25Remove_error_string, 0, __pyx_mstate_global->__pyx_n_u_Remove_error_string, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[27])); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_12);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_12, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Remove_error_string, __pyx_t_12) < (0)) __PYX_ERR(23, 148, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/Exception.pyx":4
 * # ---------------
 * 
 * class Exception(RuntimeError):             # <<<<<<<<<<<<<<
 *     """
 *     Exception class.
*/
  __pyx_t_12 = PyTuple_Pack(1, ((PyObject *)(((PyTypeObject*)PyExc_RuntimeError)))); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_2 = __Pyx_PEP560_update_bases(__pyx_t_12); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_11 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_11, __pyx_t_2, __pyx_mstate_global->__pyx_n_u_Exception, __pyx_mstate_global->__pyx_n_u_Exception, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_kp_u_Exception_class); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__pyx_t_2 != __pyx_t_12) {
    if (unlikely((PyDict_SetItemString(__pyx_t_3, "__orig_bases__", __pyx_t_12) < 0))) __PYX_ERR(2, 4, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/Exception.pyx":9
 *     """
 * 
 *     def __init__(self, int ierr: int = SUCCESS, /) -> None:             # <<<<<<<<<<<<<<
 *         """Initialize self."""
 *         if ierr < MPI_SUCCESS: ierr = MPI_ERR_UNKNOWN
*/
  __pyx_t_12 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 9, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_ierr, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(2, 9, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(2, 9, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception_1__init__, 0, __pyx_mstate_global->__pyx_n_u_Exception___init, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[28])); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 9, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  if (!__Pyx_CyFunction_InitDefaults(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI___pyx_defaults)) __PYX_ERR(2, 9, __pyx_L1_error)
  __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_SUCCESS); if (unlikely(!__pyx_t_14)) __PYX_ERR(2, 9, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_14); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 9, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __Pyx_CyFunction_Defaults(struct __pyx_defaults, __pyx_t_5)->arg0 = __pyx_t_4;
  __Pyx_CyFunction_SetDefaultsGetter(__pyx_t_5, __pyx_pf_6mpi4py_3MPI_108__defaults__);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_12);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_5) < (0)) __PYX_ERR(2, 9, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Exception.pyx":14
 *         RuntimeError.__init__(self, ierr)
 * 
 *     def __int__(self) -> int:             # <<<<<<<<<<<<<<
 *         """Return int(self)."""
 *         return self.args[0]
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(2, 14, __pyx_L1_error)
  __pyx_t_12 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception_3__int__, 0, __pyx_mstate_global->__pyx_n_u_Exception___int, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[29])); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_12);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_12, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_int_2, __pyx_t_12) < (0)) __PYX_ERR(2, 14, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/Exception.pyx":18
 *         return self.args[0]
 * 
 *     def __bool__(self) -> bool:             # <<<<<<<<<<<<<<
 *         """Return bool(self)."""
 *         return <int>self != MPI_SUCCESS
*/
  __pyx_t_12 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(2, 18, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception_5__bool__, 0, __pyx_mstate_global->__pyx_n_u_Exception___bool, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[30])); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_12);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_bool_2, __pyx_t_5) < (0)) __PYX_ERR(2, 18, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Exception.pyx":22
 *         return <int>self != MPI_SUCCESS
 * 
 *     def __hash__(self) -> int:             # <<<<<<<<<<<<<<
 *         """Return hash(self)."""
 *         return hash(int(self))
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(2, 22, __pyx_L1_error)
  __pyx_t_12 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception_7__hash__, 0, __pyx_mstate_global->__pyx_n_u_Exception___hash, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[31])); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_12);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_12, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_hash, __pyx_t_12) < (0)) __PYX_ERR(2, 22, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/Exception.pyx":26
 *         return hash(int(self))
 * 
 *     def __eq__(self, object other: object, /) -> bool:             # <<<<<<<<<<<<<<
 *         """Return self==value."""
 *         return int(self) == other
*/
  __pyx_t_12 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_other, __pyx_mstate_global->__pyx_n_u_object) < (0)) __PYX_ERR(2, 26, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(2, 26, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception_9__eq__, 0, __pyx_mstate_global->__pyx_n_u_Exception___eq, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[32])); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_12);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_eq, __pyx_t_5) < (0)) __PYX_ERR(2, 26, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Exception.pyx":30
 *         return int(self) == other
 * 
 *     def __ne__(self, object other: object, /) -> bool:             # <<<<<<<<<<<<<<
 *         """Return self!=other."""
 *         return int(self) != other
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_other, __pyx_mstate_global->__pyx_n_u_object) < (0)) __PYX_ERR(2, 30, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(2, 30, __pyx_L1_error)
  __pyx_t_12 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception_11__ne__, 0, __pyx_mstate_global->__pyx_n_u_Exception___ne, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[33])); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_12);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_12, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ne, __pyx_t_12) < (0)) __PYX_ERR(2, 30, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/Exception.pyx":34
 *         return int(self) != other
 * 
 *     def __lt__(self, object other: int, /) -> bool:             # <<<<<<<<<<<<<<
 *         """Return self<other."""
 *         return int(self) < other
*/
  __pyx_t_12 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_other, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(2, 34, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(2, 34, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception_13__lt__, 0, __pyx_mstate_global->__pyx_n_u_Exception___lt, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[34])); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_12);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_lt, __pyx_t_5) < (0)) __PYX_ERR(2, 34, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Exception.pyx":38
 *         return int(self) < other
 * 
 *     def __le__(self, object other: int, /) -> bool:             # <<<<<<<<<<<<<<
 *         """Return self<=other."""
 *         return int(self) <= other
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_other, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(2, 38, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(2, 38, __pyx_L1_error)
  __pyx_t_12 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception_15__le__, 0, __pyx_mstate_global->__pyx_n_u_Exception___le, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[35])); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_12);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_12, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_le, __pyx_t_12) < (0)) __PYX_ERR(2, 38, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/Exception.pyx":42
 *         return int(self) <= other
 * 
 *     def __gt__(self, object other: int, /) -> bool:             # <<<<<<<<<<<<<<
 *         """Return self>other."""
 *         return int(self) > other
*/
  __pyx_t_12 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_other, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(2, 42, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(2, 42, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception_17__gt__, 0, __pyx_mstate_global->__pyx_n_u_Exception___gt, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[36])); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_12);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_gt, __pyx_t_5) < (0)) __PYX_ERR(2, 42, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Exception.pyx":46
 *         return int(self) > other
 * 
 *     def __ge__(self, object other: int, /) -> bool:             # <<<<<<<<<<<<<<
 *         """Return self>=other."""
 *         return int(self) >= other
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_other, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(2, 46, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(2, 46, __pyx_L1_error)
  __pyx_t_12 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception_19__ge__, 0, __pyx_mstate_global->__pyx_n_u_Exception___ge, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[37])); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_12);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_12, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ge, __pyx_t_12) < (0)) __PYX_ERR(2, 46, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/Exception.pyx":50
 *         return int(self) >= other
 * 
 *     def __repr__(self) -> str:             # <<<<<<<<<<<<<<
 *         """Return repr(self)."""
 *         return f"MPI.Exception({int(self)})"
*/
  __pyx_t_12 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(2, 50, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception_21__repr__, 0, __pyx_mstate_global->__pyx_n_u_Exception___repr, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[38])); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_12);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_repr, __pyx_t_5) < (0)) __PYX_ERR(2, 50, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Exception.pyx":54
 *         return f"MPI.Exception({int(self)})"
 * 
 *     def __str__(self) -> str:             # <<<<<<<<<<<<<<
 *         """Return str(self)."""
 *         if mpi_version < 4 and not mpi_active():
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(2, 54, __pyx_L1_error)
  __pyx_t_12 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception_23__str__, 0, __pyx_mstate_global->__pyx_n_u_Exception___str, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[39])); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_12);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_12, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_str_2, __pyx_t_12) < (0)) __PYX_ERR(2, 54, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/Exception.pyx":60
 *         return self.Get_error_string()
 * 
 *     def Get_error_code(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Error code.
*/
  __pyx_t_12 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(2, 60, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception_25Get_error_code, 0, __pyx_mstate_global->__pyx_n_u_Exception_Get_error_code, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[40])); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_12);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Get_error_code, __pyx_t_5) < (0)) __PYX_ERR(2, 60, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Exception.pyx":67
 *         return errorcode
 * 
 *     def Get_error_class(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Error class.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(2, 67, __pyx_L1_error)
  __pyx_t_12 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception_27Get_error_class, 0, __pyx_mstate_global->__pyx_n_u_Exception_Get_error_class, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[41])); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_12);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_12, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Get_error_class, __pyx_t_12) < (0)) __PYX_ERR(2, 67, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "src/mpi4py/MPI.src/Exception.pyx":76
 *         return errorclass
 * 
 *     def Get_error_string(self) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Error string.
*/
  __pyx_t_12 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(2, 76, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception_29Get_error_string, 0, __pyx_mstate_global->__pyx_n_u_Exception_Get_error_string, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[42])); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_12);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Get_error_string, __pyx_t_5) < (0)) __PYX_ERR(2, 76, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Exception.pyx":86
 *         return tompistr(string, resultlen)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def error_code(self) -> int:
 *         """Error code."""
*/
  __pyx_t_12 = NULL;
  __pyx_t_14 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(2, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  if (PyDict_SetItem(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(2, 86, __pyx_L1_error)
  __pyx_t_15 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception_31error_code, 0, __pyx_mstate_global->__pyx_n_u_Exception_error_code, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[43])); if (unlikely(!__pyx_t_15)) __PYX_ERR(2, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_15);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_15, __pyx_t_14);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_t_15};
    __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_property, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 86, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
  }
  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_error_code_2, __pyx_t_5) < (0)) __PYX_ERR(2, 86, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Exception.pyx":91
 *         return self.Get_error_code()
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def error_class(self) -> int:
 *         """Error class."""
*/
  __pyx_t_15 = NULL;
  __pyx_t_12 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (PyDict_SetItem(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(2, 91, __pyx_L1_error)
  __pyx_t_14 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception_33error_class, 0, __pyx_mstate_global->__pyx_n_u_Exception_error_class, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[44])); if (unlikely(!__pyx_t_14)) __PYX_ERR(2, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_14);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_14, __pyx_t_12);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_15, __pyx_t_14};
    __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_property, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 91, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
  }
  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_error_class, __pyx_t_5) < (0)) __PYX_ERR(2, 91, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Exception.pyx":96
 *         return self.Get_error_class()
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def error_string(self) -> str:
 *         """Error string."""
*/
  __pyx_t_14 = NULL;
  __pyx_t_15 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_15)) __PYX_ERR(2, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  if (PyDict_SetItem(__pyx_t_15, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(2, 96, __pyx_L1_error)
  __pyx_t_12 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception_35error_string, 0, __pyx_mstate_global->__pyx_n_u_Exception_error_string, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[45])); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_12);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_12, __pyx_t_15);
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_14, __pyx_t_12};
    __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_property, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
  }
  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_error_string, __pyx_t_5) < (0)) __PYX_ERR(2, 96, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Exception.pyx":4
 * # ---------------
 * 
 * class Exception(RuntimeError):             # <<<<<<<<<<<<<<
 *     """
 *     Exception class.
*/
  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_Exception, __pyx_t_2, __pyx_t_3, NULL, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Exception, __pyx_t_5) < (0)) __PYX_ERR(2, 4, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Exception.pyx":102
 * 
 * 
 * MPIException = Exception             # <<<<<<<<<<<<<<
*/
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_Exception); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_MPIException);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_MPIException, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "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_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ORDER_C); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ORDER_C, __pyx_t_2) < (0)) __PYX_ERR(24, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 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_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ORDER_FORTRAN); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ORDER_FORTRAN, __pyx_t_2) < (0)) __PYX_ERR(24, 4, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 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_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_ORDER_FORTRAN); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ORDER_F, __pyx_t_2) < (0)) __PYX_ERR(24, 5, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":10
 * # Type classes for Fortran datatype matching
 * # ------------------------------------------
 * TYPECLASS_LOGICAL = MPI_TYPECLASS_LOGICAL             # <<<<<<<<<<<<<<
 * TYPECLASS_INTEGER = MPI_TYPECLASS_INTEGER
 * TYPECLASS_REAL    = MPI_TYPECLASS_REAL
*/
  __pyx_t_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_TYPECLASS_LOGICAL); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_TYPECLASS_LOGICAL, __pyx_t_2) < (0)) __PYX_ERR(24, 10, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":11
 * # ------------------------------------------
 * TYPECLASS_LOGICAL = MPI_TYPECLASS_LOGICAL
 * TYPECLASS_INTEGER = MPI_TYPECLASS_INTEGER             # <<<<<<<<<<<<<<
 * TYPECLASS_REAL    = MPI_TYPECLASS_REAL
 * TYPECLASS_COMPLEX = MPI_TYPECLASS_COMPLEX
*/
  __pyx_t_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_TYPECLASS_INTEGER); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_TYPECLASS_INTEGER, __pyx_t_2) < (0)) __PYX_ERR(24, 11, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":12
 * TYPECLASS_LOGICAL = MPI_TYPECLASS_LOGICAL
 * TYPECLASS_INTEGER = MPI_TYPECLASS_INTEGER
 * TYPECLASS_REAL    = MPI_TYPECLASS_REAL             # <<<<<<<<<<<<<<
 * TYPECLASS_COMPLEX = MPI_TYPECLASS_COMPLEX
 * 
*/
  __pyx_t_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_TYPECLASS_REAL); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_TYPECLASS_REAL, __pyx_t_2) < (0)) __PYX_ERR(24, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":13
 * TYPECLASS_INTEGER = MPI_TYPECLASS_INTEGER
 * TYPECLASS_REAL    = MPI_TYPECLASS_REAL
 * TYPECLASS_COMPLEX = MPI_TYPECLASS_COMPLEX             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_TYPECLASS_COMPLEX); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 13, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_TYPECLASS_COMPLEX, __pyx_t_2) < (0)) __PYX_ERR(24, 13, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":18
 * # 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_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_DISTRIBUTE_NONE); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_DISTRIBUTE_NONE, __pyx_t_2) < (0)) __PYX_ERR(24, 18, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 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_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_DISTRIBUTE_BLOCK); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_DISTRIBUTE_BLOCK, __pyx_t_2) < (0)) __PYX_ERR(24, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":20
 * 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_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_DISTRIBUTE_CYCLIC); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_DISTRIBUTE_CYCLIC, __pyx_t_2) < (0)) __PYX_ERR(24, 20, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":21
 * 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_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_DISTRIBUTE_DFLT_DARG); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_DISTRIBUTE_DFLT_DARG, __pyx_t_2) < (0)) __PYX_ERR(24, 21, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":26
 * # Combiner values for datatype decoding
 * # -------------------------------------
 * COMBINER_NAMED            = MPI_COMBINER_NAMED             # <<<<<<<<<<<<<<
 * COMBINER_DUP              = MPI_COMBINER_DUP
 * COMBINER_CONTIGUOUS       = MPI_COMBINER_CONTIGUOUS
*/
  __pyx_t_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_COMBINER_NAMED); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_COMBINER_NAMED, __pyx_t_2) < (0)) __PYX_ERR(24, 26, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 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
*/
  __pyx_t_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_COMBINER_DUP); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_COMBINER_DUP, __pyx_t_2) < (0)) __PYX_ERR(24, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":28
 * 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_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_COMBINER_CONTIGUOUS); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_COMBINER_CONTIGUOUS, __pyx_t_2) < (0)) __PYX_ERR(24, 28, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":29
 * 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_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_COMBINER_VECTOR); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_COMBINER_VECTOR, __pyx_t_2) < (0)) __PYX_ERR(24, 29, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":30
 * 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_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_COMBINER_HVECTOR); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_COMBINER_HVECTOR, __pyx_t_2) < (0)) __PYX_ERR(24, 30, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":31
 * 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_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_COMBINER_INDEXED); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_COMBINER_INDEXED, __pyx_t_2) < (0)) __PYX_ERR(24, 31, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":32
 * 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_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_COMBINER_HINDEXED); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_COMBINER_HINDEXED, __pyx_t_2) < (0)) __PYX_ERR(24, 32, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":33
 * 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_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_COMBINER_INDEXED_BLOCK); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_COMBINER_INDEXED_BLOCK, __pyx_t_2) < (0)) __PYX_ERR(24, 33, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":34
 * 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_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_COMBINER_HINDEXED_BLOCK); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_COMBINER_HINDEXED_BLOCK, __pyx_t_2) < (0)) __PYX_ERR(24, 34, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":35
 * 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_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_COMBINER_STRUCT); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_COMBINER_STRUCT, __pyx_t_2) < (0)) __PYX_ERR(24, 35, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":36
 * 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_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_COMBINER_SUBARRAY); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_COMBINER_SUBARRAY, __pyx_t_2) < (0)) __PYX_ERR(24, 36, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":37
 * 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_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_COMBINER_DARRAY); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_COMBINER_DARRAY, __pyx_t_2) < (0)) __PYX_ERR(24, 37, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":38
 * 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_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_COMBINER_RESIZED); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_COMBINER_RESIZED, __pyx_t_2) < (0)) __PYX_ERR(24, 38, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":39
 * 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_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_COMBINER_VALUE_INDEX); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_COMBINER_VALUE_INDEX, __pyx_t_2) < (0)) __PYX_ERR(24, 39, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":40
 * 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_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_COMBINER_F90_INTEGER); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_COMBINER_F90_INTEGER, __pyx_t_2) < (0)) __PYX_ERR(24, 40, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":41
 * 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_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_COMBINER_F90_REAL); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_COMBINER_F90_REAL, __pyx_t_2) < (0)) __PYX_ERR(24, 41, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":42
 * COMBINER_F90_INTEGER      = MPI_COMBINER_F90_INTEGER
 * COMBINER_F90_REAL         = MPI_COMBINER_F90_REAL
 * COMBINER_F90_COMPLEX      = MPI_COMBINER_F90_COMPLEX             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_COMBINER_F90_COMPLEX); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_COMBINER_F90_COMPLEX, __pyx_t_2) < (0)) __PYX_ERR(24, 42, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":63
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_Datatype(self)
 * 
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_str_tuple_Any) < (0)) __PYX_ERR(24, 63, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_9__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype___reduce, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[46])); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_reduce, __pyx_t_11) < (0)) __PYX_ERR(24, 63, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":71
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Datatype:
 *         """
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_handle, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 71, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Datatype) < (0)) __PYX_ERR(24, 71, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_11fromhandle, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_fromhandle, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[47])); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_fromhandle, __pyx_t_2) < (0)) __PYX_ERR(24, 71, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_fromhandle); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_11 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_fromhandle, __pyx_t_11) < (0)) __PYX_ERR(24, 71, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":78
 *         return fromhandle(<MPI_Datatype> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Free` if not null or predefined.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(24, 78, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_13free, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_free, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[48])); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_free, __pyx_t_2) < (0)) __PYX_ERR(24, 78, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":87
 *     # ------------------
 * 
 *     def Get_size(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of bytes occupied by entries in the datatype.
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 87, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_15Get_size, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Get_size, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[49])); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Get_size, __pyx_t_11) < (0)) __PYX_ERR(24, 87, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":102
 *             return size
 * 
 *     def Get_extent(self) -> tuple[int, int]:             # <<<<<<<<<<<<<<
 *         """
 *         Return lower bound and extent of datatype.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_tuple_int_int) < (0)) __PYX_ERR(24, 102, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_17Get_extent, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Get_extent, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[50])); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Get_extent, __pyx_t_2) < (0)) __PYX_ERR(24, 102, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":134
 *     # ---------------------
 * 
 *     def Dup(self) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate a datatype.
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(24, 134, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_19Dup, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Dup, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[51])); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Dup, __pyx_t_11) < (0)) __PYX_ERR(24, 134, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":142
 *         return datatype
 * 
 *     Create_dup = Dup  #: convenience alias             # <<<<<<<<<<<<<<
 * 
 *     def Create_contiguous(self, Count count: int) -> Self:
*/
  __Pyx_GetNameInClass(__pyx_t_11, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Dup); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Create_dup, __pyx_t_11) < (0)) __PYX_ERR(24, 142, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":144
 *     Create_dup = Dup  #: convenience alias
 * 
 *     def Create_contiguous(self, Count count: int) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Create a contiguous datatype.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_count, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 144, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(24, 144, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_21Create_contiguous, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Create_contiguous, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[52])); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Create_contiguous, __pyx_t_2) < (0)) __PYX_ERR(24, 144, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":154
 *         return datatype
 * 
 *     def Create_vector(             # <<<<<<<<<<<<<<
 *         self,
 *         Count count: int,
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_count, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 154, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_blocklength, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 154, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_stride, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 154, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(24, 154, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_23Create_vector, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Create_vector, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[53])); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Create_vector, __pyx_t_11) < (0)) __PYX_ERR(24, 154, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":169
 *         return datatype
 * 
 *     def Create_hvector(             # <<<<<<<<<<<<<<
 *         self,
 *         Count count: int,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_count, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 169, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_blocklength, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 169, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_stride, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 169, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(24, 169, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_25Create_hvector, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Create_hvector, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[54])); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Create_hvector, __pyx_t_2) < (0)) __PYX_ERR(24, 169, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":184
 *         return datatype
 * 
 *     def Create_indexed(             # <<<<<<<<<<<<<<
 *         self,
 *         blocklengths: Sequence[int],
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_blocklengths, __pyx_mstate_global->__pyx_kp_u_Sequence_int) < (0)) __PYX_ERR(24, 184, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_displacements, __pyx_mstate_global->__pyx_kp_u_Sequence_int) < (0)) __PYX_ERR(24, 184, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(24, 184, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_27Create_indexed, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Create_indexed, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[55])); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Create_indexed, __pyx_t_11) < (0)) __PYX_ERR(24, 184, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":202
 *         return datatype
 * 
 *     def Create_hindexed(             # <<<<<<<<<<<<<<
 *         self,
 *         blocklengths: Sequence[int],
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_blocklengths, __pyx_mstate_global->__pyx_kp_u_Sequence_int) < (0)) __PYX_ERR(24, 202, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_displacements, __pyx_mstate_global->__pyx_kp_u_Sequence_int) < (0)) __PYX_ERR(24, 202, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(24, 202, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_29Create_hindexed, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Create_hindexed, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[56])); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Create_hindexed, __pyx_t_2) < (0)) __PYX_ERR(24, 202, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":223
 *         return datatype
 * 
 *     def Create_indexed_block(             # <<<<<<<<<<<<<<
 *         self,
 *         Count blocklength: int,
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 223, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_blocklength, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 223, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_displacements, __pyx_mstate_global->__pyx_kp_u_Sequence_int) < (0)) __PYX_ERR(24, 223, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(24, 223, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_31Create_indexed_block, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Create_indexed_block, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[57])); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 223, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Create_indexed_block, __pyx_t_11) < (0)) __PYX_ERR(24, 223, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":240
 *         return datatype
 * 
 *     def Create_hindexed_block(             # <<<<<<<<<<<<<<
 *         self,
 *         Count blocklength: int,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 240, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_blocklength, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 240, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_displacements, __pyx_mstate_global->__pyx_kp_u_Sequence_int) < (0)) __PYX_ERR(24, 240, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(24, 240, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_33Create_hindexed_block, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Create_hindexed_block, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[58])); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 240, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Create_hindexed_block, __pyx_t_2) < (0)) __PYX_ERR(24, 240, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":259
 *         return datatype
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_struct(
 *         cls,
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_blocklengths, __pyx_mstate_global->__pyx_kp_u_Sequence_int) < (0)) __PYX_ERR(24, 259, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_displacements, __pyx_mstate_global->__pyx_kp_u_Sequence_int) < (0)) __PYX_ERR(24, 259, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_datatypes, __pyx_mstate_global->__pyx_kp_u_Sequence_Datatype) < (0)) __PYX_ERR(24, 259, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(24, 259, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_35Create_struct, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Create_struct, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[59])); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Create_struct, __pyx_t_11) < (0)) __PYX_ERR(24, 259, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_GetNameInClass(__pyx_t_11, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Create_struct); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Create_struct, __pyx_t_2) < (0)) __PYX_ERR(24, 259, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":291
 *         subsizes: Sequence[int],
 *         starts: Sequence[int],
 *         int order: int = ORDER_C,             # <<<<<<<<<<<<<<
 *     ) -> Self:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ORDER_C); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(24, 291, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_mstate_global->__pyx_k__7 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Datatype.pyx":286
 *     # -----------------------------
 * 
 *     def Create_subarray(             # <<<<<<<<<<<<<<
 *         self,
 *         sizes: Sequence[int],
*/
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ORDER_C); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "src/mpi4py/MPI.src/Datatype.pyx":291
 *         subsizes: Sequence[int],
 *         starts: Sequence[int],
 *         int order: int = ORDER_C,             # <<<<<<<<<<<<<<
 *     ) -> Self:
 *         """
*/
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(24, 291, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "src/mpi4py/MPI.src/Datatype.pyx":286
 *     # -----------------------------
 * 
 *     def Create_subarray(             # <<<<<<<<<<<<<<
 *         self,
 *         sizes: Sequence[int],
*/
  __pyx_t_11 = PyTuple_Pack(1, __pyx_t_2); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_sizes, __pyx_mstate_global->__pyx_kp_u_Sequence_int) < (0)) __PYX_ERR(24, 286, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_subsizes, __pyx_mstate_global->__pyx_kp_u_Sequence_int) < (0)) __PYX_ERR(24, 286, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_starts, __pyx_mstate_global->__pyx_kp_u_Sequence_int) < (0)) __PYX_ERR(24, 286, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_order, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 286, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(24, 286, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_37Create_subarray, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Create_subarray, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[60])); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_11);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Create_subarray, __pyx_t_3) < (0)) __PYX_ERR(24, 286, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":321
 *         dargs: Sequence[int],
 *         psizes: Sequence[int],
 *         int order: int = ORDER_C,             # <<<<<<<<<<<<<<
 *     ) -> Self:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ORDER_C); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(24, 321, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_mstate_global->__pyx_k__8 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Datatype.pyx":313
 *     # --------------------------------------
 * 
 *     def Create_darray(             # <<<<<<<<<<<<<<
 *         self,
 *         int size: int,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ORDER_C); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Datatype.pyx":321
 *         dargs: Sequence[int],
 *         psizes: Sequence[int],
 *         int order: int = ORDER_C,             # <<<<<<<<<<<<<<
 *     ) -> Self:
 *         """
*/
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(24, 321, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Datatype.pyx":313
 *     # --------------------------------------
 * 
 *     def Create_darray(             # <<<<<<<<<<<<<<
 *         self,
 *         int size: int,
*/
  __pyx_t_2 = PyTuple_Pack(1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 313, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(8); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 313, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_size_2, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 313, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_rank, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 313, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_gsizes, __pyx_mstate_global->__pyx_kp_u_Sequence_int) < (0)) __PYX_ERR(24, 313, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_distribs, __pyx_mstate_global->__pyx_kp_u_Sequence_int) < (0)) __PYX_ERR(24, 313, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_dargs, __pyx_mstate_global->__pyx_kp_u_Sequence_int) < (0)) __PYX_ERR(24, 313, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_psizes, __pyx_mstate_global->__pyx_kp_u_Sequence_int) < (0)) __PYX_ERR(24, 313, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_order, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 313, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(24, 313, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_39Create_darray, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Create_darray, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[61])); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 313, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_t_2);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Create_darray, __pyx_t_11) < (0)) __PYX_ERR(24, 313, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":344
 *     # -------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Get_value_index(
 *         cls,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 344, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_value, __pyx_mstate_global->__pyx_n_u_Datatype) < (0)) __PYX_ERR(24, 344, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_index, __pyx_mstate_global->__pyx_n_u_Datatype) < (0)) __PYX_ERR(24, 344, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(24, 344, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_41Get_value_index, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Get_value_index, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[62])); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 344, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Get_value_index, __pyx_t_3) < (0)) __PYX_ERR(24, 344, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Get_value_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 344, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_11 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 344, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Get_value_index, __pyx_t_11) < (0)) __PYX_ERR(24, 344, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":361
 *     # ------------------------------------------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_f90_integer(cls, int r: int) -> Self:
 *         """
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 361, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_r, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 361, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(24, 361, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_43Create_f90_integer, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Create_f90_integer, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[63])); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 361, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Create_f90_integer, __pyx_t_3) < (0)) __PYX_ERR(24, 361, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Create_f90_integer); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 361, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_11 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 361, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Create_f90_integer, __pyx_t_11) < (0)) __PYX_ERR(24, 361, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":370
 *         return datatype
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_f90_real(cls, int p: int, int r: int) -> Self:
 *         """
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 370, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_p, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 370, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_r, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 370, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(24, 370, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_45Create_f90_real, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Create_f90_real, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[64])); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 370, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Create_f90_real, __pyx_t_3) < (0)) __PYX_ERR(24, 370, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Create_f90_real); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 370, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_11 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 370, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Create_f90_real, __pyx_t_11) < (0)) __PYX_ERR(24, 370, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":379
 *         return datatype
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_f90_complex(cls, int p: int, int r: int) -> Self:
 *         """
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 379, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_p, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 379, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_r, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 379, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(24, 379, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_47Create_f90_complex, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Create_f90_complex, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[65])); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 379, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Create_f90_complex, __pyx_t_3) < (0)) __PYX_ERR(24, 379, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Create_f90_complex); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 379, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_11 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 379, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Create_f90_complex, __pyx_t_11) < (0)) __PYX_ERR(24, 379, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":388
 *         return datatype
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Match_size(cls, int typeclass: int, int size: int) -> Self:
 *         """
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 388, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_typeclass, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 388, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_size_2, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 388, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(24, 388, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_49Match_size, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Match_size, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[66])); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 388, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Match_size, __pyx_t_3) < (0)) __PYX_ERR(24, 388, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Match_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 388, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_11 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 388, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Match_size, __pyx_t_11) < (0)) __PYX_ERR(24, 388, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":400
 *     # ------------------------
 * 
 *     def Commit(self) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Commit the datatype.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(24, 400, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_51Commit, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Commit, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[67])); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Commit, __pyx_t_3) < (0)) __PYX_ERR(24, 400, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":407
 *         return self
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free the datatype.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 407, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(24, 407, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_53Free, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Free, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[68])); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 407, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Free, __pyx_t_11) < (0)) __PYX_ERR(24, 407, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":418
 *     # -----------------
 * 
 *     def Create_resized(self, Count lb: int, Count extent: int) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Create a datatype with a new lower bound and extent.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_lb_2, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 418, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_extent, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 418, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(24, 418, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_55Create_resized, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Create_resized, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[69])); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Create_resized, __pyx_t_3) < (0)) __PYX_ERR(24, 418, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":427
 *         return datatype
 * 
 *     Resized = Create_resized  #: compatibility alias             # <<<<<<<<<<<<<<
 * 
 *     def Get_true_extent(self) -> tuple[int, int]:
*/
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Create_resized); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 427, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Resized, __pyx_t_3) < (0)) __PYX_ERR(24, 427, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":429
 *     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(24, 429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_tuple_int_int) < (0)) __PYX_ERR(24, 429, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_57Get_true_extent, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Get_true_extent, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[70])); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Get_true_extent, __pyx_t_11) < (0)) __PYX_ERR(24, 429, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":465
 *     # -------------------
 * 
 *     def Get_envelope(self) -> tuple[int, int, int, int, int]:             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of input arguments used to create a datatype.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 465, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_tuple_int_int_int_int_int) < (0)) __PYX_ERR(24, 465, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_59Get_envelope, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Get_envelope, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[71])); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 465, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Get_envelope, __pyx_t_3) < (0)) __PYX_ERR(24, 465, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":480
 *             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(24, 480, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_tuple_list_int_list_int_list_int) < (0)) __PYX_ERR(24, 480, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_61Get_contents, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Get_contents, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[72])); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 480, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Get_contents, __pyx_t_11) < (0)) __PYX_ERR(24, 480, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":511
 *             return self.Get_contents()
 * 
 *     def decode(self) -> tuple[Datatype, str, dict[str, Any]]:             # <<<<<<<<<<<<<<
 *         """
 *         Convenience method for decoding a datatype.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_tuple_Datatype_str_dict_str_Any) < (0)) __PYX_ERR(24, 511, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_63decode, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_decode, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[73])); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_decode, __pyx_t_3) < (0)) __PYX_ERR(24, 511, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":543
 *     # ---------------
 * 
 *     def Pack(             # <<<<<<<<<<<<<<
 *         self,
 *         inbuf: BufSpec,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 543, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_inbuf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(24, 543, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_outbuf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(24, 543, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_position, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 543, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_comm, __pyx_mstate_global->__pyx_n_u_Comm) < (0)) __PYX_ERR(24, 543, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 543, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_65Pack, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Pack, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[74])); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 543, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Pack, __pyx_t_11) < (0)) __PYX_ERR(24, 543, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":569
 *         return position
 * 
 *     def Unpack(             # <<<<<<<<<<<<<<
 *         self,
 *         inbuf: BufSpec,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 569, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_inbuf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(24, 569, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_position, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 569, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_outbuf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(24, 569, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_comm, __pyx_mstate_global->__pyx_n_u_Comm) < (0)) __PYX_ERR(24, 569, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 569, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_67Unpack, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Unpack, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[75])); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 569, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Unpack, __pyx_t_3) < (0)) __PYX_ERR(24, 569, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":595
 *         return position
 * 
 *     def Pack_size(             # <<<<<<<<<<<<<<
 *         self,
 *         Count count: int,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_count, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 595, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_comm, __pyx_mstate_global->__pyx_n_u_Comm) < (0)) __PYX_ERR(24, 595, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 595, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_69Pack_size, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Pack_size, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[76])); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Pack_size, __pyx_t_11) < (0)) __PYX_ERR(24, 595, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":614
 *     # -------------------------
 * 
 *     def Pack_external(             # <<<<<<<<<<<<<<
 *         self,
 *         datarep: str,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 614, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_datarep, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(24, 614, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_inbuf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(24, 614, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_outbuf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(24, 614, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_position, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 614, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 614, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_71Pack_external, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Pack_external, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[77])); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 614, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Pack_external, __pyx_t_3) < (0)) __PYX_ERR(24, 614, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":644
 *         return position
 * 
 *     def Unpack_external(             # <<<<<<<<<<<<<<
 *         self,
 *         datarep: str,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_datarep, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(24, 644, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_inbuf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(24, 644, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_position, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 644, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_outbuf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(24, 644, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 644, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_73Unpack_external, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Unpack_external, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[78])); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Unpack_external, __pyx_t_11) < (0)) __PYX_ERR(24, 644, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":674
 *         return position
 * 
 *     def Pack_external_size(             # <<<<<<<<<<<<<<
 *         self,
 *         datarep: str,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 674, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_datarep, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(24, 674, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_count, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 674, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 674, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_75Pack_external_size, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Pack_external_size, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[79])); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 674, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Pack_external_size, __pyx_t_3) < (0)) __PYX_ERR(24, 674, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":696
 *     # ----------
 * 
 *     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(24, 696, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_keyval, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 696, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_int_Any_None) < (0)) __PYX_ERR(24, 696, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_77Get_attr, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Get_attr, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[80])); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 696, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Get_attr, __pyx_t_11) < (0)) __PYX_ERR(24, 696, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":708
 *         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_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 708, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_keyval, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 708, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_attrval, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(24, 708, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(24, 708, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_79Set_attr, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Set_attr, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[81])); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 708, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Set_attr, __pyx_t_3) < (0)) __PYX_ERR(24, 708, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":714
 *         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(24, 714, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_keyval, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 714, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(24, 714, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_81Delete_attr, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Delete_attr, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[82])); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 714, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Delete_attr, __pyx_t_11) < (0)) __PYX_ERR(24, 714, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":720
 *         PyMPI_attr_del(self.ob_mpi, keyval)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_keyval(
 *         cls,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 720, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_copy_fn, __pyx_mstate_global->__pyx_kp_u_Callable_Datatype_int_Any_Any_No) < (0)) __PYX_ERR(24, 720, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_delete_fn, __pyx_mstate_global->__pyx_kp_u_Callable_Datatype_int_Any_None_N) < (0)) __PYX_ERR(24, 720, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_nopython, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(24, 720, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 720, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_83Create_keyval, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Create_keyval, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[83])); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 720, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[17]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Create_keyval, __pyx_t_3) < (0)) __PYX_ERR(24, 720, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Create_keyval); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 720, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_11 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 720, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Create_keyval, __pyx_t_11) < (0)) __PYX_ERR(24, 720, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":738
 *         return keyval
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Free_keyval(cls, int keyval: int) -> int:
 *         """
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 738, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_keyval, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 738, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 738, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_85Free_keyval, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Free_keyval, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[84])); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 738, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Free_keyval, __pyx_t_3) < (0)) __PYX_ERR(24, 738, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Free_keyval); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 738, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_11 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 738, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Free_keyval, __pyx_t_11) < (0)) __PYX_ERR(24, 738, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":751
 *     # --------------
 * 
 *     def Get_name(self) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Get the print name for this datatype.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 751, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(24, 751, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_87Get_name, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Get_name, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[85])); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 751, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Get_name, __pyx_t_3) < (0)) __PYX_ERR(24, 751, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":760
 *         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(24, 760, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_name_2, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(24, 760, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(24, 760, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_89Set_name, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_Set_name, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[86])); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 760, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_Set_name, __pyx_t_11) < (0)) __PYX_ERR(24, 760, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":779
 *     # --------------
 * 
 *     def toint(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate object to integer handle.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 779, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 779, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_91toint, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_toint, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[87])); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 779, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_toint, __pyx_t_3) < (0)) __PYX_ERR(24, 779, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":785
 *         return MPI_Type_toint(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromint(cls, arg: int, /) -> Datatype:
 *         """
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 785, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_arg, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 785, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Datatype) < (0)) __PYX_ERR(24, 785, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_93fromint, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_fromint, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[88])); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 785, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_fromint, __pyx_t_11) < (0)) __PYX_ERR(24, 785, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_GetNameInClass(__pyx_t_11, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_fromint); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 785, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 785, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_fromint, __pyx_t_3) < (0)) __PYX_ERR(24, 785, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":795
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 795, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 795, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_95py2f, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_py2f, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[89])); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 795, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_py2f, __pyx_t_11) < (0)) __PYX_ERR(24, 795, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":800
 *         return MPI_Type_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Datatype:
 *         """
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 800, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_arg, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 800, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Datatype) < (0)) __PYX_ERR(24, 800, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_97f2py, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_f2py, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[90])); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 800, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_f2py, __pyx_t_3) < (0)) __PYX_ERR(24, 800, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_f2py); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 800, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_11 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 800, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_f2py, __pyx_t_11) < (0)) __PYX_ERR(24, 800, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":809
 *     # -----------------------------
 * 
 *     def tocode(self) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Get character code or type string from predefined MPI datatype.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 809, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(24, 809, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_99tocode, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_tocode, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[91])); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 809, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_tocode, __pyx_t_3) < (0)) __PYX_ERR(24, 809, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":817
 *         raise ValueError("cannot map to character code or type string")
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromcode(cls, code: str) -> Datatype:
 *         """
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 817, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_code, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(24, 817, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Datatype) < (0)) __PYX_ERR(24, 817, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_101fromcode, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Datatype_fromcode, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[92])); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 817, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_fromcode, __pyx_t_11) < (0)) __PYX_ERR(24, 817, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_GetNameInClass(__pyx_t_11, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_fromcode); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 817, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 817, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_mstate_global->__pyx_n_u_fromcode, __pyx_t_3) < (0)) __PYX_ERR(24, 817, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":847
 * # -----------------
 * 
 * def Get_address(location: Buffer | Bottom) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Get the address of a location in memory.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 847, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_location, __pyx_mstate_global->__pyx_kp_u_Buffer_Bottom) < (0)) __PYX_ERR(24, 847, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 847, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_27Get_address, 0, __pyx_mstate_global->__pyx_n_u_Get_address, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[93])); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 847, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Get_address, __pyx_t_11) < (0)) __PYX_ERR(24, 847, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":859
 * 
 * 
 * def Aint_add(Aint base: int, Aint disp: int) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Return the sum of base address and displacement.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 859, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_base, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 859, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_disp, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 859, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 859, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_29Aint_add, 0, __pyx_mstate_global->__pyx_n_u_Aint_add, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[94])); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 859, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Aint_add, __pyx_t_3) < (0)) __PYX_ERR(24, 859, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":866
 * 
 * 
 * def Aint_diff(Aint addr1: int, Aint addr2: int) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Return the difference between absolute addresses.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 866, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_addr1, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 866, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_addr2, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 866, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(24, 866, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_31Aint_diff, 0, __pyx_mstate_global->__pyx_n_u_Aint_diff, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[95])); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 866, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Aint_diff, __pyx_t_11) < (0)) __PYX_ERR(24, 866, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":873
 * 
 * 
 * cdef Datatype __DATATYPE_NULL__ = def_Datatype( MPI_DATATYPE_NULL , "DATATYPE_NULL" )  # noqa             # <<<<<<<<<<<<<<
 * 
 * cdef Datatype __PACKED__ = def_Datatype( MPI_PACKED , "PACKED" )
*/
  __pyx_t_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_DATATYPE_NULL, __pyx_mstate_global->__pyx_n_u_DATATYPE_NULL)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 873, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___DATATYPE_NULL__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___DATATYPE_NULL__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":875
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_PACKED, __pyx_mstate_global->__pyx_n_u_PACKED)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 875, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___PACKED__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___PACKED__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":876
 * 
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_BYTE, __pyx_mstate_global->__pyx_n_u_BYTE)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 876, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___BYTE__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___BYTE__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":877
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_AINT, __pyx_mstate_global->__pyx_n_u_AINT)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 877, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___AINT__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___AINT__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":878
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_OFFSET, __pyx_mstate_global->__pyx_n_u_OFFSET)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 878, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___OFFSET__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___OFFSET__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":879
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_COUNT, __pyx_mstate_global->__pyx_n_u_COUNT)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 879, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___COUNT__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___COUNT__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":881
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_CHAR, __pyx_mstate_global->__pyx_n_u_CHAR)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 881, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___CHAR__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___CHAR__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":882
 * 
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_WCHAR, __pyx_mstate_global->__pyx_n_u_WCHAR)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 882, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___WCHAR__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___WCHAR__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":883
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_SIGNED_CHAR, __pyx_mstate_global->__pyx_n_u_SIGNED_CHAR)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 883, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___SIGNED_CHAR__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___SIGNED_CHAR__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":884
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_SHORT, __pyx_mstate_global->__pyx_n_u_SHORT)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 884, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___SHORT__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___SHORT__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":885
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_INT, __pyx_mstate_global->__pyx_n_u_INT)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 885, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___INT__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___INT__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":886
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_LONG, __pyx_mstate_global->__pyx_n_u_LONG)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 886, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___LONG__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___LONG__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":887
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_LONG_LONG, __pyx_mstate_global->__pyx_n_u_LONG_LONG)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 887, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_LONG__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___LONG_LONG__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":888
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_UNSIGNED_CHAR, __pyx_mstate_global->__pyx_n_u_UNSIGNED_CHAR)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 888, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_CHAR__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___UNSIGNED_CHAR__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":889
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_UNSIGNED_SHORT, __pyx_mstate_global->__pyx_n_u_UNSIGNED_SHORT)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 889, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":890
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_UNSIGNED, __pyx_mstate_global->__pyx_n_u_UNSIGNED)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 890, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___UNSIGNED__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":891
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_UNSIGNED_LONG, __pyx_mstate_global->__pyx_n_u_UNSIGNED_LONG)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":892
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_UNSIGNED_LONG_LONG, __pyx_mstate_global->__pyx_n_u_UNSIGNED_LONG_LONG)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 892, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG_LONG__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG_LONG__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":893
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_FLOAT, __pyx_mstate_global->__pyx_n_u_FLOAT)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___FLOAT__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":894
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_DOUBLE, __pyx_mstate_global->__pyx_n_u_DOUBLE)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 894, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___DOUBLE__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":895
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_LONG_DOUBLE, __pyx_mstate_global->__pyx_n_u_LONG_DOUBLE)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 895, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_DOUBLE__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___LONG_DOUBLE__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":897
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_C_BOOL, __pyx_mstate_global->__pyx_n_u_C_BOOL)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 897, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___C_BOOL__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___C_BOOL__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":898
 * 
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_INT8_T, __pyx_mstate_global->__pyx_n_u_INT8_T)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 898, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___INT8_T__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___INT8_T__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":899
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_INT16_T, __pyx_mstate_global->__pyx_n_u_INT16_T)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 899, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___INT16_T__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___INT16_T__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":900
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_INT32_T, __pyx_mstate_global->__pyx_n_u_INT32_T)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 900, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___INT32_T__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___INT32_T__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":901
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_INT64_T, __pyx_mstate_global->__pyx_n_u_INT64_T)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 901, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___INT64_T__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___INT64_T__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":902
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_UINT8_T, __pyx_mstate_global->__pyx_n_u_UINT8_T)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 902, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___UINT8_T__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___UINT8_T__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":903
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_UINT16_T, __pyx_mstate_global->__pyx_n_u_UINT16_T)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 903, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___UINT16_T__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___UINT16_T__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":904
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_UINT32_T, __pyx_mstate_global->__pyx_n_u_UINT32_T)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 904, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___UINT32_T__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___UINT32_T__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":905
 * 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 __FLOAT16_T__             = def_Datatype( MPI_FLOAT16_T             , "FLOAT16_T"             )  # noqa
*/
  __pyx_t_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_UINT64_T, __pyx_mstate_global->__pyx_n_u_UINT64_T)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 905, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___UINT64_T__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___UINT64_T__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":907
 * cdef Datatype __UINT64_T__              = def_Datatype( MPI_UINT64_T , "UINT64_T" )  # noqa
 * 
 * cdef Datatype __FLOAT16_T__             = def_Datatype( MPI_FLOAT16_T             , "FLOAT16_T"             )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __FLOAT32_T__             = __FLOAT__
 * cdef Datatype __FLOAT64_T__             = __DOUBLE__
*/
  __pyx_t_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_FLOAT16_T, __pyx_mstate_global->__pyx_n_u_FLOAT16_T)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 907, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT16_T__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___FLOAT16_T__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":908
 * 
 * cdef Datatype __FLOAT16_T__             = def_Datatype( MPI_FLOAT16_T             , "FLOAT16_T"             )  # noqa
 * cdef Datatype __FLOAT32_T__             = __FLOAT__             # <<<<<<<<<<<<<<
 * cdef Datatype __FLOAT64_T__             = __DOUBLE__
 * cdef Datatype __BFLOAT16_T__            = def_Datatype( MPI_BFLOAT16_T            , "BFLOAT16_T"            )  # noqa
*/
  __Pyx_INCREF((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT__);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT32_T__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___FLOAT32_T__, __pyx_v_6mpi4py_3MPI___FLOAT__);
  __Pyx_GIVEREF((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT__);

  /* "src/mpi4py/MPI.src/Datatype.pyx":909
 * cdef Datatype __FLOAT16_T__             = def_Datatype( MPI_FLOAT16_T             , "FLOAT16_T"             )  # noqa
 * cdef Datatype __FLOAT32_T__             = __FLOAT__
 * cdef Datatype __FLOAT64_T__             = __DOUBLE__             # <<<<<<<<<<<<<<
 * cdef Datatype __BFLOAT16_T__            = def_Datatype( MPI_BFLOAT16_T            , "BFLOAT16_T"            )  # noqa
 * cdef Datatype __C_COMPLEX__             = def_Datatype( MPI_C_COMPLEX             , "C_COMPLEX"             )  # noqa
*/
  __Pyx_INCREF((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE__);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT64_T__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___FLOAT64_T__, __pyx_v_6mpi4py_3MPI___DOUBLE__);
  __Pyx_GIVEREF((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE__);

  /* "src/mpi4py/MPI.src/Datatype.pyx":910
 * cdef Datatype __FLOAT32_T__             = __FLOAT__
 * cdef Datatype __FLOAT64_T__             = __DOUBLE__
 * cdef Datatype __BFLOAT16_T__            = def_Datatype( MPI_BFLOAT16_T            , "BFLOAT16_T"            )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __C_COMPLEX__             = def_Datatype( MPI_C_COMPLEX             , "C_COMPLEX"             )  # noqa
 * cdef Datatype __C_FLOAT_COMPLEX__       = __C_COMPLEX__
*/
  __pyx_t_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_BFLOAT16_T, __pyx_mstate_global->__pyx_n_u_BFLOAT16_T)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 910, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___BFLOAT16_T__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___BFLOAT16_T__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":911
 * cdef Datatype __FLOAT64_T__             = __DOUBLE__
 * cdef Datatype __BFLOAT16_T__            = def_Datatype( MPI_BFLOAT16_T            , "BFLOAT16_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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_C_COMPLEX, __pyx_mstate_global->__pyx_n_u_C_COMPLEX)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 911, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___C_COMPLEX__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___C_COMPLEX__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":912
 * cdef Datatype __BFLOAT16_T__            = def_Datatype( MPI_BFLOAT16_T            , "BFLOAT16_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
 * 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":913
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_C_DOUBLE_COMPLEX, __pyx_mstate_global->__pyx_n_u_C_DOUBLE_COMPLEX)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 913, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___C_DOUBLE_COMPLEX__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___C_DOUBLE_COMPLEX__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":914
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_C_LONG_DOUBLE_COMPLEX, __pyx_mstate_global->__pyx_n_u_C_LONG_DOUBLE_COMPLEX)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 914, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __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_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":916
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_CXX_BOOL, __pyx_mstate_global->__pyx_n_u_CXX_BOOL)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 916, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_BOOL__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___CXX_BOOL__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":917
 * 
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_CXX_FLOAT_COMPLEX, __pyx_mstate_global->__pyx_n_u_CXX_FLOAT_COMPLEX)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 917, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_FLOAT_COMPLEX__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___CXX_FLOAT_COMPLEX__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":918
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_CXX_DOUBLE_COMPLEX, __pyx_mstate_global->__pyx_n_u_CXX_DOUBLE_COMPLEX)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 918, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_DOUBLE_COMPLEX__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___CXX_DOUBLE_COMPLEX__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":919
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_CXX_LONG_DOUBLE_COMPLEX, __pyx_mstate_global->__pyx_n_u_CXX_LONG_DOUBLE_COMPLEX)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 919, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __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_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":921
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_SHORT_INT, __pyx_mstate_global->__pyx_n_u_SHORT_INT)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 921, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___SHORT_INT__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___SHORT_INT__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":922
 * 
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_2INT, __pyx_mstate_global->__pyx_n_u_INT_INT)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 922, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___INT_INT__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___INT_INT__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":923
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_LONG_INT, __pyx_mstate_global->__pyx_n_u_LONG_INT)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 923, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_INT__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___LONG_INT__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":924
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_FLOAT_INT, __pyx_mstate_global->__pyx_n_u_FLOAT_INT)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 924, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT_INT__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___FLOAT_INT__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":925
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_DOUBLE_INT, __pyx_mstate_global->__pyx_n_u_DOUBLE_INT)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 925, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_INT__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___DOUBLE_INT__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":926
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_LONG_DOUBLE_INT, __pyx_mstate_global->__pyx_n_u_LONG_DOUBLE_INT)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 926, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_DOUBLE_INT__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___LONG_DOUBLE_INT__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":928
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_CHARACTER, __pyx_mstate_global->__pyx_n_u_CHARACTER)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 928, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___CHARACTER__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___CHARACTER__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":929
 * 
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_LOGICAL, __pyx_mstate_global->__pyx_n_u_LOGICAL)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 929, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___LOGICAL__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":930
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_INTEGER, __pyx_mstate_global->__pyx_n_u_INTEGER)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 930, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___INTEGER__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":931
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_REAL, __pyx_mstate_global->__pyx_n_u_REAL)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 931, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___REAL__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___REAL__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":932
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_DOUBLE_PRECISION, __pyx_mstate_global->__pyx_n_u_DOUBLE_PRECISION)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 932, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_PRECISION__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___DOUBLE_PRECISION__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":933
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_COMPLEX, __pyx_mstate_global->__pyx_n_u_COMPLEX)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 933, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___COMPLEX__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":934
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_DOUBLE_COMPLEX, __pyx_mstate_global->__pyx_n_u_DOUBLE_COMPLEX)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 934, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_COMPLEX__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___DOUBLE_COMPLEX__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":936
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_LOGICAL1, __pyx_mstate_global->__pyx_n_u_LOGICAL1)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 936, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL1__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___LOGICAL1__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":937
 * 
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_LOGICAL2, __pyx_mstate_global->__pyx_n_u_LOGICAL2)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 937, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL2__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___LOGICAL2__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":938
 * 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 __LOGICAL16__ = def_Datatype( MPI_LOGICAL16 , "LOGICAL16" )
*/
  __pyx_t_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_LOGICAL4, __pyx_mstate_global->__pyx_n_u_LOGICAL4)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 938, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL4__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___LOGICAL4__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":939
 * 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 __LOGICAL16__ = def_Datatype( MPI_LOGICAL16 , "LOGICAL16" )
 * cdef Datatype __INTEGER1__  = def_Datatype( MPI_INTEGER1  , "INTEGER1"  )
*/
  __pyx_t_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_LOGICAL8, __pyx_mstate_global->__pyx_n_u_LOGICAL8)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 939, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL8__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___LOGICAL8__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":940
 * cdef Datatype __LOGICAL4__  = def_Datatype( MPI_LOGICAL4  , "LOGICAL4"  )
 * cdef Datatype __LOGICAL8__  = def_Datatype( MPI_LOGICAL8  , "LOGICAL8"  )
 * cdef Datatype __LOGICAL16__ = def_Datatype( MPI_LOGICAL16 , "LOGICAL16" )             # <<<<<<<<<<<<<<
 * cdef Datatype __INTEGER1__  = def_Datatype( MPI_INTEGER1  , "INTEGER1"  )
 * cdef Datatype __INTEGER2__  = def_Datatype( MPI_INTEGER2  , "INTEGER2"  )
*/
  __pyx_t_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_LOGICAL16, __pyx_mstate_global->__pyx_n_u_LOGICAL16)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL16__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___LOGICAL16__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":941
 * cdef Datatype __LOGICAL8__  = def_Datatype( MPI_LOGICAL8  , "LOGICAL8"  )
 * cdef Datatype __LOGICAL16__ = def_Datatype( MPI_LOGICAL16 , "LOGICAL16" )
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_INTEGER1, __pyx_mstate_global->__pyx_n_u_INTEGER1)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 941, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER1__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___INTEGER1__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":942
 * cdef Datatype __LOGICAL16__ = def_Datatype( MPI_LOGICAL16 , "LOGICAL16" )
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_INTEGER2, __pyx_mstate_global->__pyx_n_u_INTEGER2)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 942, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER2__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___INTEGER2__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":943
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_INTEGER4, __pyx_mstate_global->__pyx_n_u_INTEGER4)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 943, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER4__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___INTEGER4__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":944
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_INTEGER8, __pyx_mstate_global->__pyx_n_u_INTEGER8)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 944, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER8__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___INTEGER8__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":945
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_INTEGER16, __pyx_mstate_global->__pyx_n_u_INTEGER16)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 945, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER16__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___INTEGER16__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":946
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_REAL2, __pyx_mstate_global->__pyx_n_u_REAL2)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 946, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___REAL2__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___REAL2__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":947
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_REAL4, __pyx_mstate_global->__pyx_n_u_REAL4)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 947, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___REAL4__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___REAL4__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":948
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_REAL8, __pyx_mstate_global->__pyx_n_u_REAL8)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 948, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___REAL8__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___REAL8__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":949
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_REAL16, __pyx_mstate_global->__pyx_n_u_REAL16)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 949, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___REAL16__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___REAL16__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":950
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_COMPLEX4, __pyx_mstate_global->__pyx_n_u_COMPLEX4)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 950, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX4__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___COMPLEX4__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":951
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_COMPLEX8, __pyx_mstate_global->__pyx_n_u_COMPLEX8)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 951, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX8__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___COMPLEX8__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":952
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_COMPLEX16, __pyx_mstate_global->__pyx_n_u_COMPLEX16)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 952, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX16__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___COMPLEX16__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":953
 * 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_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_COMPLEX32, __pyx_mstate_global->__pyx_n_u_COMPLEX32)); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 953, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX32__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___COMPLEX32__, ((struct PyMPIDatatypeObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":958
 * # ---------------------------
 * 
 * DATATYPE_NULL = __DATATYPE_NULL__  #: Null datatype handle             # <<<<<<<<<<<<<<
 * # MPI-specific datatypes
 * PACKED = __PACKED__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_DATATYPE_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___DATATYPE_NULL__)) < (0)) __PYX_ERR(24, 958, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":960
 * DATATYPE_NULL = __DATATYPE_NULL__  #: Null datatype handle
 * # MPI-specific datatypes
 * PACKED = __PACKED__             # <<<<<<<<<<<<<<
 * BYTE   = __BYTE__
 * AINT   = __AINT__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_PACKED, ((PyObject *)__pyx_v_6mpi4py_3MPI___PACKED__)) < (0)) __PYX_ERR(24, 960, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":961
 * # MPI-specific datatypes
 * PACKED = __PACKED__
 * BYTE   = __BYTE__             # <<<<<<<<<<<<<<
 * AINT   = __AINT__
 * OFFSET = __OFFSET__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_BYTE, ((PyObject *)__pyx_v_6mpi4py_3MPI___BYTE__)) < (0)) __PYX_ERR(24, 961, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":962
 * PACKED = __PACKED__
 * BYTE   = __BYTE__
 * AINT   = __AINT__             # <<<<<<<<<<<<<<
 * OFFSET = __OFFSET__
 * COUNT  = __COUNT__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_AINT, ((PyObject *)__pyx_v_6mpi4py_3MPI___AINT__)) < (0)) __PYX_ERR(24, 962, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":963
 * BYTE   = __BYTE__
 * AINT   = __AINT__
 * OFFSET = __OFFSET__             # <<<<<<<<<<<<<<
 * COUNT  = __COUNT__
 * # Elementary C datatypes
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_OFFSET, ((PyObject *)__pyx_v_6mpi4py_3MPI___OFFSET__)) < (0)) __PYX_ERR(24, 963, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":964
 * AINT   = __AINT__
 * OFFSET = __OFFSET__
 * COUNT  = __COUNT__             # <<<<<<<<<<<<<<
 * # Elementary C datatypes
 * CHAR                = __CHAR__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_COUNT, ((PyObject *)__pyx_v_6mpi4py_3MPI___COUNT__)) < (0)) __PYX_ERR(24, 964, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":966
 * COUNT  = __COUNT__
 * # Elementary C datatypes
 * CHAR                = __CHAR__             # <<<<<<<<<<<<<<
 * WCHAR               = __WCHAR__
 * SIGNED_CHAR         = __SIGNED_CHAR__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_CHAR, ((PyObject *)__pyx_v_6mpi4py_3MPI___CHAR__)) < (0)) __PYX_ERR(24, 966, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":967
 * # Elementary C datatypes
 * CHAR                = __CHAR__
 * WCHAR               = __WCHAR__             # <<<<<<<<<<<<<<
 * SIGNED_CHAR         = __SIGNED_CHAR__
 * SHORT               = __SHORT__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_WCHAR, ((PyObject *)__pyx_v_6mpi4py_3MPI___WCHAR__)) < (0)) __PYX_ERR(24, 967, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":968
 * CHAR                = __CHAR__
 * WCHAR               = __WCHAR__
 * SIGNED_CHAR         = __SIGNED_CHAR__             # <<<<<<<<<<<<<<
 * SHORT               = __SHORT__
 * INT                 = __INT__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SIGNED_CHAR, ((PyObject *)__pyx_v_6mpi4py_3MPI___SIGNED_CHAR__)) < (0)) __PYX_ERR(24, 968, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":969
 * WCHAR               = __WCHAR__
 * SIGNED_CHAR         = __SIGNED_CHAR__
 * SHORT               = __SHORT__             # <<<<<<<<<<<<<<
 * INT                 = __INT__
 * LONG                = __LONG__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SHORT, ((PyObject *)__pyx_v_6mpi4py_3MPI___SHORT__)) < (0)) __PYX_ERR(24, 969, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":970
 * SIGNED_CHAR         = __SIGNED_CHAR__
 * SHORT               = __SHORT__
 * INT                 = __INT__             # <<<<<<<<<<<<<<
 * LONG                = __LONG__
 * LONG_LONG           = __LONG_LONG__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT__)) < (0)) __PYX_ERR(24, 970, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":971
 * SHORT               = __SHORT__
 * INT                 = __INT__
 * LONG                = __LONG__             # <<<<<<<<<<<<<<
 * LONG_LONG           = __LONG_LONG__
 * UNSIGNED_CHAR       = __UNSIGNED_CHAR__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LONG, ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG__)) < (0)) __PYX_ERR(24, 971, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":972
 * INT                 = __INT__
 * LONG                = __LONG__
 * LONG_LONG           = __LONG_LONG__             # <<<<<<<<<<<<<<
 * UNSIGNED_CHAR       = __UNSIGNED_CHAR__
 * UNSIGNED_SHORT      = __UNSIGNED_SHORT__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LONG_LONG, ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_LONG__)) < (0)) __PYX_ERR(24, 972, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":973
 * LONG                = __LONG__
 * LONG_LONG           = __LONG_LONG__
 * UNSIGNED_CHAR       = __UNSIGNED_CHAR__             # <<<<<<<<<<<<<<
 * UNSIGNED_SHORT      = __UNSIGNED_SHORT__
 * UNSIGNED            = __UNSIGNED__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_UNSIGNED_CHAR, ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_CHAR__)) < (0)) __PYX_ERR(24, 973, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":974
 * LONG_LONG           = __LONG_LONG__
 * UNSIGNED_CHAR       = __UNSIGNED_CHAR__
 * UNSIGNED_SHORT      = __UNSIGNED_SHORT__             # <<<<<<<<<<<<<<
 * UNSIGNED            = __UNSIGNED__
 * UNSIGNED_LONG       = __UNSIGNED_LONG__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_UNSIGNED_SHORT, ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__)) < (0)) __PYX_ERR(24, 974, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":975
 * UNSIGNED_CHAR       = __UNSIGNED_CHAR__
 * UNSIGNED_SHORT      = __UNSIGNED_SHORT__
 * UNSIGNED            = __UNSIGNED__             # <<<<<<<<<<<<<<
 * UNSIGNED_LONG       = __UNSIGNED_LONG__
 * UNSIGNED_LONG_LONG  = __UNSIGNED_LONG_LONG__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_UNSIGNED, ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED__)) < (0)) __PYX_ERR(24, 975, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":976
 * UNSIGNED_SHORT      = __UNSIGNED_SHORT__
 * UNSIGNED            = __UNSIGNED__
 * UNSIGNED_LONG       = __UNSIGNED_LONG__             # <<<<<<<<<<<<<<
 * UNSIGNED_LONG_LONG  = __UNSIGNED_LONG_LONG__
 * FLOAT               = __FLOAT__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_UNSIGNED_LONG, ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__)) < (0)) __PYX_ERR(24, 976, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":977
 * UNSIGNED            = __UNSIGNED__
 * UNSIGNED_LONG       = __UNSIGNED_LONG__
 * UNSIGNED_LONG_LONG  = __UNSIGNED_LONG_LONG__             # <<<<<<<<<<<<<<
 * FLOAT               = __FLOAT__
 * DOUBLE              = __DOUBLE__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_UNSIGNED_LONG_LONG, ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG_LONG__)) < (0)) __PYX_ERR(24, 977, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":978
 * UNSIGNED_LONG       = __UNSIGNED_LONG__
 * UNSIGNED_LONG_LONG  = __UNSIGNED_LONG_LONG__
 * FLOAT               = __FLOAT__             # <<<<<<<<<<<<<<
 * DOUBLE              = __DOUBLE__
 * LONG_DOUBLE         = __LONG_DOUBLE__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_FLOAT, ((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT__)) < (0)) __PYX_ERR(24, 978, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":979
 * UNSIGNED_LONG_LONG  = __UNSIGNED_LONG_LONG__
 * FLOAT               = __FLOAT__
 * DOUBLE              = __DOUBLE__             # <<<<<<<<<<<<<<
 * LONG_DOUBLE         = __LONG_DOUBLE__
 * # C99 datatypes
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_DOUBLE, ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE__)) < (0)) __PYX_ERR(24, 979, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":980
 * FLOAT               = __FLOAT__
 * DOUBLE              = __DOUBLE__
 * LONG_DOUBLE         = __LONG_DOUBLE__             # <<<<<<<<<<<<<<
 * # C99 datatypes
 * C_BOOL                = __C_BOOL__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LONG_DOUBLE, ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_DOUBLE__)) < (0)) __PYX_ERR(24, 980, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":982
 * LONG_DOUBLE         = __LONG_DOUBLE__
 * # C99 datatypes
 * C_BOOL                = __C_BOOL__             # <<<<<<<<<<<<<<
 * INT8_T                = __INT8_T__
 * INT16_T               = __INT16_T__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_C_BOOL, ((PyObject *)__pyx_v_6mpi4py_3MPI___C_BOOL__)) < (0)) __PYX_ERR(24, 982, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":983
 * # C99 datatypes
 * C_BOOL                = __C_BOOL__
 * INT8_T                = __INT8_T__             # <<<<<<<<<<<<<<
 * INT16_T               = __INT16_T__
 * INT32_T               = __INT32_T__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_INT8_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT8_T__)) < (0)) __PYX_ERR(24, 983, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":984
 * C_BOOL                = __C_BOOL__
 * INT8_T                = __INT8_T__
 * INT16_T               = __INT16_T__             # <<<<<<<<<<<<<<
 * INT32_T               = __INT32_T__
 * INT64_T               = __INT64_T__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_INT16_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT16_T__)) < (0)) __PYX_ERR(24, 984, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":985
 * INT8_T                = __INT8_T__
 * INT16_T               = __INT16_T__
 * INT32_T               = __INT32_T__             # <<<<<<<<<<<<<<
 * INT64_T               = __INT64_T__
 * UINT8_T               = __UINT8_T__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_INT32_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT32_T__)) < (0)) __PYX_ERR(24, 985, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":986
 * INT16_T               = __INT16_T__
 * INT32_T               = __INT32_T__
 * INT64_T               = __INT64_T__             # <<<<<<<<<<<<<<
 * UINT8_T               = __UINT8_T__
 * UINT16_T              = __UINT16_T__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_INT64_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT64_T__)) < (0)) __PYX_ERR(24, 986, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":987
 * INT32_T               = __INT32_T__
 * INT64_T               = __INT64_T__
 * UINT8_T               = __UINT8_T__             # <<<<<<<<<<<<<<
 * UINT16_T              = __UINT16_T__
 * UINT32_T              = __UINT32_T__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_UINT8_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT8_T__)) < (0)) __PYX_ERR(24, 987, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":988
 * INT64_T               = __INT64_T__
 * UINT8_T               = __UINT8_T__
 * UINT16_T              = __UINT16_T__             # <<<<<<<<<<<<<<
 * UINT32_T              = __UINT32_T__
 * UINT64_T              = __UINT64_T__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_UINT16_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT16_T__)) < (0)) __PYX_ERR(24, 988, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":989
 * UINT8_T               = __UINT8_T__
 * UINT16_T              = __UINT16_T__
 * UINT32_T              = __UINT32_T__             # <<<<<<<<<<<<<<
 * UINT64_T              = __UINT64_T__
 * FLOAT16_T             = __FLOAT16_T__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_UINT32_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT32_T__)) < (0)) __PYX_ERR(24, 989, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":990
 * UINT16_T              = __UINT16_T__
 * UINT32_T              = __UINT32_T__
 * UINT64_T              = __UINT64_T__             # <<<<<<<<<<<<<<
 * FLOAT16_T             = __FLOAT16_T__
 * FLOAT32_T             = __FLOAT32_T__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_UINT64_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT64_T__)) < (0)) __PYX_ERR(24, 990, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":991
 * UINT32_T              = __UINT32_T__
 * UINT64_T              = __UINT64_T__
 * FLOAT16_T             = __FLOAT16_T__             # <<<<<<<<<<<<<<
 * FLOAT32_T             = __FLOAT32_T__
 * FLOAT64_T             = __FLOAT64_T__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_FLOAT16_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT16_T__)) < (0)) __PYX_ERR(24, 991, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":992
 * UINT64_T              = __UINT64_T__
 * FLOAT16_T             = __FLOAT16_T__
 * FLOAT32_T             = __FLOAT32_T__             # <<<<<<<<<<<<<<
 * FLOAT64_T             = __FLOAT64_T__
 * BFLOAT16_T            = __BFLOAT16_T__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_FLOAT32_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT32_T__)) < (0)) __PYX_ERR(24, 992, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":993
 * FLOAT16_T             = __FLOAT16_T__
 * FLOAT32_T             = __FLOAT32_T__
 * FLOAT64_T             = __FLOAT64_T__             # <<<<<<<<<<<<<<
 * BFLOAT16_T            = __BFLOAT16_T__
 * C_COMPLEX             = __C_COMPLEX__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_FLOAT64_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT64_T__)) < (0)) __PYX_ERR(24, 993, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":994
 * FLOAT32_T             = __FLOAT32_T__
 * FLOAT64_T             = __FLOAT64_T__
 * BFLOAT16_T            = __BFLOAT16_T__             # <<<<<<<<<<<<<<
 * C_COMPLEX             = __C_COMPLEX__
 * C_FLOAT_COMPLEX       = __C_FLOAT_COMPLEX__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_BFLOAT16_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___BFLOAT16_T__)) < (0)) __PYX_ERR(24, 994, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":995
 * FLOAT64_T             = __FLOAT64_T__
 * BFLOAT16_T            = __BFLOAT16_T__
 * C_COMPLEX             = __C_COMPLEX__             # <<<<<<<<<<<<<<
 * C_FLOAT_COMPLEX       = __C_FLOAT_COMPLEX__
 * C_DOUBLE_COMPLEX      = __C_DOUBLE_COMPLEX__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_C_COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___C_COMPLEX__)) < (0)) __PYX_ERR(24, 995, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":996
 * BFLOAT16_T            = __BFLOAT16_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_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_C_FLOAT_COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___C_FLOAT_COMPLEX__)) < (0)) __PYX_ERR(24, 996, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":997
 * 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_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_C_DOUBLE_COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___C_DOUBLE_COMPLEX__)) < (0)) __PYX_ERR(24, 997, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":998
 * 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_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_C_LONG_DOUBLE_COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___C_LONG_DOUBLE_COMPLEX__)) < (0)) __PYX_ERR(24, 998, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1000
 * 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_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_CXX_BOOL, ((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_BOOL__)) < (0)) __PYX_ERR(24, 1000, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1001
 * # 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_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_CXX_FLOAT_COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_FLOAT_COMPLEX__)) < (0)) __PYX_ERR(24, 1001, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1002
 * 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_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_CXX_DOUBLE_COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_DOUBLE_COMPLEX__)) < (0)) __PYX_ERR(24, 1002, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1003
 * 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_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_CXX_LONG_DOUBLE_COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_LONG_DOUBLE_COMPLEX__)) < (0)) __PYX_ERR(24, 1003, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1005
 * 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_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SHORT_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___SHORT_INT__)) < (0)) __PYX_ERR(24, 1005, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1006
 * # 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_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_INT_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT_INT__)) < (0)) __PYX_ERR(24, 1006, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_TWOINT, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT_INT__)) < (0)) __PYX_ERR(24, 1006, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1007
 * 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_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LONG_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_INT__)) < (0)) __PYX_ERR(24, 1007, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1008
 * 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_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_FLOAT_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT_INT__)) < (0)) __PYX_ERR(24, 1008, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1009
 * 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_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_DOUBLE_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_INT__)) < (0)) __PYX_ERR(24, 1009, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1010
 * FLOAT_INT        = __FLOAT_INT__
 * DOUBLE_INT       = __DOUBLE_INT__
 * LONG_DOUBLE_INT  = __LONG_DOUBLE_INT__             # <<<<<<<<<<<<<<
 * # Elementary Fortran datatypes
 * CHARACTER        = __CHARACTER__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LONG_DOUBLE_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_DOUBLE_INT__)) < (0)) __PYX_ERR(24, 1010, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1012
 * LONG_DOUBLE_INT  = __LONG_DOUBLE_INT__
 * # Elementary Fortran datatypes
 * CHARACTER        = __CHARACTER__             # <<<<<<<<<<<<<<
 * LOGICAL          = __LOGICAL__
 * INTEGER          = __INTEGER__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_CHARACTER, ((PyObject *)__pyx_v_6mpi4py_3MPI___CHARACTER__)) < (0)) __PYX_ERR(24, 1012, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1013
 * # Elementary Fortran datatypes
 * CHARACTER        = __CHARACTER__
 * LOGICAL          = __LOGICAL__             # <<<<<<<<<<<<<<
 * INTEGER          = __INTEGER__
 * REAL             = __REAL__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LOGICAL, ((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL__)) < (0)) __PYX_ERR(24, 1013, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1014
 * CHARACTER        = __CHARACTER__
 * LOGICAL          = __LOGICAL__
 * INTEGER          = __INTEGER__             # <<<<<<<<<<<<<<
 * REAL             = __REAL__
 * DOUBLE_PRECISION = __DOUBLE_PRECISION__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_INTEGER, ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER__)) < (0)) __PYX_ERR(24, 1014, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1015
 * LOGICAL          = __LOGICAL__
 * INTEGER          = __INTEGER__
 * REAL             = __REAL__             # <<<<<<<<<<<<<<
 * DOUBLE_PRECISION = __DOUBLE_PRECISION__
 * COMPLEX          = __COMPLEX__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_REAL, ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL__)) < (0)) __PYX_ERR(24, 1015, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1016
 * INTEGER          = __INTEGER__
 * REAL             = __REAL__
 * DOUBLE_PRECISION = __DOUBLE_PRECISION__             # <<<<<<<<<<<<<<
 * COMPLEX          = __COMPLEX__
 * DOUBLE_COMPLEX   = __DOUBLE_COMPLEX__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_DOUBLE_PRECISION, ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_PRECISION__)) < (0)) __PYX_ERR(24, 1016, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1017
 * REAL             = __REAL__
 * DOUBLE_PRECISION = __DOUBLE_PRECISION__
 * COMPLEX          = __COMPLEX__             # <<<<<<<<<<<<<<
 * DOUBLE_COMPLEX   = __DOUBLE_COMPLEX__
 * # Size-specific Fortran datatypes
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX__)) < (0)) __PYX_ERR(24, 1017, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1018
 * DOUBLE_PRECISION = __DOUBLE_PRECISION__
 * COMPLEX          = __COMPLEX__
 * DOUBLE_COMPLEX   = __DOUBLE_COMPLEX__             # <<<<<<<<<<<<<<
 * # Size-specific Fortran datatypes
 * LOGICAL1  = __LOGICAL1__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_DOUBLE_COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_COMPLEX__)) < (0)) __PYX_ERR(24, 1018, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1020
 * DOUBLE_COMPLEX   = __DOUBLE_COMPLEX__
 * # Size-specific Fortran datatypes
 * LOGICAL1  = __LOGICAL1__             # <<<<<<<<<<<<<<
 * LOGICAL2  = __LOGICAL2__
 * LOGICAL4  = __LOGICAL4__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LOGICAL1, ((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL1__)) < (0)) __PYX_ERR(24, 1020, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1021
 * # Size-specific Fortran datatypes
 * LOGICAL1  = __LOGICAL1__
 * LOGICAL2  = __LOGICAL2__             # <<<<<<<<<<<<<<
 * LOGICAL4  = __LOGICAL4__
 * LOGICAL8  = __LOGICAL8__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LOGICAL2, ((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL2__)) < (0)) __PYX_ERR(24, 1021, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1022
 * LOGICAL1  = __LOGICAL1__
 * LOGICAL2  = __LOGICAL2__
 * LOGICAL4  = __LOGICAL4__             # <<<<<<<<<<<<<<
 * LOGICAL8  = __LOGICAL8__
 * LOGICAL16 = __LOGICAL16__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LOGICAL4, ((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL4__)) < (0)) __PYX_ERR(24, 1022, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1023
 * LOGICAL2  = __LOGICAL2__
 * LOGICAL4  = __LOGICAL4__
 * LOGICAL8  = __LOGICAL8__             # <<<<<<<<<<<<<<
 * LOGICAL16 = __LOGICAL16__
 * INTEGER1  = __INTEGER1__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LOGICAL8, ((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL8__)) < (0)) __PYX_ERR(24, 1023, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1024
 * LOGICAL4  = __LOGICAL4__
 * LOGICAL8  = __LOGICAL8__
 * LOGICAL16 = __LOGICAL16__             # <<<<<<<<<<<<<<
 * INTEGER1  = __INTEGER1__
 * INTEGER2  = __INTEGER2__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LOGICAL16, ((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL16__)) < (0)) __PYX_ERR(24, 1024, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1025
 * LOGICAL8  = __LOGICAL8__
 * LOGICAL16 = __LOGICAL16__
 * INTEGER1  = __INTEGER1__             # <<<<<<<<<<<<<<
 * INTEGER2  = __INTEGER2__
 * INTEGER4  = __INTEGER4__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_INTEGER1, ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER1__)) < (0)) __PYX_ERR(24, 1025, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1026
 * LOGICAL16 = __LOGICAL16__
 * INTEGER1  = __INTEGER1__
 * INTEGER2  = __INTEGER2__             # <<<<<<<<<<<<<<
 * INTEGER4  = __INTEGER4__
 * INTEGER8  = __INTEGER8__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_INTEGER2, ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER2__)) < (0)) __PYX_ERR(24, 1026, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1027
 * INTEGER1  = __INTEGER1__
 * INTEGER2  = __INTEGER2__
 * INTEGER4  = __INTEGER4__             # <<<<<<<<<<<<<<
 * INTEGER8  = __INTEGER8__
 * INTEGER16 = __INTEGER16__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_INTEGER4, ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER4__)) < (0)) __PYX_ERR(24, 1027, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1028
 * INTEGER2  = __INTEGER2__
 * INTEGER4  = __INTEGER4__
 * INTEGER8  = __INTEGER8__             # <<<<<<<<<<<<<<
 * INTEGER16 = __INTEGER16__
 * REAL2     = __REAL2__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_INTEGER8, ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER8__)) < (0)) __PYX_ERR(24, 1028, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1029
 * INTEGER4  = __INTEGER4__
 * INTEGER8  = __INTEGER8__
 * INTEGER16 = __INTEGER16__             # <<<<<<<<<<<<<<
 * REAL2     = __REAL2__
 * REAL4     = __REAL4__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_INTEGER16, ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER16__)) < (0)) __PYX_ERR(24, 1029, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1030
 * INTEGER8  = __INTEGER8__
 * INTEGER16 = __INTEGER16__
 * REAL2     = __REAL2__             # <<<<<<<<<<<<<<
 * REAL4     = __REAL4__
 * REAL8     = __REAL8__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_REAL2, ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL2__)) < (0)) __PYX_ERR(24, 1030, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1031
 * INTEGER16 = __INTEGER16__
 * REAL2     = __REAL2__
 * REAL4     = __REAL4__             # <<<<<<<<<<<<<<
 * REAL8     = __REAL8__
 * REAL16    = __REAL16__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_REAL4, ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL4__)) < (0)) __PYX_ERR(24, 1031, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1032
 * REAL2     = __REAL2__
 * REAL4     = __REAL4__
 * REAL8     = __REAL8__             # <<<<<<<<<<<<<<
 * REAL16    = __REAL16__
 * COMPLEX4  = __COMPLEX4__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_REAL8, ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL8__)) < (0)) __PYX_ERR(24, 1032, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1033
 * REAL4     = __REAL4__
 * REAL8     = __REAL8__
 * REAL16    = __REAL16__             # <<<<<<<<<<<<<<
 * COMPLEX4  = __COMPLEX4__
 * COMPLEX8  = __COMPLEX8__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_REAL16, ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL16__)) < (0)) __PYX_ERR(24, 1033, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1034
 * REAL8     = __REAL8__
 * REAL16    = __REAL16__
 * COMPLEX4  = __COMPLEX4__             # <<<<<<<<<<<<<<
 * COMPLEX8  = __COMPLEX8__
 * COMPLEX16 = __COMPLEX16__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_COMPLEX4, ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX4__)) < (0)) __PYX_ERR(24, 1034, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1035
 * REAL16    = __REAL16__
 * COMPLEX4  = __COMPLEX4__
 * COMPLEX8  = __COMPLEX8__             # <<<<<<<<<<<<<<
 * COMPLEX16 = __COMPLEX16__
 * COMPLEX32 = __COMPLEX32__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_COMPLEX8, ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX8__)) < (0)) __PYX_ERR(24, 1035, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1036
 * COMPLEX4  = __COMPLEX4__
 * COMPLEX8  = __COMPLEX8__
 * COMPLEX16 = __COMPLEX16__             # <<<<<<<<<<<<<<
 * COMPLEX32 = __COMPLEX32__
 * 
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_COMPLEX16, ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX16__)) < (0)) __PYX_ERR(24, 1036, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1037
 * COMPLEX8  = __COMPLEX8__
 * COMPLEX16 = __COMPLEX16__
 * COMPLEX32 = __COMPLEX32__             # <<<<<<<<<<<<<<
 * 
 * # Convenience aliases
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_COMPLEX32, ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX32__)) < (0)) __PYX_ERR(24, 1037, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1040
 * 
 * # Convenience aliases
 * UNSIGNED_INT          = __UNSIGNED__             # <<<<<<<<<<<<<<
 * SIGNED_SHORT          = __SHORT__
 * SIGNED_INT            = __INT__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_UNSIGNED_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED__)) < (0)) __PYX_ERR(24, 1040, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1041
 * # Convenience aliases
 * UNSIGNED_INT          = __UNSIGNED__
 * SIGNED_SHORT          = __SHORT__             # <<<<<<<<<<<<<<
 * SIGNED_INT            = __INT__
 * SIGNED_LONG           = __LONG__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SIGNED_SHORT, ((PyObject *)__pyx_v_6mpi4py_3MPI___SHORT__)) < (0)) __PYX_ERR(24, 1041, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1042
 * UNSIGNED_INT          = __UNSIGNED__
 * SIGNED_SHORT          = __SHORT__
 * SIGNED_INT            = __INT__             # <<<<<<<<<<<<<<
 * SIGNED_LONG           = __LONG__
 * SIGNED_LONG_LONG      = __LONG_LONG__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SIGNED_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT__)) < (0)) __PYX_ERR(24, 1042, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1043
 * SIGNED_SHORT          = __SHORT__
 * SIGNED_INT            = __INT__
 * SIGNED_LONG           = __LONG__             # <<<<<<<<<<<<<<
 * SIGNED_LONG_LONG      = __LONG_LONG__
 * BOOL                  = __C_BOOL__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SIGNED_LONG, ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG__)) < (0)) __PYX_ERR(24, 1043, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1044
 * SIGNED_INT            = __INT__
 * SIGNED_LONG           = __LONG__
 * SIGNED_LONG_LONG      = __LONG_LONG__             # <<<<<<<<<<<<<<
 * BOOL                  = __C_BOOL__
 * SINT8_T               = __INT8_T__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SIGNED_LONG_LONG, ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_LONG__)) < (0)) __PYX_ERR(24, 1044, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1045
 * SIGNED_LONG           = __LONG__
 * SIGNED_LONG_LONG      = __LONG_LONG__
 * BOOL                  = __C_BOOL__             # <<<<<<<<<<<<<<
 * SINT8_T               = __INT8_T__
 * SINT16_T              = __INT16_T__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_BOOL, ((PyObject *)__pyx_v_6mpi4py_3MPI___C_BOOL__)) < (0)) __PYX_ERR(24, 1045, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1046
 * SIGNED_LONG_LONG      = __LONG_LONG__
 * BOOL                  = __C_BOOL__
 * SINT8_T               = __INT8_T__             # <<<<<<<<<<<<<<
 * SINT16_T              = __INT16_T__
 * SINT32_T              = __INT32_T__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SINT8_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT8_T__)) < (0)) __PYX_ERR(24, 1046, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1047
 * BOOL                  = __C_BOOL__
 * SINT8_T               = __INT8_T__
 * SINT16_T              = __INT16_T__             # <<<<<<<<<<<<<<
 * SINT32_T              = __INT32_T__
 * SINT64_T              = __INT64_T__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SINT16_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT16_T__)) < (0)) __PYX_ERR(24, 1047, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1048
 * SINT8_T               = __INT8_T__
 * SINT16_T              = __INT16_T__
 * SINT32_T              = __INT32_T__             # <<<<<<<<<<<<<<
 * SINT64_T              = __INT64_T__
 * F_BOOL                = __LOGICAL__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SINT32_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT32_T__)) < (0)) __PYX_ERR(24, 1048, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1049
 * SINT16_T              = __INT16_T__
 * SINT32_T              = __INT32_T__
 * SINT64_T              = __INT64_T__             # <<<<<<<<<<<<<<
 * F_BOOL                = __LOGICAL__
 * F_INT                 = __INTEGER__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SINT64_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT64_T__)) < (0)) __PYX_ERR(24, 1049, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1050
 * SINT32_T              = __INT32_T__
 * SINT64_T              = __INT64_T__
 * F_BOOL                = __LOGICAL__             # <<<<<<<<<<<<<<
 * F_INT                 = __INTEGER__
 * F_FLOAT               = __REAL__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_F_BOOL, ((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL__)) < (0)) __PYX_ERR(24, 1050, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1051
 * SINT64_T              = __INT64_T__
 * F_BOOL                = __LOGICAL__
 * F_INT                 = __INTEGER__             # <<<<<<<<<<<<<<
 * F_FLOAT               = __REAL__
 * F_DOUBLE              = __DOUBLE_PRECISION__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_F_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER__)) < (0)) __PYX_ERR(24, 1051, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1052
 * F_BOOL                = __LOGICAL__
 * F_INT                 = __INTEGER__
 * F_FLOAT               = __REAL__             # <<<<<<<<<<<<<<
 * F_DOUBLE              = __DOUBLE_PRECISION__
 * F_COMPLEX             = __COMPLEX__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_F_FLOAT, ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL__)) < (0)) __PYX_ERR(24, 1052, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1053
 * F_INT                 = __INTEGER__
 * F_FLOAT               = __REAL__
 * F_DOUBLE              = __DOUBLE_PRECISION__             # <<<<<<<<<<<<<<
 * F_COMPLEX             = __COMPLEX__
 * F_FLOAT_COMPLEX       = __COMPLEX__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_F_DOUBLE, ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_PRECISION__)) < (0)) __PYX_ERR(24, 1053, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1054
 * F_FLOAT               = __REAL__
 * F_DOUBLE              = __DOUBLE_PRECISION__
 * F_COMPLEX             = __COMPLEX__             # <<<<<<<<<<<<<<
 * F_FLOAT_COMPLEX       = __COMPLEX__
 * F_DOUBLE_COMPLEX      = __DOUBLE_COMPLEX__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_F_COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX__)) < (0)) __PYX_ERR(24, 1054, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1055
 * F_DOUBLE              = __DOUBLE_PRECISION__
 * F_COMPLEX             = __COMPLEX__
 * F_FLOAT_COMPLEX       = __COMPLEX__             # <<<<<<<<<<<<<<
 * F_DOUBLE_COMPLEX      = __DOUBLE_COMPLEX__
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_F_FLOAT_COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX__)) < (0)) __PYX_ERR(24, 1055, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1056
 * F_COMPLEX             = __COMPLEX__
 * F_FLOAT_COMPLEX       = __COMPLEX__
 * F_DOUBLE_COMPLEX      = __DOUBLE_COMPLEX__             # <<<<<<<<<<<<<<
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_F_DOUBLE_COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_COMPLEX__)) < (0)) __PYX_ERR(24, 1056, __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_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(25, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_tuple_Any_tuple_Any_dict_str_Any) < (0)) __PYX_ERR(25, 24, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Status_5__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Status___reduce, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[96])); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, __pyx_mstate_global->__pyx_n_u_reduce, __pyx_t_3) < (0)) __PYX_ERR(25, 24, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "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_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_dict_str_int) < (0)) __PYX_ERR(25, 27, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Status_7__getstate__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Status___getstate, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[97])); if (unlikely(!__pyx_t_11)) __PYX_ERR(25, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, __pyx_mstate_global->__pyx_n_u_getstate, __pyx_t_11) < (0)) __PYX_ERR(25, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "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_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(25, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_state, __pyx_mstate_global->__pyx_kp_u_dict_str_int) < (0)) __PYX_ERR(25, 43, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(25, 43, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Status_9__setstate__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Status___setstate, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[98])); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, __pyx_mstate_global->__pyx_n_u_setstate, __pyx_t_3) < (0)) __PYX_ERR(25, 43, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":52
 *             self.Set_cancelled(state['cancelled'])
 * 
 *     def Get_source(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Get message source.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(25, 52, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Status_11Get_source, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Status_Get_source, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[99])); if (unlikely(!__pyx_t_11)) __PYX_ERR(25, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, __pyx_mstate_global->__pyx_n_u_Get_source, __pyx_t_11) < (0)) __PYX_ERR(25, 52, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":60
 *         return source
 * 
 *     def Set_source(self, int source: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set message source.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(25, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_source, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(25, 60, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(25, 60, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Status_13Set_source, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Status_Set_source, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[100])); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, __pyx_mstate_global->__pyx_n_u_Set_source, __pyx_t_3) < (0)) __PYX_ERR(25, 60, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":74
 *             self.Set_source(value)
 * 
 *     def Get_tag(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Get message tag.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(25, 74, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Status_15Get_tag, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Status_Get_tag, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[101])); if (unlikely(!__pyx_t_11)) __PYX_ERR(25, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, __pyx_mstate_global->__pyx_n_u_Get_tag, __pyx_t_11) < (0)) __PYX_ERR(25, 74, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":82
 *         return tag
 * 
 *     def Set_tag(self, int tag: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set message tag.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(25, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(25, 82, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(25, 82, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Status_17Set_tag, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Status_Set_tag, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[102])); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, __pyx_mstate_global->__pyx_n_u_Set_tag, __pyx_t_3) < (0)) __PYX_ERR(25, 82, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":96
 *             self.Set_tag(value)
 * 
 *     def Get_error(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Get message error.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(25, 96, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Status_19Get_error, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Status_Get_error, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[103])); if (unlikely(!__pyx_t_11)) __PYX_ERR(25, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, __pyx_mstate_global->__pyx_n_u_Get_error, __pyx_t_11) < (0)) __PYX_ERR(25, 96, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":104
 *         return error
 * 
 *     def Set_error(self, int error: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set message error.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(25, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_error, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(25, 104, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(25, 104, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Status_21Set_error, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Status_Set_error, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[104])); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, __pyx_mstate_global->__pyx_n_u_Set_error, __pyx_t_3) < (0)) __PYX_ERR(25, 104, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "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_3, __pyx_mstate_global->__pyx_n_u_BYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype))))) __PYX_ERR(25, 118, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__9 = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_BYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype))))) __PYX_ERR(25, 118, __pyx_L1_error)
  __pyx_t_11 = PyTuple_Pack(1, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(25, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_datatype, __pyx_mstate_global->__pyx_n_u_Datatype) < (0)) __PYX_ERR(25, 118, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(25, 118, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Status_23Get_count, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Status_Get_count, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[105])); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_t_11);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, __pyx_mstate_global->__pyx_n_u_Get_count, __pyx_t_2) < (0)) __PYX_ERR(25, 118, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "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_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_datatype, __pyx_mstate_global->__pyx_n_u_Datatype) < (0)) __PYX_ERR(25, 135, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(25, 135, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Status_25Get_elements, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Status_Get_elements, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[106])); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, __pyx_mstate_global->__pyx_n_u_Get_elements, __pyx_t_3) < (0)) __PYX_ERR(25, 135, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":144
 *         return elements
 * 
 *     def Set_elements(             # <<<<<<<<<<<<<<
 *         self,
 *         Datatype datatype: Datatype,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_datatype, __pyx_mstate_global->__pyx_n_u_Datatype) < (0)) __PYX_ERR(25, 144, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_count, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(25, 144, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(25, 144, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Status_27Set_elements, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Status_Set_elements, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[107])); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, __pyx_mstate_global->__pyx_n_u_Set_elements, __pyx_t_2) < (0)) __PYX_ERR(25, 144, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "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_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(25, 158, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Status_29Is_cancelled, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Status_Is_cancelled, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[108])); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, __pyx_mstate_global->__pyx_n_u_Is_cancelled, __pyx_t_3) < (0)) __PYX_ERR(25, 158, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "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_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_flag, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(25, 166, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(25, 166, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Status_31Set_cancelled, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Status_Set_cancelled, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[109])); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, __pyx_mstate_global->__pyx_n_u_Set_cancelled, __pyx_t_2) < (0)) __PYX_ERR(25, 166, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":186
 *     # ------
 * 
 *     def tomemory(self) -> memoryview:             # <<<<<<<<<<<<<<
 *         """
 *         Return status memory view.
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_memoryview) < (0)) __PYX_ERR(25, 186, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Status_33tomemory, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Status_tomemory, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[110])); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, __pyx_mstate_global->__pyx_n_u_tomemory, __pyx_t_3) < (0)) __PYX_ERR(25, 186, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":199
 *     # --------------
 * 
 *     def py2f(self) -> list[int]:             # <<<<<<<<<<<<<<
 *         """
 *         """
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_list_int) < (0)) __PYX_ERR(25, 199, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Status_35py2f, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Status_py2f, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[111])); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, __pyx_mstate_global->__pyx_n_u_py2f, __pyx_t_2) < (0)) __PYX_ERR(25, 199, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":208
 *         return [f_status[i] for i in range(size)]
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: list[int]) -> Self:
 *         """
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_arg, __pyx_mstate_global->__pyx_kp_u_list_int) < (0)) __PYX_ERR(25, 208, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(25, 208, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Status_37f2py, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Status_f2py, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[112])); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, __pyx_mstate_global->__pyx_n_u_f2py, __pyx_t_3) < (0)) __PYX_ERR(25, 208, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, __pyx_mstate_global->__pyx_n_u_f2py); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status, __pyx_mstate_global->__pyx_n_u_f2py, __pyx_t_2) < (0)) __PYX_ERR(25, 208, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":220
 * 
 * 
 * F_SOURCE      = MPI_F_SOURCE             # <<<<<<<<<<<<<<
 * F_TAG         = MPI_F_TAG
 * F_ERROR       = MPI_F_ERROR
*/
  __pyx_t_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_F_SOURCE); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_F_SOURCE, __pyx_t_2) < (0)) __PYX_ERR(25, 220, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":221
 * 
 * F_SOURCE      = MPI_F_SOURCE
 * F_TAG         = MPI_F_TAG             # <<<<<<<<<<<<<<
 * F_ERROR       = MPI_F_ERROR
 * F_STATUS_SIZE = MPI_F_STATUS_SIZE
*/
  __pyx_t_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_F_TAG); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_F_TAG, __pyx_t_2) < (0)) __PYX_ERR(25, 221, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":222
 * F_SOURCE      = MPI_F_SOURCE
 * F_TAG         = MPI_F_TAG
 * F_ERROR       = MPI_F_ERROR             # <<<<<<<<<<<<<<
 * F_STATUS_SIZE = MPI_F_STATUS_SIZE
*/
  __pyx_t_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_F_ERROR); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_F_ERROR, __pyx_t_2) < (0)) __PYX_ERR(25, 222, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":223
 * F_TAG         = MPI_F_TAG
 * F_ERROR       = MPI_F_ERROR
 * F_STATUS_SIZE = MPI_F_STATUS_SIZE             # <<<<<<<<<<<<<<
*/
  __pyx_t_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_F_STATUS_SIZE); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 223, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_F_STATUS_SIZE, __pyx_t_2) < (0)) __PYX_ERR(25, 223, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":19
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_str_tuple_Any) < (0)) __PYX_ERR(26, 19, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_9__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request___reduce, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[113])); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_reduce, __pyx_t_3) < (0)) __PYX_ERR(26, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":27
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Request:
 *         """
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_handle, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(26, 27, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(26, 27, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_11fromhandle, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request_fromhandle, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[114])); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_fromhandle, __pyx_t_2) < (0)) __PYX_ERR(26, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_fromhandle); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_fromhandle, __pyx_t_3) < (0)) __PYX_ERR(26, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "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_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(26, 38, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_13free, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request_free, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[115])); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_free, __pyx_t_2) < (0)) __PYX_ERR(26, 38, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "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_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(26, 47, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_Literal_True) < (0)) __PYX_ERR(26, 47, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_15Wait, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request_Wait, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[116])); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_Wait, __pyx_t_3) < (0)) __PYX_ERR(26, 47, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "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_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(26, 58, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(26, 58, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_17Test, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request_Test, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[117])); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_Test, __pyx_t_2) < (0)) __PYX_ERR(26, 58, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "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_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(26, 70, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(26, 70, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_19Get_status, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request_Get_status, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[118])); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_Get_status, __pyx_t_3) < (0)) __PYX_ERR(26, 70, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":83
 *     # --------------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Waitany(
 *         cls,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_requests, __pyx_mstate_global->__pyx_kp_u_Sequence_Request) < (0)) __PYX_ERR(26, 83, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(26, 83, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(26, 83, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_21Waitany, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request_Waitany, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[119])); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_Waitany, __pyx_t_2) < (0)) __PYX_ERR(26, 83, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_Waitany); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_Waitany, __pyx_t_3) < (0)) __PYX_ERR(26, 83, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":103
 *         return index
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Testany(
 *         cls,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_requests, __pyx_mstate_global->__pyx_kp_u_Sequence_Request) < (0)) __PYX_ERR(26, 103, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(26, 103, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_tuple_int_bool) < (0)) __PYX_ERR(26, 103, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_23Testany, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request_Testany, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[120])); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_Testany, __pyx_t_2) < (0)) __PYX_ERR(26, 103, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_Testany); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_Testany, __pyx_t_3) < (0)) __PYX_ERR(26, 103, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":124
 *         return (index, <bint>flag)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Get_status_any(
 *         cls,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_requests, __pyx_mstate_global->__pyx_kp_u_Sequence_Request) < (0)) __PYX_ERR(26, 124, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(26, 124, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_tuple_int_bool) < (0)) __PYX_ERR(26, 124, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_25Get_status_any, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request_Get_status_any, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[121])); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_Get_status_any, __pyx_t_2) < (0)) __PYX_ERR(26, 124, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_Get_status_any); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_Get_status_any, __pyx_t_3) < (0)) __PYX_ERR(26, 124, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":145
 *         return (index, <bint>flag)  # ~> MPI-4.1
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Waitall(
 *         cls,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_requests, __pyx_mstate_global->__pyx_kp_u_Sequence_Request) < (0)) __PYX_ERR(26, 145, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_statuses, __pyx_mstate_global->__pyx_kp_u_list_Status_None) < (0)) __PYX_ERR(26, 145, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_Literal_True) < (0)) __PYX_ERR(26, 145, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_27Waitall, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request_Waitall, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[122])); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_Waitall, __pyx_t_2) < (0)) __PYX_ERR(26, 145, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_Waitall); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_Waitall, __pyx_t_3) < (0)) __PYX_ERR(26, 145, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":163
 *         return True
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Testall(
 *         cls,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_requests, __pyx_mstate_global->__pyx_kp_u_Sequence_Request) < (0)) __PYX_ERR(26, 163, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_statuses, __pyx_mstate_global->__pyx_kp_u_list_Status_None) < (0)) __PYX_ERR(26, 163, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(26, 163, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_29Testall, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request_Testall, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[123])); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_Testall, __pyx_t_2) < (0)) __PYX_ERR(26, 163, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_Testall); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_Testall, __pyx_t_3) < (0)) __PYX_ERR(26, 163, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":182
 *         return <bint>flag
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Get_status_all(
 *         cls,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_requests, __pyx_mstate_global->__pyx_kp_u_Sequence_Request) < (0)) __PYX_ERR(26, 182, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_statuses, __pyx_mstate_global->__pyx_kp_u_list_Status_None) < (0)) __PYX_ERR(26, 182, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(26, 182, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_31Get_status_all, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request_Get_status_all, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[124])); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_Get_status_all, __pyx_t_2) < (0)) __PYX_ERR(26, 182, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_Get_status_all); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_Get_status_all, __pyx_t_3) < (0)) __PYX_ERR(26, 182, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":201
 *         return <bint>flag         # ~> MPI-4.1
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Waitsome(
 *         cls,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_requests, __pyx_mstate_global->__pyx_kp_u_Sequence_Request) < (0)) __PYX_ERR(26, 201, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_statuses, __pyx_mstate_global->__pyx_kp_u_list_Status_None) < (0)) __PYX_ERR(26, 201, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_list_int_None) < (0)) __PYX_ERR(26, 201, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_33Waitsome, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request_Waitsome, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[125])); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_Waitsome, __pyx_t_2) < (0)) __PYX_ERR(26, 201, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_Waitsome); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_Waitsome, __pyx_t_3) < (0)) __PYX_ERR(26, 201, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":222
 *         return indices
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Testsome(
 *         cls,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_requests, __pyx_mstate_global->__pyx_kp_u_Sequence_Request) < (0)) __PYX_ERR(26, 222, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_statuses, __pyx_mstate_global->__pyx_kp_u_list_Status_None) < (0)) __PYX_ERR(26, 222, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_list_int_None) < (0)) __PYX_ERR(26, 222, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_35Testsome, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request_Testsome, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[126])); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_Testsome, __pyx_t_2) < (0)) __PYX_ERR(26, 222, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_Testsome); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_Testsome, __pyx_t_3) < (0)) __PYX_ERR(26, 222, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":243
 *         return indices
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Get_status_some(
 *         cls,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_requests, __pyx_mstate_global->__pyx_kp_u_Sequence_Request) < (0)) __PYX_ERR(26, 243, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_statuses, __pyx_mstate_global->__pyx_kp_u_list_Status_None) < (0)) __PYX_ERR(26, 243, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_list_int_None) < (0)) __PYX_ERR(26, 243, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_37Get_status_some, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request_Get_status_some, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[127])); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_Get_status_some, __pyx_t_2) < (0)) __PYX_ERR(26, 243, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_Get_status_some); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_Get_status_some, __pyx_t_3) < (0)) __PYX_ERR(26, 243, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":267
 *     # ------
 * 
 *     def Cancel(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Cancel a request.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(26, 267, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_39Cancel, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request_Cancel, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[128])); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_Cancel, __pyx_t_2) < (0)) __PYX_ERR(26, 267, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":276
 *     # ------------
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free a communication request.
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(26, 276, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_41Free, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request_Free, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[129])); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_Free, __pyx_t_3) < (0)) __PYX_ERR(26, 276, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":287
 *     # --------------
 * 
 *     def toint(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate object to integer handle.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(26, 287, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_43toint, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request_toint, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[130])); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_toint, __pyx_t_2) < (0)) __PYX_ERR(26, 287, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":293
 *         return MPI_Request_toint(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromint(cls, arg: int, /) -> Request:
 *         """
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 293, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_arg, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(26, 293, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(26, 293, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_45fromint, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request_fromint, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[131])); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 293, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_fromint, __pyx_t_3) < (0)) __PYX_ERR(26, 293, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_fromint); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 293, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 293, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_fromint, __pyx_t_2) < (0)) __PYX_ERR(26, 293, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":307
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 307, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(26, 307, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_47py2f, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request_py2f, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[132])); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 307, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_py2f, __pyx_t_3) < (0)) __PYX_ERR(26, 307, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":312
 *         return MPI_Request_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Request:
 *         """
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 312, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_arg, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(26, 312, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(26, 312, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_49f2py, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request_f2py, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[133])); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 312, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_f2py, __pyx_t_2) < (0)) __PYX_ERR(26, 312, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_f2py); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 312, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 312, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_f2py, __pyx_t_3) < (0)) __PYX_ERR(26, 312, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":325
 *     # --------------------
 * 
 *     def wait(             # <<<<<<<<<<<<<<
 *         self,
 *         Status status: Status | None = None,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(26, 325, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(26, 325, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_51wait, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request_wait, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[134])); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_wait, __pyx_t_2) < (0)) __PYX_ERR(26, 325, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":335
 *         return msg
 * 
 *     def test(             # <<<<<<<<<<<<<<
 *         self,
 *             Status status: Status | None = None,
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(26, 335, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_tuple_bool_Any_None) < (0)) __PYX_ERR(26, 335, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_53test, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request_test, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[135])); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_test, __pyx_t_3) < (0)) __PYX_ERR(26, 335, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":346
 *         return (<bint>flag, msg)
 * 
 *     def get_status(             # <<<<<<<<<<<<<<
 *         self,
 *         Status status: Status | None = None,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(26, 346, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(26, 346, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_55get_status, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request_get_status, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[136])); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_get_status, __pyx_t_2) < (0)) __PYX_ERR(26, 346, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":359
 *         return <bint>flag
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def waitany(
 *         cls,
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 359, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_requests, __pyx_mstate_global->__pyx_kp_u_Sequence_Request) < (0)) __PYX_ERR(26, 359, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(26, 359, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_tuple_int_Any) < (0)) __PYX_ERR(26, 359, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_57waitany, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request_waitany, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[137])); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 359, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_waitany, __pyx_t_3) < (0)) __PYX_ERR(26, 359, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_waitany); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 359, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 359, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_waitany, __pyx_t_2) < (0)) __PYX_ERR(26, 359, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":372
 *         return (index, msg)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def testany(
 *         cls,
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 372, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_requests, __pyx_mstate_global->__pyx_kp_u_Sequence_Request) < (0)) __PYX_ERR(26, 372, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(26, 372, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_tuple_int_bool_Any_None) < (0)) __PYX_ERR(26, 372, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_59testany, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request_testany, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[138])); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 372, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_testany, __pyx_t_3) < (0)) __PYX_ERR(26, 372, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_testany); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 372, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 372, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_testany, __pyx_t_2) < (0)) __PYX_ERR(26, 372, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":386
 *         return (index, <bint>flag, msg)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def get_status_any(
 *         cls,
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 386, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_requests, __pyx_mstate_global->__pyx_kp_u_Sequence_Request) < (0)) __PYX_ERR(26, 386, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(26, 386, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_tuple_int_bool) < (0)) __PYX_ERR(26, 386, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_61get_status_any, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request_get_status_any, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[139])); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 386, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_get_status_any, __pyx_t_3) < (0)) __PYX_ERR(26, 386, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_get_status_any); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 386, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 386, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_get_status_any, __pyx_t_2) < (0)) __PYX_ERR(26, 386, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":397
 *         return Request.Get_status_any(requests, status)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def waitall(
 *         cls,
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 397, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_requests, __pyx_mstate_global->__pyx_kp_u_Sequence_Request) < (0)) __PYX_ERR(26, 397, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_statuses, __pyx_mstate_global->__pyx_kp_u_list_Status_None) < (0)) __PYX_ERR(26, 397, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_list_Any) < (0)) __PYX_ERR(26, 397, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_63waitall, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request_waitall, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[140])); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 397, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_waitall, __pyx_t_3) < (0)) __PYX_ERR(26, 397, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_waitall); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 397, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 397, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_waitall, __pyx_t_2) < (0)) __PYX_ERR(26, 397, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":409
 *         return msg
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def testall(
 *         cls,
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 409, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_requests, __pyx_mstate_global->__pyx_kp_u_Sequence_Request) < (0)) __PYX_ERR(26, 409, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_statuses, __pyx_mstate_global->__pyx_kp_u_list_Status_None) < (0)) __PYX_ERR(26, 409, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_tuple_bool_list_Any_None) < (0)) __PYX_ERR(26, 409, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_65testall, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request_testall, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[141])); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 409, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_testall, __pyx_t_3) < (0)) __PYX_ERR(26, 409, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_testall); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 409, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 409, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_testall, __pyx_t_2) < (0)) __PYX_ERR(26, 409, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":422
 *         return (<bint>flag, msg)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def get_status_all(
 *         cls,
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 422, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_requests, __pyx_mstate_global->__pyx_kp_u_Sequence_Request) < (0)) __PYX_ERR(26, 422, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_statuses, __pyx_mstate_global->__pyx_kp_u_list_Status_None) < (0)) __PYX_ERR(26, 422, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(26, 422, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_67get_status_all, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request_get_status_all, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[142])); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 422, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_get_status_all, __pyx_t_3) < (0)) __PYX_ERR(26, 422, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_get_status_all); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 422, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 422, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_get_status_all, __pyx_t_2) < (0)) __PYX_ERR(26, 422, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":433
 *         return Request.Get_status_all(requests, statuses)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def waitsome(
 *         cls,
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_requests, __pyx_mstate_global->__pyx_kp_u_Sequence_Request) < (0)) __PYX_ERR(26, 433, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_statuses, __pyx_mstate_global->__pyx_kp_u_list_Status_None) < (0)) __PYX_ERR(26, 433, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_tuple_list_int_None_list_Any_Non) < (0)) __PYX_ERR(26, 433, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_69waitsome, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request_waitsome, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[143])); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_waitsome, __pyx_t_3) < (0)) __PYX_ERR(26, 433, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_waitsome); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_waitsome, __pyx_t_2) < (0)) __PYX_ERR(26, 433, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":444
 *         return PyMPI_waitsome(requests, statuses)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def testsome(
 *         cls,
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 444, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_requests, __pyx_mstate_global->__pyx_kp_u_Sequence_Request) < (0)) __PYX_ERR(26, 444, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_statuses, __pyx_mstate_global->__pyx_kp_u_list_Status_None) < (0)) __PYX_ERR(26, 444, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_tuple_list_int_None_list_Any_Non) < (0)) __PYX_ERR(26, 444, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_71testsome, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request_testsome, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[144])); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 444, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_testsome, __pyx_t_3) < (0)) __PYX_ERR(26, 444, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_testsome); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 444, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 444, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_testsome, __pyx_t_2) < (0)) __PYX_ERR(26, 444, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":455
 *         return PyMPI_testsome(requests, statuses)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def get_status_some(
 *         cls,
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 455, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_requests, __pyx_mstate_global->__pyx_kp_u_Sequence_Request) < (0)) __PYX_ERR(26, 455, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_statuses, __pyx_mstate_global->__pyx_kp_u_list_Status_None) < (0)) __PYX_ERR(26, 455, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_list_int_None) < (0)) __PYX_ERR(26, 455, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_73get_status_some, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request_get_status_some, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[145])); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 455, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_get_status_some, __pyx_t_3) < (0)) __PYX_ERR(26, 455, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_get_status_some); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 455, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 455, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_get_status_some, __pyx_t_2) < (0)) __PYX_ERR(26, 455, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":466
 *         return Request.Get_status_some(requests, statuses)
 * 
 *     def cancel(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Cancel a request.
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 466, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(26, 466, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_75cancel, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Request_cancel, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[146])); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 466, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request, __pyx_mstate_global->__pyx_n_u_cancel, __pyx_t_3) < (0)) __PYX_ERR(26, 466, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":482
 *         <void>(<Prequest?>request)
 * 
 *     def Start(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Initiate a communication with a persistent request.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 482, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(26, 482, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Prequest_3Start, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Prequest_Start, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[147])); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 482, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest, __pyx_mstate_global->__pyx_n_u_Start, __pyx_t_2) < (0)) __PYX_ERR(26, 482, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":488
 *         with nogil: CHKERR( MPI_Start(&self.ob_mpi) )
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Startall(cls, requests: list[Prequest]) -> None:
 *         """
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 488, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_requests, __pyx_mstate_global->__pyx_kp_u_list_Prequest) < (0)) __PYX_ERR(26, 488, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(26, 488, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Prequest_5Startall, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Prequest_Startall, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[148])); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 488, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest, __pyx_mstate_global->__pyx_n_u_Startall, __pyx_t_3) < (0)) __PYX_ERR(26, 488, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest, __pyx_mstate_global->__pyx_n_u_Startall); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 488, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 488, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest, __pyx_mstate_global->__pyx_n_u_Startall, __pyx_t_2) < (0)) __PYX_ERR(26, 488, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":503
 *     # ----------------------
 * 
 *     def Pready(             # <<<<<<<<<<<<<<
 *         self,
 *         int partition: int,
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 503, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_partition, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(26, 503, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(26, 503, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Prequest_7Pready, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Prequest_Pready, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[149])); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 503, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest, __pyx_mstate_global->__pyx_n_u_Pready, __pyx_t_3) < (0)) __PYX_ERR(26, 503, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":512
 *         CHKERR( MPI_Pready(partition, self.ob_mpi) )
 * 
 *     def Pready_range(             # <<<<<<<<<<<<<<
 *         self,
 *         int partition_low: int,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 512, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_partition_low, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(26, 512, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_partition_high, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(26, 512, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(26, 512, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Prequest_9Pready_range, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Prequest_Pready_range, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[150])); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 512, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest, __pyx_mstate_global->__pyx_n_u_Pready_range, __pyx_t_2) < (0)) __PYX_ERR(26, 512, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":522
 *         CHKERR( MPI_Pready_range(partition_low, partition_high, self.ob_mpi) )
 * 
 *     def Pready_list(             # <<<<<<<<<<<<<<
 *         self,
 *         partitions: Sequence[int],
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_partitions, __pyx_mstate_global->__pyx_kp_u_Sequence_int) < (0)) __PYX_ERR(26, 522, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(26, 522, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Prequest_11Pready_list, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Prequest_Pready_list, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[151])); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest, __pyx_mstate_global->__pyx_n_u_Pready_list, __pyx_t_3) < (0)) __PYX_ERR(26, 522, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":533
 *         CHKERR( MPI_Pready_list(length, array_of_partitions, self.ob_mpi) )
 * 
 *     def Parrived(             # <<<<<<<<<<<<<<
 *         self,
 *         int partition: int,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_partition, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(26, 533, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(26, 533, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Prequest_13Parrived, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Prequest_Parrived, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[152])); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest, __pyx_mstate_global->__pyx_n_u_Parrived, __pyx_t_2) < (0)) __PYX_ERR(26, 533, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":555
 *         <void>(<Grequest?>request)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Start(
 *         cls,
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 555, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_query_fn, __pyx_mstate_global->__pyx_kp_u_Callable_None_None) < (0)) __PYX_ERR(26, 555, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_free_fn, __pyx_mstate_global->__pyx_kp_u_Callable_None_None) < (0)) __PYX_ERR(26, 555, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_cancel_fn, __pyx_mstate_global->__pyx_kp_u_Callable_None_None) < (0)) __PYX_ERR(26, 555, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_args, __pyx_mstate_global->__pyx_kp_u_tuple_Any_None) < (0)) __PYX_ERR(26, 555, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_kwargs, __pyx_mstate_global->__pyx_kp_u_dict_str_Any_None) < (0)) __PYX_ERR(26, 555, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Grequest) < (0)) __PYX_ERR(26, 555, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Grequest_3Start, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Grequest_Start, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[153])); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 555, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[18]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Grequest, __pyx_mstate_global->__pyx_n_u_Start, __pyx_t_3) < (0)) __PYX_ERR(26, 555, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Grequest, __pyx_mstate_global->__pyx_n_u_Start); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 555, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 555, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Grequest, __pyx_mstate_global->__pyx_n_u_Start, __pyx_t_2) < (0)) __PYX_ERR(26, 555, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":577
 *         return request
 * 
 *     def Complete(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Notify that a user-defined request is complete.
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 577, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(26, 577, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Grequest_5Complete, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Grequest_Complete, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[154])); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 577, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Grequest, __pyx_mstate_global->__pyx_n_u_Complete, __pyx_t_3) < (0)) __PYX_ERR(26, 577, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":589
 *         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_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 589, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_obj, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(26, 589, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(26, 589, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Grequest_7complete, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Grequest_complete, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[155])); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 589, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Grequest, __pyx_mstate_global->__pyx_n_u_complete, __pyx_t_2) < (0)) __PYX_ERR(26, 589, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":597
 * 
 * 
 * cdef Request __REQUEST_NULL__ = def_Request( MPI_REQUEST_NULL , "REQUEST_NULL" )             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Request(MPI_REQUEST_NULL, __pyx_mstate_global->__pyx_n_u_REQUEST_NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 597, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___REQUEST_NULL__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___REQUEST_NULL__, ((struct PyMPIRequestObject *)__pyx_t_2));
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":603
 * # --------------------------
 * 
 * REQUEST_NULL = __REQUEST_NULL__  #: Null request handle             # <<<<<<<<<<<<<<
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_REQUEST_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___REQUEST_NULL__)) < (0)) __PYX_ERR(26, 603, __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_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_str_tuple_Any) < (0)) __PYX_ERR(27, 19, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Message_9__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Message___reduce, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[156])); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message, __pyx_mstate_global->__pyx_n_u_reduce, __pyx_t_3) < (0)) __PYX_ERR(27, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Message.pyx":27
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Message:
 *         """
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_handle, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(27, 27, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Message) < (0)) __PYX_ERR(27, 27, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Message_11fromhandle, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Message_fromhandle, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[157])); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message, __pyx_mstate_global->__pyx_n_u_fromhandle, __pyx_t_2) < (0)) __PYX_ERR(27, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message, __pyx_mstate_global->__pyx_n_u_fromhandle); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message, __pyx_mstate_global->__pyx_n_u_fromhandle, __pyx_t_3) < (0)) __PYX_ERR(27, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Message.pyx":34
 *         return fromhandle(<MPI_Message> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Do nothing.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(27, 34, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Message_13free, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Message_free, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[158])); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message, __pyx_mstate_global->__pyx_n_u_free, __pyx_t_2) < (0)) __PYX_ERR(27, 34, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "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_2, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(27, 47, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_mstate_global->__pyx_k__10 = __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_2, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(27, 48, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_mstate_global->__pyx_k__11 = __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_2, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(27, 47, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "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_3, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(27, 48, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Message.pyx":43
 *     # --------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Probe(
 *         cls,
*/
  __pyx_t_11 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_3, Py_None); if (unlikely(!__pyx_t_11)) __PYX_ERR(27, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_comm, __pyx_mstate_global->__pyx_n_u_Comm) < (0)) __PYX_ERR(27, 43, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_source, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(27, 43, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(27, 43, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(27, 43, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(27, 43, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Message_15Probe, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Message_Probe, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[159])); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_t_11);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message, __pyx_mstate_global->__pyx_n_u_Probe, __pyx_t_2) < (0)) __PYX_ERR(27, 43, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message, __pyx_mstate_global->__pyx_n_u_Probe); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message, __pyx_mstate_global->__pyx_n_u_Probe, __pyx_t_3) < (0)) __PYX_ERR(27, 43, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "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_3, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(27, 66, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_mstate_global->__pyx_k__12 = __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_3, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(27, 67, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_mstate_global->__pyx_k__13 = __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_3, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(27, 66, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "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_2, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(27, 67, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "src/mpi4py/MPI.src/Message.pyx":62
 *         return message
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Iprobe(
 *         cls,
*/
  __pyx_t_11 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_2, Py_None); if (unlikely(!__pyx_t_11)) __PYX_ERR(27, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_comm, __pyx_mstate_global->__pyx_n_u_Comm) < (0)) __PYX_ERR(27, 62, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_source, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(27, 62, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(27, 62, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(27, 62, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_Self_None) < (0)) __PYX_ERR(27, 62, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Message_17Iprobe, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Message_Iprobe, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[160])); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_11);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message, __pyx_mstate_global->__pyx_n_u_Iprobe, __pyx_t_3) < (0)) __PYX_ERR(27, 62, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message, __pyx_mstate_global->__pyx_n_u_Iprobe); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message, __pyx_mstate_global->__pyx_n_u_Iprobe, __pyx_t_2) < (0)) __PYX_ERR(27, 62, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Message.pyx":86
 *     # ----------------
 * 
 *     def Recv(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(27, 86, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(27, 86, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(27, 86, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Message_19Recv, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Message_Recv, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[161])); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message, __pyx_mstate_global->__pyx_n_u_Recv, __pyx_t_3) < (0)) __PYX_ERR(27, 86, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Message.pyx":106
 *             self.ob_mpi = message
 * 
 *     def Irecv(self, buf: BufSpec) -> Request:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking receive of matched message.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(27, 106, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(27, 106, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Message_21Irecv, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Message_Irecv, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[162])); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message, __pyx_mstate_global->__pyx_n_u_Irecv, __pyx_t_2) < (0)) __PYX_ERR(27, 106, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "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_2, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(27, 131, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_mstate_global->__pyx_k__14 = __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_2, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(27, 132, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_mstate_global->__pyx_k__15 = __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_2, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(27, 131, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "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_3, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(27, 132, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Message.pyx":127
 *     # --------------------
 *     #
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def probe(
 *         cls,
*/
  __pyx_t_11 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_3, Py_None); if (unlikely(!__pyx_t_11)) __PYX_ERR(27, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_comm, __pyx_mstate_global->__pyx_n_u_Comm) < (0)) __PYX_ERR(27, 127, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_source, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(27, 127, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(27, 127, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(27, 127, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(27, 127, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Message_23probe, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Message_probe, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[163])); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_t_11);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message, __pyx_mstate_global->__pyx_n_u_probe, __pyx_t_2) < (0)) __PYX_ERR(27, 127, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message, __pyx_mstate_global->__pyx_n_u_probe); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message, __pyx_mstate_global->__pyx_n_u_probe, __pyx_t_3) < (0)) __PYX_ERR(27, 127, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "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_3, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(27, 148, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_mstate_global->__pyx_k__16 = __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_3, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(27, 149, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_mstate_global->__pyx_k__17 = __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_3, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(27, 148, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "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_2, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(27, 149, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "src/mpi4py/MPI.src/Message.pyx":144
 *         return message
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def iprobe(
 *         cls,
*/
  __pyx_t_11 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_2, Py_None); if (unlikely(!__pyx_t_11)) __PYX_ERR(27, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_comm, __pyx_mstate_global->__pyx_n_u_Comm) < (0)) __PYX_ERR(27, 144, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_source, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(27, 144, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(27, 144, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(27, 144, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_Self_None) < (0)) __PYX_ERR(27, 144, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Message_25iprobe, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Message_iprobe, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[164])); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_11);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message, __pyx_mstate_global->__pyx_n_u_iprobe, __pyx_t_3) < (0)) __PYX_ERR(27, 144, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message, __pyx_mstate_global->__pyx_n_u_iprobe); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message, __pyx_mstate_global->__pyx_n_u_iprobe, __pyx_t_2) < (0)) __PYX_ERR(27, 144, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "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_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(27, 163, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(27, 163, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Message_27recv, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Message_recv, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[165])); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message, __pyx_mstate_global->__pyx_n_u_recv, __pyx_t_3) < (0)) __PYX_ERR(27, 163, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Message.pyx":175
 *         return rmsg
 * 
 *     def irecv(self) -> Request:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking receive of matched message.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(27, 175, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Message_29irecv, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Message_irecv, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[166])); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message, __pyx_mstate_global->__pyx_n_u_irecv, __pyx_t_2) < (0)) __PYX_ERR(27, 175, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Message.pyx":190
 *     # --------------
 * 
 *     def toint(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate object to integer handle.
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(27, 190, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Message_31toint, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Message_toint, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[167])); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message, __pyx_mstate_global->__pyx_n_u_toint, __pyx_t_3) < (0)) __PYX_ERR(27, 190, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Message.pyx":196
 *         return MPI_Message_toint(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromint(cls, arg: int, /) -> Message:
 *         """
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_arg, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(27, 196, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Message) < (0)) __PYX_ERR(27, 196, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Message_33fromint, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Message_fromint, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[168])); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message, __pyx_mstate_global->__pyx_n_u_fromint, __pyx_t_2) < (0)) __PYX_ERR(27, 196, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message, __pyx_mstate_global->__pyx_n_u_fromint); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message, __pyx_mstate_global->__pyx_n_u_fromint, __pyx_t_3) < (0)) __PYX_ERR(27, 196, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Message.pyx":206
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(27, 206, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Message_35py2f, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Message_py2f, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[169])); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message, __pyx_mstate_global->__pyx_n_u_py2f, __pyx_t_2) < (0)) __PYX_ERR(27, 206, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Message.pyx":211
 *         return MPI_Message_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Message:
 *         """
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_arg, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(27, 211, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Message) < (0)) __PYX_ERR(27, 211, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Message_37f2py, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Message_f2py, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[170])); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message, __pyx_mstate_global->__pyx_n_u_f2py, __pyx_t_3) < (0)) __PYX_ERR(27, 211, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message, __pyx_mstate_global->__pyx_n_u_f2py); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message, __pyx_mstate_global->__pyx_n_u_f2py, __pyx_t_2) < (0)) __PYX_ERR(27, 211, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Message.pyx":218
 * 
 * 
 * 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_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Message(MPI_MESSAGE_NULL, __pyx_mstate_global->__pyx_n_u_MESSAGE_NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___MESSAGE_NULL__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___MESSAGE_NULL__, ((struct PyMPIMessageObject *)__pyx_t_2));
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Message.pyx":219
 * 
 * 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_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Message(MPI_MESSAGE_NO_PROC, __pyx_mstate_global->__pyx_n_u_MESSAGE_NO_PROC)); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___MESSAGE_NO_PROC__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___MESSAGE_NO_PROC__, ((struct PyMPIMessageObject *)__pyx_t_2));
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Message.pyx":225
 * # --------------------------
 * 
 * MESSAGE_NULL    = __MESSAGE_NULL__     #: Null message handle             # <<<<<<<<<<<<<<
 * MESSAGE_NO_PROC = __MESSAGE_NO_PROC__  #: No-proc message handle
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MESSAGE_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___MESSAGE_NULL__)) < (0)) __PYX_ERR(27, 225, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Message.pyx":226
 * 
 * MESSAGE_NULL    = __MESSAGE_NULL__     #: Null message handle
 * MESSAGE_NO_PROC = __MESSAGE_NO_PROC__  #: No-proc message handle             # <<<<<<<<<<<<<<
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MESSAGE_NO_PROC, ((PyObject *)__pyx_v_6mpi4py_3MPI___MESSAGE_NO_PROC__)) < (0)) __PYX_ERR(27, 226, __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_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_str_tuple_Any) < (0)) __PYX_ERR(28, 19, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_2Op_9__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Op___reduce, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[171])); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, __pyx_mstate_global->__pyx_n_u_reduce, __pyx_t_3) < (0)) __PYX_ERR(28, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":31
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Op:
 *         """
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_handle, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(28, 31, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Op) < (0)) __PYX_ERR(28, 31, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_2Op_13fromhandle, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Op_fromhandle, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[172])); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, __pyx_mstate_global->__pyx_n_u_fromhandle, __pyx_t_2) < (0)) __PYX_ERR(28, 31, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, __pyx_mstate_global->__pyx_n_u_fromhandle); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, __pyx_mstate_global->__pyx_n_u_fromhandle, __pyx_t_3) < (0)) __PYX_ERR(28, 31, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "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_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(28, 38, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_2Op_15free, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Op_free, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[173])); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, __pyx_mstate_global->__pyx_n_u_free, __pyx_t_2) < (0)) __PYX_ERR(28, 38, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":47
 *     # ---------------------------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create(
 *         cls,
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_function, __pyx_mstate_global->__pyx_kp_u_Callable_Buffer_Buffer_Datatype) < (0)) __PYX_ERR(28, 47, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_commute, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(28, 47, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(28, 47, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_2Op_17Create, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Op_Create, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[174])); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[14]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, __pyx_mstate_global->__pyx_n_u_Create, __pyx_t_3) < (0)) __PYX_ERR(28, 47, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, __pyx_mstate_global->__pyx_n_u_Create); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, __pyx_mstate_global->__pyx_n_u_Create, __pyx_t_2) < (0)) __PYX_ERR(28, 47, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":70
 *         return self
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free a user-defined reduction operation.
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(28, 70, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_2Op_19Free, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Op_Free, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[175])); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, __pyx_mstate_global->__pyx_n_u_Free, __pyx_t_3) < (0)) __PYX_ERR(28, 70, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":82
 *     # -----------------------
 * 
 *     def Is_commutative(self) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Query reduction operations for their commutativity.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(28, 82, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_2Op_21Is_commutative, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Op_Is_commutative, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[176])); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, __pyx_mstate_global->__pyx_n_u_Is_commutative, __pyx_t_2) < (0)) __PYX_ERR(28, 82, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":95
 *             return self.Is_commutative()
 * 
 *     def Reduce_local(self, inbuf: BufSpec, inoutbuf: BufSpec) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Apply a reduction operation to local data.
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_inbuf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(28, 95, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_inoutbuf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(28, 95, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(28, 95, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_2Op_23Reduce_local, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Op_Reduce_local, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[177])); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, __pyx_mstate_global->__pyx_n_u_Reduce_local, __pyx_t_3) < (0)) __PYX_ERR(28, 95, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":133
 *     # --------------
 * 
 *     def toint(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate object to integer handle.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(28, 133, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_2Op_25toint, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Op_toint, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[178])); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, __pyx_mstate_global->__pyx_n_u_toint, __pyx_t_2) < (0)) __PYX_ERR(28, 133, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":139
 *         return MPI_Op_toint(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromint(cls, arg: int, /) -> Op:
 *         """
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_arg, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(28, 139, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Op) < (0)) __PYX_ERR(28, 139, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_2Op_27fromint, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Op_fromint, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[179])); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, __pyx_mstate_global->__pyx_n_u_fromint, __pyx_t_3) < (0)) __PYX_ERR(28, 139, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, __pyx_mstate_global->__pyx_n_u_fromint); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, __pyx_mstate_global->__pyx_n_u_fromint, __pyx_t_2) < (0)) __PYX_ERR(28, 139, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":149
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(28, 149, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_2Op_29py2f, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Op_py2f, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[180])); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, __pyx_mstate_global->__pyx_n_u_py2f, __pyx_t_3) < (0)) __PYX_ERR(28, 149, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":154
 *         return MPI_Op_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Op:
 *         """
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_arg, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(28, 154, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Op) < (0)) __PYX_ERR(28, 154, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_2Op_31f2py, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Op_f2py, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[181])); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, __pyx_mstate_global->__pyx_n_u_f2py, __pyx_t_2) < (0)) __PYX_ERR(28, 154, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, __pyx_mstate_global->__pyx_n_u_f2py); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op, __pyx_mstate_global->__pyx_n_u_f2py, __pyx_t_3) < (0)) __PYX_ERR(28, 154, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":161
 * 
 * 
 * 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_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Op(MPI_OP_NULL, __pyx_mstate_global->__pyx_n_u_OP_NULL)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___OP_NULL__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___OP_NULL__, ((struct PyMPIOpObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":162
 * 
 * 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_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Op(MPI_MAX, __pyx_mstate_global->__pyx_n_u_MAX)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___MAX__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___MAX__, ((struct PyMPIOpObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":163
 * 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_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Op(MPI_MIN, __pyx_mstate_global->__pyx_n_u_MIN)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___MIN__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___MIN__, ((struct PyMPIOpObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":164
 * 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_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Op(MPI_SUM, __pyx_mstate_global->__pyx_n_u_SUM)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___SUM__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___SUM__, ((struct PyMPIOpObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":165
 * 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_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Op(MPI_PROD, __pyx_mstate_global->__pyx_n_u_PROD)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___PROD__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___PROD__, ((struct PyMPIOpObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":166
 * 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_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Op(MPI_LAND, __pyx_mstate_global->__pyx_n_u_LAND)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___LAND__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___LAND__, ((struct PyMPIOpObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":167
 * 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_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Op(MPI_BAND, __pyx_mstate_global->__pyx_n_u_BAND)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___BAND__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___BAND__, ((struct PyMPIOpObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":168
 * 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_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Op(MPI_LOR, __pyx_mstate_global->__pyx_n_u_LOR)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___LOR__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___LOR__, ((struct PyMPIOpObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":169
 * 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_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Op(MPI_BOR, __pyx_mstate_global->__pyx_n_u_BOR)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___BOR__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___BOR__, ((struct PyMPIOpObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":170
 * 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_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Op(MPI_LXOR, __pyx_mstate_global->__pyx_n_u_LXOR)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___LXOR__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___LXOR__, ((struct PyMPIOpObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":171
 * 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_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Op(MPI_BXOR, __pyx_mstate_global->__pyx_n_u_BXOR)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 171, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___BXOR__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___BXOR__, ((struct PyMPIOpObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":172
 * 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_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Op(MPI_MAXLOC, __pyx_mstate_global->__pyx_n_u_MAXLOC)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___MAXLOC__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___MAXLOC__, ((struct PyMPIOpObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":173
 * 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_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Op(MPI_MINLOC, __pyx_mstate_global->__pyx_n_u_MINLOC)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___MINLOC__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___MINLOC__, ((struct PyMPIOpObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":174
 * 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_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Op(MPI_REPLACE, __pyx_mstate_global->__pyx_n_u_REPLACE)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___REPLACE__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___REPLACE__, ((struct PyMPIOpObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":175
 * 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_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Op(MPI_NO_OP, __pyx_mstate_global->__pyx_n_u_NO_OP)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___NO_OP__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___NO_OP__, ((struct PyMPIOpObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":181
 * # ----------------------------
 * 
 * OP_NULL = __OP_NULL__  #: Null             # <<<<<<<<<<<<<<
 * MAX     = __MAX__      #: Maximum
 * MIN     = __MIN__      #: Minimum
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_OP_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___OP_NULL__)) < (0)) __PYX_ERR(28, 181, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":182
 * 
 * OP_NULL = __OP_NULL__  #: Null
 * MAX     = __MAX__      #: Maximum             # <<<<<<<<<<<<<<
 * MIN     = __MIN__      #: Minimum
 * SUM     = __SUM__      #: Sum
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MAX, ((PyObject *)__pyx_v_6mpi4py_3MPI___MAX__)) < (0)) __PYX_ERR(28, 182, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":183
 * OP_NULL = __OP_NULL__  #: Null
 * MAX     = __MAX__      #: Maximum
 * MIN     = __MIN__      #: Minimum             # <<<<<<<<<<<<<<
 * SUM     = __SUM__      #: Sum
 * PROD    = __PROD__     #: Product
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MIN, ((PyObject *)__pyx_v_6mpi4py_3MPI___MIN__)) < (0)) __PYX_ERR(28, 183, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":184
 * MAX     = __MAX__      #: Maximum
 * MIN     = __MIN__      #: Minimum
 * SUM     = __SUM__      #: Sum             # <<<<<<<<<<<<<<
 * PROD    = __PROD__     #: Product
 * LAND    = __LAND__     #: Logical and
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SUM, ((PyObject *)__pyx_v_6mpi4py_3MPI___SUM__)) < (0)) __PYX_ERR(28, 184, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":185
 * MIN     = __MIN__      #: Minimum
 * SUM     = __SUM__      #: Sum
 * PROD    = __PROD__     #: Product             # <<<<<<<<<<<<<<
 * LAND    = __LAND__     #: Logical and
 * BAND    = __BAND__     #: Bit-wise and
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_PROD, ((PyObject *)__pyx_v_6mpi4py_3MPI___PROD__)) < (0)) __PYX_ERR(28, 185, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":186
 * SUM     = __SUM__      #: Sum
 * PROD    = __PROD__     #: Product
 * LAND    = __LAND__     #: Logical and             # <<<<<<<<<<<<<<
 * BAND    = __BAND__     #: Bit-wise and
 * LOR     = __LOR__      #: Logical or
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LAND, ((PyObject *)__pyx_v_6mpi4py_3MPI___LAND__)) < (0)) __PYX_ERR(28, 186, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":187
 * 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_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_BAND, ((PyObject *)__pyx_v_6mpi4py_3MPI___BAND__)) < (0)) __PYX_ERR(28, 187, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":188
 * 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_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LOR, ((PyObject *)__pyx_v_6mpi4py_3MPI___LOR__)) < (0)) __PYX_ERR(28, 188, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":189
 * 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_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_BOR, ((PyObject *)__pyx_v_6mpi4py_3MPI___BOR__)) < (0)) __PYX_ERR(28, 189, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":190
 * 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_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LXOR, ((PyObject *)__pyx_v_6mpi4py_3MPI___LXOR__)) < (0)) __PYX_ERR(28, 190, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":191
 * 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_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_BXOR, ((PyObject *)__pyx_v_6mpi4py_3MPI___BXOR__)) < (0)) __PYX_ERR(28, 191, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":192
 * 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_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MAXLOC, ((PyObject *)__pyx_v_6mpi4py_3MPI___MAXLOC__)) < (0)) __PYX_ERR(28, 192, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":193
 * 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_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MINLOC, ((PyObject *)__pyx_v_6mpi4py_3MPI___MINLOC__)) < (0)) __PYX_ERR(28, 193, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":194
 * 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_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_REPLACE, ((PyObject *)__pyx_v_6mpi4py_3MPI___REPLACE__)) < (0)) __PYX_ERR(28, 194, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":195
 * MINLOC  = __MINLOC__   #: Minimum and location
 * REPLACE = __REPLACE__  #: Replace (for RMA)
 * NO_OP   = __NO_OP__    #: No-op   (for RMA)             # <<<<<<<<<<<<<<
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_NO_OP, ((PyObject *)__pyx_v_6mpi4py_3MPI___NO_OP__)) < (0)) __PYX_ERR(28, 195, __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_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_str_tuple_Any) < (0)) __PYX_ERR(29, 19, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_9__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Group___reduce, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[182])); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_reduce, __pyx_t_2) < (0)) __PYX_ERR(29, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":27
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Group:
 *         """
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_handle, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(29, 27, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Group) < (0)) __PYX_ERR(29, 27, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_11fromhandle, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Group_fromhandle, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[183])); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_fromhandle, __pyx_t_3) < (0)) __PYX_ERR(29, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_fromhandle); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_fromhandle, __pyx_t_2) < (0)) __PYX_ERR(29, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "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_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(29, 34, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_13free, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Group_free, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[184])); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_free, __pyx_t_3) < (0)) __PYX_ERR(29, 34, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":43
 *     # ---------------
 * 
 *     def Get_size(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of processes in a group.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(29, 43, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_15Get_size, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Group_Get_size, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[185])); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_Get_size, __pyx_t_2) < (0)) __PYX_ERR(29, 43, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "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_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(29, 56, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_17Get_rank, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Group_Get_rank, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[186])); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_Get_rank, __pyx_t_3) < (0)) __PYX_ERR(29, 56, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":69
 *             return self.Get_rank()
 * 
 *     def Translate_ranks(             # <<<<<<<<<<<<<<
 *         self,
 *         ranks: Sequence[int] | None = None,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ranks, __pyx_mstate_global->__pyx_kp_u_Sequence_int_None) < (0)) __PYX_ERR(29, 69, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_group, __pyx_mstate_global->__pyx_kp_u_Group_None) < (0)) __PYX_ERR(29, 69, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_list_int) < (0)) __PYX_ERR(29, 69, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_19Translate_ranks, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Group_Translate_ranks, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[187])); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[19]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_Translate_ranks, __pyx_t_2) < (0)) __PYX_ERR(29, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":105
 *         return ranks2
 * 
 *     def Compare(self, Group group: Group) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Compare two groups.
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_group, __pyx_mstate_global->__pyx_n_u_Group) < (0)) __PYX_ERR(29, 105, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(29, 105, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_21Compare, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Group_Compare, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[188])); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_Compare, __pyx_t_3) < (0)) __PYX_ERR(29, 105, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":117
 *     # ------------------
 * 
 *     def Dup(self) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate a group.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(29, 117, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_23Dup, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Group_Dup, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[189])); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_Dup, __pyx_t_2) < (0)) __PYX_ERR(29, 117, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":125
 *         return group
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Union(cls, Group group1: Group, Group group2: Group) -> Self:
 *         """
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_group1, __pyx_mstate_global->__pyx_n_u_Group) < (0)) __PYX_ERR(29, 125, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_group2, __pyx_mstate_global->__pyx_n_u_Group) < (0)) __PYX_ERR(29, 125, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(29, 125, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_25Union, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Group_Union, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[190])); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_Union, __pyx_t_3) < (0)) __PYX_ERR(29, 125, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_Union); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_Union, __pyx_t_2) < (0)) __PYX_ERR(29, 125, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":135
 *         return group
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Intersection(cls, Group group1: Group, Group group2: Group) -> Self:
 *         """
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_group1, __pyx_mstate_global->__pyx_n_u_Group) < (0)) __PYX_ERR(29, 135, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_group2, __pyx_mstate_global->__pyx_n_u_Group) < (0)) __PYX_ERR(29, 135, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(29, 135, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_27Intersection, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Group_Intersection, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[191])); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_Intersection, __pyx_t_3) < (0)) __PYX_ERR(29, 135, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_Intersection); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_Intersection, __pyx_t_2) < (0)) __PYX_ERR(29, 135, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":145
 *         return group
 * 
 *     Intersect = Intersection             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
*/
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_Intersection); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_Intersect, __pyx_t_2) < (0)) __PYX_ERR(29, 145, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":147
 *     Intersect = Intersection
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Difference(cls, Group group1: Group, Group group2: Group) -> Self:
 *         """
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_group1, __pyx_mstate_global->__pyx_n_u_Group) < (0)) __PYX_ERR(29, 147, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_group2, __pyx_mstate_global->__pyx_n_u_Group) < (0)) __PYX_ERR(29, 147, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(29, 147, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_29Difference, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Group_Difference, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[192])); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_Difference, __pyx_t_3) < (0)) __PYX_ERR(29, 147, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_Difference); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_Difference, __pyx_t_2) < (0)) __PYX_ERR(29, 147, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "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_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ranks, __pyx_mstate_global->__pyx_kp_u_Sequence_int) < (0)) __PYX_ERR(29, 157, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(29, 157, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_31Incl, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Group_Incl, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[193])); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_Incl, __pyx_t_3) < (0)) __PYX_ERR(29, 157, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "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_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ranks, __pyx_mstate_global->__pyx_kp_u_Sequence_int) < (0)) __PYX_ERR(29, 167, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(29, 167, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_33Excl, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Group_Excl, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[194])); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_Excl, __pyx_t_2) < (0)) __PYX_ERR(29, 167, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "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_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ranks, __pyx_mstate_global->__pyx_kp_u_Sequence_tuple_int_int_int) < (0)) __PYX_ERR(29, 177, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(29, 177, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_35Range_incl, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Group_Range_incl, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[195])); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_Range_incl, __pyx_t_3) < (0)) __PYX_ERR(29, 177, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "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_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ranks, __pyx_mstate_global->__pyx_kp_u_Sequence_tuple_int_int_int) < (0)) __PYX_ERR(29, 192, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(29, 192, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_37Range_excl, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Group_Range_excl, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[196])); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_Range_excl, __pyx_t_2) < (0)) __PYX_ERR(29, 192, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":207
 *         return group
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_from_session_pset(
 *         cls,
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_session, __pyx_mstate_global->__pyx_n_u_Session) < (0)) __PYX_ERR(29, 207, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_pset_name, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(29, 207, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(29, 207, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_39Create_from_session_pset, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Group_Create_from_session_pset, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[197])); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_Create_from_session_pset, __pyx_t_3) < (0)) __PYX_ERR(29, 207, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_Create_from_session_pset); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_Create_from_session_pset, __pyx_t_2) < (0)) __PYX_ERR(29, 207, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":226
 *     # ----------------
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free a group.
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 226, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(29, 226, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_41Free, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Group_Free, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[198])); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 226, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_Free, __pyx_t_3) < (0)) __PYX_ERR(29, 226, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":237
 *     # --------------
 * 
 *     def toint(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate object to integer handle.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(29, 237, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_43toint, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Group_toint, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[199])); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_toint, __pyx_t_2) < (0)) __PYX_ERR(29, 237, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":243
 *         return MPI_Group_toint(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromint(cls, arg: int, /) -> Group:
 *         """
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_arg, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(29, 243, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Group) < (0)) __PYX_ERR(29, 243, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_45fromint, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Group_fromint, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[200])); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_fromint, __pyx_t_3) < (0)) __PYX_ERR(29, 243, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_fromint); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_fromint, __pyx_t_2) < (0)) __PYX_ERR(29, 243, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":253
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(29, 253, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_47py2f, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Group_py2f, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[201])); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_py2f, __pyx_t_3) < (0)) __PYX_ERR(29, 253, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":258
 *         return MPI_Group_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Group:
 *         """
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_arg, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(29, 258, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Group) < (0)) __PYX_ERR(29, 258, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_49f2py, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Group_f2py, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[202])); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_f2py, __pyx_t_2) < (0)) __PYX_ERR(29, 258, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_f2py); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group, __pyx_mstate_global->__pyx_n_u_f2py, __pyx_t_3) < (0)) __PYX_ERR(29, 258, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":265
 * 
 * 
 * cdef Group __GROUP_NULL__  = def_Group ( MPI_GROUP_NULL  , "GROUP_NULL"  )             # <<<<<<<<<<<<<<
 * cdef Group __GROUP_EMPTY__ = def_Group ( MPI_GROUP_EMPTY , "GROUP_EMPTY" )
 * 
*/
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Group(MPI_GROUP_NULL, __pyx_mstate_global->__pyx_n_u_GROUP_NULL)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___GROUP_NULL__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___GROUP_NULL__, ((struct PyMPIGroupObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":266
 * 
 * cdef Group __GROUP_NULL__  = def_Group ( MPI_GROUP_NULL  , "GROUP_NULL"  )
 * cdef Group __GROUP_EMPTY__ = def_Group ( MPI_GROUP_EMPTY , "GROUP_EMPTY" )             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Group(MPI_GROUP_EMPTY, __pyx_mstate_global->__pyx_n_u_GROUP_EMPTY)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___GROUP_EMPTY__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___GROUP_EMPTY__, ((struct PyMPIGroupObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":272
 * # ------------------------
 * 
 * GROUP_NULL  = __GROUP_NULL__   #: Null group handle             # <<<<<<<<<<<<<<
 * GROUP_EMPTY = __GROUP_EMPTY__  #: Empty group handle
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_GROUP_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___GROUP_NULL__)) < (0)) __PYX_ERR(29, 272, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":273
 * 
 * GROUP_NULL  = __GROUP_NULL__   #: Null group handle
 * GROUP_EMPTY = __GROUP_EMPTY__  #: Empty group handle             # <<<<<<<<<<<<<<
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_GROUP_EMPTY, ((PyObject *)__pyx_v_6mpi4py_3MPI___GROUP_EMPTY__)) < (0)) __PYX_ERR(29, 273, __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_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_str_tuple_Any) < (0)) __PYX_ERR(30, 19, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_9__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Info___reduce, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[203])); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_reduce, __pyx_t_2) < (0)) __PYX_ERR(30, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":27
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Info:
 *         """
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_handle, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(30, 27, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(30, 27, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_11fromhandle, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Info_fromhandle, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[204])); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_fromhandle, __pyx_t_3) < (0)) __PYX_ERR(30, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_fromhandle); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_fromhandle, __pyx_t_2) < (0)) __PYX_ERR(30, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "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_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(30, 34, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_13free, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Info_free, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[205])); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_free, __pyx_t_3) < (0)) __PYX_ERR(30, 34, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":43
 *     # ---------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create(
 *         cls,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_items, __pyx_mstate_global->__pyx_kp_u_Info_Mapping_str_str_Iterable_tu) < (0)) __PYX_ERR(30, 43, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(30, 43, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_15Create, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Info_Create, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[206])); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_Create, __pyx_t_2) < (0)) __PYX_ERR(30, 43, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_Create); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_Create, __pyx_t_3) < (0)) __PYX_ERR(30, 43, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":72
 *         return info
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_env(cls, args: Sequence[str] | None = None) -> Self:
 *         """
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_args, __pyx_mstate_global->__pyx_kp_u_Sequence_str_None) < (0)) __PYX_ERR(30, 72, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(30, 72, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_17Create_env, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Info_Create_env, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[207])); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_Create_env, __pyx_t_2) < (0)) __PYX_ERR(30, 72, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_Create_env); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_Create_env, __pyx_t_3) < (0)) __PYX_ERR(30, 72, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":85
 *         return info
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free an info object.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(30, 85, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_19Free, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Info_Free, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[208])); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_Free, __pyx_t_2) < (0)) __PYX_ERR(30, 85, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":93
 *         if constobj(self): self.ob_mpi = save
 * 
 *     def Dup(self) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate an existing info object.
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(30, 93, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_21Dup, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Info_Dup, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[209])); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_Dup, __pyx_t_3) < (0)) __PYX_ERR(30, 93, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":101
 *         return info
 * 
 *     def Get(self, key: str) -> str | None:             # <<<<<<<<<<<<<<
 *         """
 *         Retrieve the value associated with a key.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_key, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(30, 101, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_str_None) < (0)) __PYX_ERR(30, 101, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_23Get, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Info_Get, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[210])); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_Get, __pyx_t_2) < (0)) __PYX_ERR(30, 101, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":115
 *         return mpistr(cvalue)
 * 
 *     def Set(self, key: str, value: str) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Store a value associated with a key.
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_key, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(30, 115, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_value, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(30, 115, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(30, 115, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_25Set, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Info_Set, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[211])); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_Set, __pyx_t_3) < (0)) __PYX_ERR(30, 115, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":125
 *         CHKERR( MPI_Info_set(self.ob_mpi, ckey, cvalue) )
 * 
 *     def Delete(self, key: str) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Remove a (key, value) pair from info.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_key, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(30, 125, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(30, 125, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_27Delete, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Info_Delete, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[212])); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_Delete, __pyx_t_2) < (0)) __PYX_ERR(30, 125, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":133
 *         CHKERR( MPI_Info_delete(self.ob_mpi, ckey) )
 * 
 *     def Get_nkeys(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of currently defined keys in info.
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(30, 133, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_29Get_nkeys, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Info_Get_nkeys, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[213])); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_Get_nkeys, __pyx_t_3) < (0)) __PYX_ERR(30, 133, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":141
 *         return nkeys
 * 
 *     def Get_nthkey(self, int n: int) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Return the *n*-th defined key in info.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_n, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(30, 141, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(30, 141, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_31Get_nthkey, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Info_Get_nthkey, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[214])); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_Get_nthkey, __pyx_t_2) < (0)) __PYX_ERR(30, 141, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":154
 *     # --------------
 * 
 *     def toint(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate object to integer handle.
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(30, 154, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_33toint, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Info_toint, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[215])); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_toint, __pyx_t_3) < (0)) __PYX_ERR(30, 154, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":160
 *         return MPI_Info_toint(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromint(cls, arg: int, /) -> Info:
 *         """
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_arg, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(30, 160, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(30, 160, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_35fromint, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Info_fromint, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[216])); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_fromint, __pyx_t_2) < (0)) __PYX_ERR(30, 160, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_fromint); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_fromint, __pyx_t_3) < (0)) __PYX_ERR(30, 160, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":170
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(30, 170, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_37py2f, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Info_py2f, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[217])); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_py2f, __pyx_t_2) < (0)) __PYX_ERR(30, 170, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":175
 *         return MPI_Info_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Info:
 *         """
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_arg, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(30, 175, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(30, 175, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_39f2py, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Info_f2py, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[218])); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_f2py, __pyx_t_3) < (0)) __PYX_ERR(30, 175, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_f2py); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_f2py, __pyx_t_2) < (0)) __PYX_ERR(30, 175, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":216
 *         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_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_key, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(30, 216, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_default, __pyx_mstate_global->__pyx_kp_u_str_None) < (0)) __PYX_ERR(30, 216, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_str_None) < (0)) __PYX_ERR(30, 216, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_53get, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Info_get, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[219])); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_get, __pyx_t_3) < (0)) __PYX_ERR(30, 216, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":223
 *         return value
 * 
 *     def keys(self) -> list[str]:             # <<<<<<<<<<<<<<
 *         """Return list of keys."""
 *         if not self: return []
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 223, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_list_str) < (0)) __PYX_ERR(30, 223, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_55keys, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Info_keys, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[220])); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 223, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_keys, __pyx_t_2) < (0)) __PYX_ERR(30, 223, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":234
 *         return keys
 * 
 *     def values(self) -> list[str]:             # <<<<<<<<<<<<<<
 *         """Return list of values."""
 *         if not self: return []
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_list_str) < (0)) __PYX_ERR(30, 234, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_57values, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Info_values, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[221])); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_values, __pyx_t_3) < (0)) __PYX_ERR(30, 234, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":246
 *         return values
 * 
 *     def items(self) -> list[tuple[str, str]]:             # <<<<<<<<<<<<<<
 *         """Return list of items."""
 *         if not self: return []
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 246, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_list_tuple_str_str) < (0)) __PYX_ERR(30, 246, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_59items, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Info_items, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[222])); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 246, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_items, __pyx_t_2) < (0)) __PYX_ERR(30, 246, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":258
 *         return items
 * 
 *     def update(             # <<<<<<<<<<<<<<
 *         self,
 *         items: Info | Mapping[str, str] | Iterable[tuple[str, str]] = (),
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_items, __pyx_mstate_global->__pyx_kp_u_Info_Mapping_str_str_Iterable_tu_2) < (0)) __PYX_ERR(30, 258, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_kwds, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(30, 258, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(30, 258, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_61update, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Info_update, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[223])); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[20]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_update, __pyx_t_3) < (0)) __PYX_ERR(30, 258, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":275
 *             self.Set(key, value)
 * 
 *     def pop(self, key: str, *default: str) -> str:             # <<<<<<<<<<<<<<
 *         """Pop value by key."""
 *         cdef object value = None
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_key, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(30, 275, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_default, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(30, 275, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(30, 275, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_63pop, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Info_pop, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[224])); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_pop, __pyx_t_2) < (0)) __PYX_ERR(30, 275, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":288
 *         raise KeyError(key)
 * 
 *     def popitem(self) -> tuple[str, str]:             # <<<<<<<<<<<<<<
 *         """Pop first item."""
 *         if not self: raise KeyError
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 288, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_tuple_str_str) < (0)) __PYX_ERR(30, 288, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_65popitem, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Info_popitem, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[225])); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 288, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_popitem, __pyx_t_3) < (0)) __PYX_ERR(30, 288, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":299
 *         return (key, value)
 * 
 *     def copy(self) -> Self:             # <<<<<<<<<<<<<<
 *         """Copy contents."""
 *         if not self: return <Info>New(type(self))
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 299, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(30, 299, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_67copy, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Info_copy, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[226])); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 299, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_copy, __pyx_t_2) < (0)) __PYX_ERR(30, 299, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":304
 *         return self.Dup()
 * 
 *     def clear(self) -> None:             # <<<<<<<<<<<<<<
 *         """Clear contents."""
 *         if not self: return None
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(30, 304, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_69clear, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Info_clear, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[227])); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info, __pyx_mstate_global->__pyx_n_u_clear, __pyx_t_3) < (0)) __PYX_ERR(30, 304, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":315
 * 
 * 
 * cdef Info __INFO_NULL__ = def_Info( MPI_INFO_NULL , "INFO_NULL" )             # <<<<<<<<<<<<<<
 * cdef Info __INFO_ENV__  = def_Info( MPI_INFO_ENV  , "INFO_ENV"  )
 * 
*/
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Info(MPI_INFO_NULL, __pyx_mstate_global->__pyx_n_u_INFO_NULL)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 315, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___INFO_NULL__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___INFO_NULL__, ((struct PyMPIInfoObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":316
 * 
 * cdef Info __INFO_NULL__ = def_Info( MPI_INFO_NULL , "INFO_NULL" )
 * cdef Info __INFO_ENV__  = def_Info( MPI_INFO_ENV  , "INFO_ENV"  )             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Info(MPI_INFO_ENV, __pyx_mstate_global->__pyx_n_u_INFO_ENV)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 316, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___INFO_ENV__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___INFO_ENV__, ((struct PyMPIInfoObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":322
 * # -----------------------
 * 
 * INFO_NULL = __INFO_NULL__  #: Null info handle             # <<<<<<<<<<<<<<
 * INFO_ENV  = __INFO_ENV__   #: Environment info handle
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_INFO_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___INFO_NULL__)) < (0)) __PYX_ERR(30, 322, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":323
 * 
 * INFO_NULL = __INFO_NULL__  #: Null info handle
 * INFO_ENV  = __INFO_ENV__   #: Environment info handle             # <<<<<<<<<<<<<<
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_INFO_ENV, ((PyObject *)__pyx_v_6mpi4py_3MPI___INFO_ENV__)) < (0)) __PYX_ERR(30, 323, __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_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_str_tuple_Any) < (0)) __PYX_ERR(31, 19, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_10Errhandler_9__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Errhandler___reduce, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[228])); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler, __pyx_mstate_global->__pyx_n_u_reduce, __pyx_t_2) < (0)) __PYX_ERR(31, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Errhandler.pyx":27
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Errhandler:
 *         """
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_handle, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(31, 27, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Errhandler) < (0)) __PYX_ERR(31, 27, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_10Errhandler_11fromhandle, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Errhandler_fromhandle, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[229])); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler, __pyx_mstate_global->__pyx_n_u_fromhandle, __pyx_t_3) < (0)) __PYX_ERR(31, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler, __pyx_mstate_global->__pyx_n_u_fromhandle); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler, __pyx_mstate_global->__pyx_n_u_fromhandle, __pyx_t_2) < (0)) __PYX_ERR(31, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "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_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(31, 34, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_10Errhandler_13free, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Errhandler_free, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[230])); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler, __pyx_mstate_global->__pyx_n_u_free, __pyx_t_3) < (0)) __PYX_ERR(31, 34, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Errhandler.pyx":43
 *     # ---------------------
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free an error handler.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(31, 43, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_10Errhandler_15Free, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Errhandler_Free, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[231])); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler, __pyx_mstate_global->__pyx_n_u_Free, __pyx_t_2) < (0)) __PYX_ERR(31, 43, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Errhandler.pyx":54
 *     # --------------
 * 
 *     def toint(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate object to integer handle.
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(31, 54, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_10Errhandler_17toint, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Errhandler_toint, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[232])); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler, __pyx_mstate_global->__pyx_n_u_toint, __pyx_t_3) < (0)) __PYX_ERR(31, 54, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Errhandler.pyx":60
 *         return MPI_Errhandler_toint(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromint(cls, arg: int, /) -> Errhandler:
 *         """
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_arg, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(31, 60, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Errhandler) < (0)) __PYX_ERR(31, 60, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_10Errhandler_19fromint, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Errhandler_fromint, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[233])); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler, __pyx_mstate_global->__pyx_n_u_fromint, __pyx_t_2) < (0)) __PYX_ERR(31, 60, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler, __pyx_mstate_global->__pyx_n_u_fromint); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler, __pyx_mstate_global->__pyx_n_u_fromint, __pyx_t_3) < (0)) __PYX_ERR(31, 60, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Errhandler.pyx":70
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(31, 70, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_10Errhandler_21py2f, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Errhandler_py2f, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[234])); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler, __pyx_mstate_global->__pyx_n_u_py2f, __pyx_t_2) < (0)) __PYX_ERR(31, 70, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Errhandler.pyx":75
 *         return MPI_Errhandler_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Errhandler:
 *         """
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_arg, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(31, 75, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Errhandler) < (0)) __PYX_ERR(31, 75, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_10Errhandler_23f2py, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Errhandler_f2py, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[235])); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler, __pyx_mstate_global->__pyx_n_u_f2py, __pyx_t_3) < (0)) __PYX_ERR(31, 75, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler, __pyx_mstate_global->__pyx_n_u_f2py); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler, __pyx_mstate_global->__pyx_n_u_f2py, __pyx_t_2) < (0)) __PYX_ERR(31, 75, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Errhandler.pyx":82
 * 
 * 
 * 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_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Errhandler(MPI_ERRHANDLER_NULL, __pyx_mstate_global->__pyx_n_u_ERRHANDLER_NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___ERRHANDLER_NULL__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___ERRHANDLER_NULL__, ((struct PyMPIErrhandlerObject *)__pyx_t_2));
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Errhandler.pyx":83
 * 
 * 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_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Errhandler(MPI_ERRORS_RETURN, __pyx_mstate_global->__pyx_n_u_ERRORS_RETURN)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___ERRORS_RETURN__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___ERRORS_RETURN__, ((struct PyMPIErrhandlerObject *)__pyx_t_2));
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Errhandler.pyx":84
 * 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_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Errhandler(MPI_ERRORS_ABORT, __pyx_mstate_global->__pyx_n_u_ERRORS_ABORT)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___ERRORS_ABORT__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___ERRORS_ABORT__, ((struct PyMPIErrhandlerObject *)__pyx_t_2));
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Errhandler.pyx":85
 * 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_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Errhandler(MPI_ERRORS_ARE_FATAL, __pyx_mstate_global->__pyx_n_u_ERRORS_ARE_FATAL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___ERRORS_ARE_FATAL__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___ERRORS_ARE_FATAL__, ((struct PyMPIErrhandlerObject *)__pyx_t_2));
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Errhandler.pyx":91
 * # -----------------------------
 * 
 * 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_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERRHANDLER_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___ERRHANDLER_NULL__)) < (0)) __PYX_ERR(31, 91, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Errhandler.pyx":92
 * 
 * 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_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERRORS_RETURN, ((PyObject *)__pyx_v_6mpi4py_3MPI___ERRORS_RETURN__)) < (0)) __PYX_ERR(31, 92, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Errhandler.pyx":93
 * 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_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERRORS_ABORT, ((PyObject *)__pyx_v_6mpi4py_3MPI___ERRORS_ABORT__)) < (0)) __PYX_ERR(31, 93, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Errhandler.pyx":94
 * 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_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ERRORS_ARE_FATAL, ((PyObject *)__pyx_v_6mpi4py_3MPI___ERRORS_ARE_FATAL__)) < (0)) __PYX_ERR(31, 94, __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_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_str_tuple_Any) < (0)) __PYX_ERR(32, 19, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_9__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Session___reduce, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[236])); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, __pyx_mstate_global->__pyx_n_u_reduce, __pyx_t_3) < (0)) __PYX_ERR(32, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":27
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Session:
 *         """
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_handle, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(32, 27, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Session) < (0)) __PYX_ERR(32, 27, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_11fromhandle, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Session_fromhandle, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[237])); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, __pyx_mstate_global->__pyx_n_u_fromhandle, __pyx_t_2) < (0)) __PYX_ERR(32, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, __pyx_mstate_global->__pyx_n_u_fromhandle); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, __pyx_mstate_global->__pyx_n_u_fromhandle, __pyx_t_3) < (0)) __PYX_ERR(32, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "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_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(32, 34, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_13free, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Session_free, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[238])); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, __pyx_mstate_global->__pyx_n_u_free, __pyx_t_2) < (0)) __PYX_ERR(32, 34, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "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_2, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(32, 45, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__18 = ((struct PyMPIInfoObject *)__pyx_t_2);
  __Pyx_GIVEREF((PyObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":42
 *     #
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Init(
 *         cls,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "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_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(32, 45, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":42
 *     #
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Init(
 *         cls,
*/
  __pyx_t_3 = PyTuple_Pack(2, __pyx_t_2, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(32, 42, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_errhandler, __pyx_mstate_global->__pyx_kp_u_Errhandler_None) < (0)) __PYX_ERR(32, 42, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(32, 42, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_15Init, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Session_Init, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[239])); if (unlikely(!__pyx_t_11)) __PYX_ERR(32, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, __pyx_mstate_global->__pyx_n_u_Init, __pyx_t_11) < (0)) __PYX_ERR(32, 42, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_GetNameInClass(__pyx_t_11, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, __pyx_mstate_global->__pyx_n_u_Init); if (unlikely(!__pyx_t_11)) __PYX_ERR(32, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, __pyx_mstate_global->__pyx_n_u_Init, __pyx_t_2) < (0)) __PYX_ERR(32, 42, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":58
 *         return session
 * 
 *     def Finalize(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Finalize a session.
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(32, 58, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_17Finalize, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Session_Finalize, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[240])); if (unlikely(!__pyx_t_11)) __PYX_ERR(32, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, __pyx_mstate_global->__pyx_n_u_Finalize, __pyx_t_11) < (0)) __PYX_ERR(32, 58, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":66
 *         if constobj(self): self.ob_mpi = save
 * 
 *     def Get_num_psets(self, Info info: Info = INFO_NULL) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Number of available process sets.
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(32, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(32, 66, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__19 = ((struct PyMPIInfoObject *)__pyx_t_11);
  __Pyx_GIVEREF((PyObject *)__pyx_t_11);
  __pyx_t_11 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(32, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(32, 66, __pyx_L1_error)
  __pyx_t_2 = PyTuple_Pack(1, __pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(32, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(32, 66, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(32, 66, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_19Get_num_psets, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Session_Get_num_psets, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[241])); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_2);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, __pyx_mstate_global->__pyx_n_u_Get_num_psets, __pyx_t_3) < (0)) __PYX_ERR(32, 66, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":75
 *         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_3, __pyx_mstate_global->__pyx_n_u_INFO_NULL); 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(32, 75, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__20 = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_INFO_NULL); 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(32, 75, __pyx_L1_error)
  __pyx_t_11 = PyTuple_Pack(1, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(32, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_n, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(32, 75, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(32, 75, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(32, 75, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_21Get_nth_pset, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Session_Get_nth_pset, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[242])); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_t_11);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, __pyx_mstate_global->__pyx_n_u_Get_nth_pset, __pyx_t_2) < (0)) __PYX_ERR(32, 75, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":86
 *         return mpistr(pset_name)
 * 
 *     def Get_info(self) -> Info:             # <<<<<<<<<<<<<<
 *         """
 *         Return the current hints for a session.
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(32, 86, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_23Get_info, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Session_Get_info, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[243])); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, __pyx_mstate_global->__pyx_n_u_Get_info, __pyx_t_3) < (0)) __PYX_ERR(32, 86, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":95
 *         return info
 * 
 *     def Get_pset_info(self, pset_name: str) -> Info:             # <<<<<<<<<<<<<<
 *         """
 *         Return the current hints for a session and process set.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_pset_name, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(32, 95, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(32, 95, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_25Get_pset_info, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Session_Get_pset_info, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[244])); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, __pyx_mstate_global->__pyx_n_u_Get_pset_info, __pyx_t_2) < (0)) __PYX_ERR(32, 95, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":106
 *         return info
 * 
 *     def Create_group(self, pset_name: str) -> Group:             # <<<<<<<<<<<<<<
 *         """
 *         Create a new group from session and process set.
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_pset_name, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(32, 106, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Group) < (0)) __PYX_ERR(32, 106, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_27Create_group, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Session_Create_group, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[245])); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, __pyx_mstate_global->__pyx_n_u_Create_group, __pyx_t_3) < (0)) __PYX_ERR(32, 106, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":120
 *     # ---------------------------
 * 
 *     def Attach_buffer(self, buf: Buffer | None) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Attach a user-provided buffer for sending in buffered mode.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_kp_u_Buffer_None) < (0)) __PYX_ERR(32, 120, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(32, 120, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_29Attach_buffer, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Session_Attach_buffer, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[246])); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, __pyx_mstate_global->__pyx_n_u_Attach_buffer, __pyx_t_2) < (0)) __PYX_ERR(32, 120, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":131
 *         detach_buffer_set(self, buf)  # ~> MPI-4.1
 * 
 *     def Detach_buffer(self) -> Buffer | None:             # <<<<<<<<<<<<<<
 *         """
 *         Remove an existing attached buffer.
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_Buffer_None) < (0)) __PYX_ERR(32, 131, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_31Detach_buffer, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Session_Detach_buffer, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[247])); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, __pyx_mstate_global->__pyx_n_u_Detach_buffer, __pyx_t_3) < (0)) __PYX_ERR(32, 131, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":141
 *         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_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(32, 141, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_33Flush_buffer, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Session_Flush_buffer, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[248])); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, __pyx_mstate_global->__pyx_n_u_Flush_buffer, __pyx_t_2) < (0)) __PYX_ERR(32, 141, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":147
 *         with nogil: CHKERR( MPI_Session_flush_buffer(self.ob_mpi) )
 * 
 *     def Iflush_buffer(self) -> Request:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking flush for buffered messages.
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(32, 147, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_35Iflush_buffer, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Session_Iflush_buffer, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[249])); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, __pyx_mstate_global->__pyx_n_u_Iflush_buffer, __pyx_t_3) < (0)) __PYX_ERR(32, 147, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":159
 *     # --------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_errhandler(
 *         cls,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_errhandler_fn, __pyx_mstate_global->__pyx_kp_u_Callable_Session_int_None) < (0)) __PYX_ERR(32, 159, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Errhandler) < (0)) __PYX_ERR(32, 159, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_37Create_errhandler, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Session_Create_errhandler, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[250])); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, __pyx_mstate_global->__pyx_n_u_Create_errhandler, __pyx_t_2) < (0)) __PYX_ERR(32, 159, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, __pyx_mstate_global->__pyx_n_u_Create_errhandler); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, __pyx_mstate_global->__pyx_n_u_Create_errhandler, __pyx_t_3) < (0)) __PYX_ERR(32, 159, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":177
 *         return errhandler
 * 
 *     def Get_errhandler(self) -> Errhandler:             # <<<<<<<<<<<<<<
 *         """
 *         Get the error handler for a session.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Errhandler) < (0)) __PYX_ERR(32, 177, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_39Get_errhandler, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Session_Get_errhandler, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[251])); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, __pyx_mstate_global->__pyx_n_u_Get_errhandler, __pyx_t_2) < (0)) __PYX_ERR(32, 177, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":185
 *         return errhandler
 * 
 *     def Set_errhandler(self, Errhandler errhandler: Errhandler) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the error handler for a session.
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_errhandler, __pyx_mstate_global->__pyx_n_u_Errhandler) < (0)) __PYX_ERR(32, 185, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(32, 185, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_41Set_errhandler, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Session_Set_errhandler, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[252])); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, __pyx_mstate_global->__pyx_n_u_Set_errhandler, __pyx_t_3) < (0)) __PYX_ERR(32, 185, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":191
 *         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_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_errorcode, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(32, 191, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(32, 191, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_43Call_errhandler, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Session_Call_errhandler, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[253])); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, __pyx_mstate_global->__pyx_n_u_Call_errhandler, __pyx_t_2) < (0)) __PYX_ERR(32, 191, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":200
 *     # --------------
 * 
 *     def toint(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate object to integer handle.
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(32, 200, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_45toint, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Session_toint, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[254])); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, __pyx_mstate_global->__pyx_n_u_toint, __pyx_t_3) < (0)) __PYX_ERR(32, 200, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":206
 *         return MPI_Session_toint(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromint(cls, arg: int, /) -> Session:
 *         """
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_arg, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(32, 206, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Session) < (0)) __PYX_ERR(32, 206, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_47fromint, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Session_fromint, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[255])); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, __pyx_mstate_global->__pyx_n_u_fromint, __pyx_t_2) < (0)) __PYX_ERR(32, 206, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, __pyx_mstate_global->__pyx_n_u_fromint); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, __pyx_mstate_global->__pyx_n_u_fromint, __pyx_t_3) < (0)) __PYX_ERR(32, 206, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":216
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(32, 216, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_49py2f, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Session_py2f, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[256])); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, __pyx_mstate_global->__pyx_n_u_py2f, __pyx_t_2) < (0)) __PYX_ERR(32, 216, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":221
 *         return MPI_Session_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Session:
 *         """
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_arg, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(32, 221, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Session) < (0)) __PYX_ERR(32, 221, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_51f2py, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Session_f2py, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[257])); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, __pyx_mstate_global->__pyx_n_u_f2py, __pyx_t_3) < (0)) __PYX_ERR(32, 221, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, __pyx_mstate_global->__pyx_n_u_f2py); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session, __pyx_mstate_global->__pyx_n_u_f2py, __pyx_t_2) < (0)) __PYX_ERR(32, 221, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":228
 * 
 * 
 * cdef Session __SESSION_NULL__ = def_Session( MPI_SESSION_NULL , "SESSION_NULL" )             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Session(MPI_SESSION_NULL, __pyx_mstate_global->__pyx_n_u_SESSION_NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___SESSION_NULL__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___SESSION_NULL__, ((struct PyMPISessionObject *)__pyx_t_2));
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":234
 * # -------------------------
 * 
 * SESSION_NULL  = __SESSION_NULL__  #: Null session handler             # <<<<<<<<<<<<<<
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SESSION_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___SESSION_NULL__)) < (0)) __PYX_ERR(32, 234, __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_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_IDENT); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_IDENT, __pyx_t_2) < (0)) __PYX_ERR(33, 4, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 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_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_CONGRUENT); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_CONGRUENT, __pyx_t_2) < (0)) __PYX_ERR(33, 5, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 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_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_SIMILAR); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SIMILAR, __pyx_t_2) < (0)) __PYX_ERR(33, 6, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 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_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_UNEQUAL); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_UNEQUAL, __pyx_t_2) < (0)) __PYX_ERR(33, 7, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 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_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_CART); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 13, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_CART, __pyx_t_2) < (0)) __PYX_ERR(33, 13, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 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_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_GRAPH); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_GRAPH, __pyx_t_2) < (0)) __PYX_ERR(33, 14, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 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_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_DIST_GRAPH); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_DIST_GRAPH, __pyx_t_2) < (0)) __PYX_ERR(33, 15, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":21
 * # --------------------------
 * 
 * UNWEIGHTED    = __UNWEIGHTED__     #: Unweighted graph             # <<<<<<<<<<<<<<
 * WEIGHTS_EMPTY = __WEIGHTS_EMPTY__  #: Empty graph weights
 * 
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_UNWEIGHTED, __pyx_v_6mpi4py_3MPI___UNWEIGHTED__) < (0)) __PYX_ERR(33, 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_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_WEIGHTS_EMPTY, __pyx_v_6mpi4py_3MPI___WEIGHTS_EMPTY__) < (0)) __PYX_ERR(33, 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_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_COMM_TYPE_SHARED); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_COMM_TYPE_SHARED, __pyx_t_2) < (0)) __PYX_ERR(33, 28, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 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_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_COMM_TYPE_HW_GUIDED); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_COMM_TYPE_HW_GUIDED, __pyx_t_2) < (0)) __PYX_ERR(33, 29, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 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_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_COMM_TYPE_HW_UNGUIDED); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_COMM_TYPE_HW_UNGUIDED, __pyx_t_2) < (0)) __PYX_ERR(33, 30, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 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_2 = __Pyx_PyLong_From___pyx_anon_enum(MPI_COMM_TYPE_RESOURCE_GUIDED); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_COMM_TYPE_RESOURCE_GUIDED, __pyx_t_2) < (0)) __PYX_ERR(33, 31, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":52
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_str_tuple_Any) < (0)) __PYX_ERR(33, 52, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_9__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm___reduce, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[258])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_reduce, __pyx_t_3) < (0)) __PYX_ERR(33, 52, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":60
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Comm:
 *         """
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_handle, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 60, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Comm) < (0)) __PYX_ERR(33, 60, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_11fromhandle, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_fromhandle, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[259])); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_fromhandle, __pyx_t_2) < (0)) __PYX_ERR(33, 60, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_fromhandle); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_fromhandle, __pyx_t_3) < (0)) __PYX_ERR(33, 60, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "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_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 67, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_13free, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_free, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[260])); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_free, __pyx_t_2) < (0)) __PYX_ERR(33, 67, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":76
 *     # -----
 * 
 *     def Get_group(self) -> Group:             # <<<<<<<<<<<<<<
 *         """
 *         Access the group associated with a communicator.
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Group) < (0)) __PYX_ERR(33, 76, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_15Get_group, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Get_group, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[261])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Get_group, __pyx_t_3) < (0)) __PYX_ERR(33, 76, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":92
 *     # ----------------------
 * 
 *     def Get_size(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of processes in a communicator.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 92, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_17Get_size, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Get_size, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[262])); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Get_size, __pyx_t_2) < (0)) __PYX_ERR(33, 92, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "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_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 105, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_19Get_rank, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Get_rank, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[263])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Get_rank, __pyx_t_3) < (0)) __PYX_ERR(33, 105, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":118
 *             return self.Get_rank()
 * 
 *     def Compare(self, Comm comm: Comm) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Compare two communicators.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_comm, __pyx_mstate_global->__pyx_n_u_Comm) < (0)) __PYX_ERR(33, 118, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 118, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_21Compare, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Compare, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[264])); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Compare, __pyx_t_2) < (0)) __PYX_ERR(33, 118, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":130
 *     # -------------------------
 * 
 *     def Clone(self) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Clone an existing communicator.
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(33, 130, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_23Clone, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Clone, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[265])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Clone, __pyx_t_3) < (0)) __PYX_ERR(33, 130, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":139
 *         return comm
 * 
 *     def Dup(self, Info info: Info | None = None) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate a communicator.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_kp_u_Info_None) < (0)) __PYX_ERR(33, 139, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(33, 139, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_25Dup, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Dup, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[266])); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Dup, __pyx_t_2) < (0)) __PYX_ERR(33, 139, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "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_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 154, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(33, 154, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_27Dup_with_info, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Dup_with_info, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[267])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Dup_with_info, __pyx_t_3) < (0)) __PYX_ERR(33, 154, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "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_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_kp_u_Info_None) < (0)) __PYX_ERR(33, 164, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_tuple_Self_Request) < (0)) __PYX_ERR(33, 164, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_29Idup, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Idup, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[268])); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Idup, __pyx_t_2) < (0)) __PYX_ERR(33, 164, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "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_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 182, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_tuple_Self_Request) < (0)) __PYX_ERR(33, 182, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_31Idup_with_info, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Idup_with_info, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[269])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Idup_with_info, __pyx_t_3) < (0)) __PYX_ERR(33, 182, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":194
 *         return (comm, request)
 * 
 *     def Create(self, Group group: Group) -> Comm:             # <<<<<<<<<<<<<<
 *         """
 *         Create communicator from group.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_group, __pyx_mstate_global->__pyx_n_u_Group) < (0)) __PYX_ERR(33, 194, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Comm) < (0)) __PYX_ERR(33, 194, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_33Create, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Create, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[270])); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Create, __pyx_t_2) < (0)) __PYX_ERR(33, 194, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "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_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_color, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 207, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_key, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 207, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Comm) < (0)) __PYX_ERR(33, 207, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_35Split, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Split, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[271])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[21]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Split, __pyx_t_3) < (0)) __PYX_ERR(33, 207, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "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_3, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 224, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__21 = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":220
 *         return comm
 * 
 *     def Split_type(             # <<<<<<<<<<<<<<
 *         self,
 *         int split_type: int,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "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_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 224, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":220
 *         return comm
 * 
 *     def Split_type(             # <<<<<<<<<<<<<<
 *         self,
 *         int split_type: int,
*/
  __pyx_t_2 = PyTuple_Pack(2, __pyx_mstate_global->__pyx_int_0, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_split_type, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 220, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_key, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 220, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 220, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Comm) < (0)) __PYX_ERR(33, 220, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_37Split_type, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Split_type, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[272])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_t_2);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Split_type, __pyx_t_11) < (0)) __PYX_ERR(33, 220, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":241
 *     # -----------------------
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free a communicator.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 241, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_39Free, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Free, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[273])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Free, __pyx_t_3) < (0)) __PYX_ERR(33, 241, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":252
 *     # -----------------------
 * 
 *     def Revoke(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Revoke a communicator.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 252, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 252, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_41Revoke, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Revoke, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[274])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 252, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Revoke, __pyx_t_11) < (0)) __PYX_ERR(33, 252, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "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_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(33, 258, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_43Is_revoked, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Is_revoked, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[275])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Is_revoked, __pyx_t_3) < (0)) __PYX_ERR(33, 258, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":266
 *         return <bint>flag
 * 
 *     def Get_failed(self) -> Group:             # <<<<<<<<<<<<<<
 *         """
 *         Extract the group of failed processes.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Group) < (0)) __PYX_ERR(33, 266, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_45Get_failed, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Get_failed, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[276])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Get_failed, __pyx_t_11) < (0)) __PYX_ERR(33, 266, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "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_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_num_to_ack, __pyx_mstate_global->__pyx_kp_u_int_None) < (0)) __PYX_ERR(33, 274, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 274, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_47Ack_failed, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Ack_failed, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[277])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Ack_failed, __pyx_t_3) < (0)) __PYX_ERR(33, 274, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":288
 *         return num_acked
 * 
 *     def Agree(self, int flag: int) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Blocking agreement.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 288, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_flag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 288, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 288, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_49Agree, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Agree, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[278])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 288, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Agree, __pyx_t_11) < (0)) __PYX_ERR(33, 288, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":295
 *         return flag
 * 
 *     def Iagree(self, flag: Buffer) -> Request:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking agreement.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_flag, __pyx_mstate_global->__pyx_n_u_Buffer) < (0)) __PYX_ERR(33, 295, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 295, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_51Iagree, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Iagree, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[279])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Iagree, __pyx_t_3) < (0)) __PYX_ERR(33, 295, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":310
 *         return request
 * 
 *     def Shrink(self) -> Comm:             # <<<<<<<<<<<<<<
 *         """
 *         Shrink a communicator to remove all failed processes.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 310, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Comm) < (0)) __PYX_ERR(33, 310, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_53Shrink, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Shrink, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[280])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 310, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Shrink, __pyx_t_11) < (0)) __PYX_ERR(33, 310, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "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_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_tuple_Comm_Request) < (0)) __PYX_ERR(33, 322, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_55Ishrink, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Ishrink, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[281])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Ishrink, __pyx_t_3) < (0)) __PYX_ERR(33, 322, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "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_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 339, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 339, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 339, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_57Set_info, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Set_info, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[282])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 339, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Set_info, __pyx_t_11) < (0)) __PYX_ERR(33, 339, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "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_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 346, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_59Get_info, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Get_info, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[283])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Get_info, __pyx_t_3) < (0)) __PYX_ERR(33, 346, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "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_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 369, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_kp_u_Buffer_None) < (0)) __PYX_ERR(33, 369, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 369, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_61Attach_buffer, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Attach_buffer, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[284])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 369, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Attach_buffer, __pyx_t_11) < (0)) __PYX_ERR(33, 369, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "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_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 380, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_Buffer_None) < (0)) __PYX_ERR(33, 380, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_63Detach_buffer, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Detach_buffer, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[285])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 380, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Detach_buffer, __pyx_t_3) < (0)) __PYX_ERR(33, 380, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "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_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 390, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 390, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_65Flush_buffer, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Flush_buffer, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[286])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 390, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Flush_buffer, __pyx_t_11) < (0)) __PYX_ERR(33, 390, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "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_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 396, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 396, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_67Iflush_buffer, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Iflush_buffer, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[287])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 396, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Iflush_buffer, __pyx_t_3) < (0)) __PYX_ERR(33, 396, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":408
 *     # ------------------------------------
 * 
 *     def Send(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 408, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 408, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_dest, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 408, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 408, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 408, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_69Send, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Send, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[288])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 408, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Send, __pyx_t_11) < (0)) __PYX_ERR(33, 408, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "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_11, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_11); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 429, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_mstate_global->__pyx_k__22 = __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_11, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_11); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 430, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_mstate_global->__pyx_k__23 = __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_11, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_11); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 429, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "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_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 430, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":426
 *             dest, tag, self.ob_mpi) )
 * 
 *     def Recv(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_2 = PyTuple_Pack(3, __pyx_t_11, __pyx_t_3, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 426, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_source, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 426, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 426, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(33, 426, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 426, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_71Recv, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Recv, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[289])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_t_2);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Recv, __pyx_t_11) < (0)) __PYX_ERR(33, 426, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "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_11, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_11); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 453, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_mstate_global->__pyx_k__24 = __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_11, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 454, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_11); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 454, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_mstate_global->__pyx_k__25 = __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_11, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_11); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 453, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "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_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 454, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 454, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 454, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":447
 *     # ------------
 * 
 *     def Sendrecv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
*/
  __pyx_t_2 = PyTuple_Pack(5, __pyx_mstate_global->__pyx_int_0, Py_None, __pyx_t_11, __pyx_t_3, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 447, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(8); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 447, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 447, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_dest, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 447, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_sendtag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 447, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_None) < (0)) __PYX_ERR(33, 447, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_source, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 447, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_recvtag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 447, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(33, 447, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 447, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_73Sendrecv, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Sendrecv, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[290])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 447, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_t_2);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Sendrecv, __pyx_t_11) < (0)) __PYX_ERR(33, 447, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "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_11, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 480, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_11); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 480, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_mstate_global->__pyx_k__26 = __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_11, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 481, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_11); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 481, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_mstate_global->__pyx_k__27 = __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_11, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 480, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_11); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 480, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 480, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "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_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 481, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 481, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 481, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":475
 *             self.ob_mpi, statusp) )
 * 
 *     def Sendrecv_replace(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_2 = PyTuple_Pack(4, __pyx_mstate_global->__pyx_int_0, __pyx_t_11, __pyx_t_3, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 475, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 475, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 475, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_dest, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 475, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_sendtag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 475, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_source, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 475, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_recvtag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 475, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(33, 475, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 475, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_75Sendrecv_replace, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Sendrecv_replace, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[291])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 475, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_t_2);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Sendrecv_replace, __pyx_t_11) < (0)) __PYX_ERR(33, 475, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":507
 *     # --------------------------
 * 
 *     def Isend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 507, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 507, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_dest, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 507, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 507, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 507, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_77Isend, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Isend, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[292])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 507, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Isend, __pyx_t_3) < (0)) __PYX_ERR(33, 507, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "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_3, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 527, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_mstate_global->__pyx_k__28 = __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_3, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 528, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_mstate_global->__pyx_k__29 = __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_3, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 527, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":528
 *         buf: BufSpec,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_11); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 528, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "src/mpi4py/MPI.src/Comm.pyx":524
 *         return request
 * 
 *     def Irecv(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_2 = PyTuple_Pack(2, __pyx_t_3, __pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 524, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_source, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 524, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 524, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 524, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_79Irecv, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Irecv, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[293])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_2);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Irecv, __pyx_t_3) < (0)) __PYX_ERR(33, 524, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "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_3, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 547, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 547, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_mstate_global->__pyx_k__30 = __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_3, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 548, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_mstate_global->__pyx_k__31 = __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_3, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 547, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 547, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 547, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "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_11, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_11); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 548, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "src/mpi4py/MPI.src/Comm.pyx":541
 *         return request
 * 
 *     def Isendrecv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
*/
  __pyx_t_2 = PyTuple_Pack(4, __pyx_mstate_global->__pyx_int_0, Py_None, __pyx_t_3, __pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 541, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 541, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 541, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_dest, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 541, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_sendtag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 541, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_None) < (0)) __PYX_ERR(33, 541, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_source, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 541, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_recvtag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 541, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 541, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_81Isendrecv, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Isendrecv, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[294])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 541, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_2);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Isendrecv, __pyx_t_3) < (0)) __PYX_ERR(33, 541, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "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_3, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 568, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 568, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_mstate_global->__pyx_k__32 = __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_3, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 569, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 569, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_mstate_global->__pyx_k__33 = __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_3, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 568, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 568, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 568, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "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_11, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 569, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_11); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 569, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 569, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "src/mpi4py/MPI.src/Comm.pyx":563
 *         return request
 * 
 *     def Isendrecv_replace(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_2 = PyTuple_Pack(3, __pyx_mstate_global->__pyx_int_0, __pyx_t_3, __pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 563, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 563, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 563, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_dest, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 563, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_sendtag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 563, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_source, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 563, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_recvtag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 563, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 563, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_83Isendrecv_replace, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Isendrecv_replace, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[295])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 563, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_2);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Isendrecv_replace, __pyx_t_3) < (0)) __PYX_ERR(33, 563, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "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_3, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 598, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 598, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_mstate_global->__pyx_k__34 = __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_3, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 599, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 599, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_mstate_global->__pyx_k__35 = __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_3, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 598, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 598, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 598, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "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_11, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 599, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_11); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 599, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 599, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "src/mpi4py/MPI.src/Comm.pyx":596
 *     # -----
 * 
 *     def Probe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
*/
  __pyx_t_2 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_11, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 596, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 596, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_source, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 596, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 596, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(33, 596, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_Literal_True) < (0)) __PYX_ERR(33, 596, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_85Probe, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Probe, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[296])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 596, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_2);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Probe, __pyx_t_3) < (0)) __PYX_ERR(33, 596, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "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_3, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 614, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 614, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_mstate_global->__pyx_k__36 = __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_3, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 615, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 615, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_mstate_global->__pyx_k__37 = __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_3, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 614, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 614, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 614, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "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_11, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 615, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_11); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 615, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 615, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "src/mpi4py/MPI.src/Comm.pyx":612
 *         return True
 * 
 *     def Iprobe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
*/
  __pyx_t_2 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_11, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 612, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 612, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_source, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 612, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 612, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(33, 612, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(33, 612, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_87Iprobe, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Iprobe, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[297])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 612, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_2);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Iprobe, __pyx_t_3) < (0)) __PYX_ERR(33, 612, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "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_3, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 632, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 632, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_mstate_global->__pyx_k__38 = __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_3, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 633, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 633, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_mstate_global->__pyx_k__39 = __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_3, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 632, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 632, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 632, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "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_11, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 633, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_11); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 633, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 633, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "src/mpi4py/MPI.src/Comm.pyx":630
 *     # --------------
 * 
 *     def Mprobe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
*/
  __pyx_t_2 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_11, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 630, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 630, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_source, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 630, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 630, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(33, 630, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Message) < (0)) __PYX_ERR(33, 630, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_89Mprobe, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Mprobe, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[298])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 630, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_2);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Mprobe, __pyx_t_3) < (0)) __PYX_ERR(33, 630, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "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_3, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 649, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 649, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_mstate_global->__pyx_k__40 = __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_3, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 650, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_mstate_global->__pyx_k__41 = __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_3, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 649, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 649, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 649, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "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_11, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_11); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 650, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "src/mpi4py/MPI.src/Comm.pyx":647
 *         return message
 * 
 *     def Improbe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
*/
  __pyx_t_2 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_11, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 647, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 647, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_source, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 647, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 647, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(33, 647, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_Message_None) < (0)) __PYX_ERR(33, 647, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_91Improbe, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Improbe, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[299])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 647, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_2);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Improbe, __pyx_t_3) < (0)) __PYX_ERR(33, 647, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":669
 *     # ------------------------
 * 
 *     def Send_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 669, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 669, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_dest, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 669, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 669, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Prequest) < (0)) __PYX_ERR(33, 669, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_93Send_init, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Send_init, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[300])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 669, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Send_init, __pyx_t_11) < (0)) __PYX_ERR(33, 669, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "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_11, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 689, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_11); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 689, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_mstate_global->__pyx_k__42 = __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_11, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 690, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_11); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 690, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_mstate_global->__pyx_k__43 = __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_11, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 689, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_11); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 689, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 689, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "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_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 690, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 690, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 690, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":686
 *         return request
 * 
 *     def Recv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_2 = PyTuple_Pack(2, __pyx_t_11, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 686, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 686, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 686, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_source, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 686, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 686, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Prequest) < (0)) __PYX_ERR(33, 686, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_95Recv_init, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Recv_init, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[301])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 686, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_t_2);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Recv_init, __pyx_t_11) < (0)) __PYX_ERR(33, 686, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":712
 *         int dest: int,
 *         int tag: int = 0,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 712, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 712, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__44 = ((struct PyMPIInfoObject *)__pyx_t_11);
  __Pyx_GIVEREF((PyObject *)__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":706
 *     # -------------------------
 * 
 *     def Psend_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 712, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "src/mpi4py/MPI.src/Comm.pyx":712
 *         int dest: int,
 *         int tag: int = 0,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 712, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":706
 *     # -------------------------
 * 
 *     def Psend_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_3 = PyTuple_Pack(2, __pyx_mstate_global->__pyx_int_0, __pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 706, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 706, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 706, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_partitions, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 706, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_dest, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 706, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 706, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 706, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Prequest) < (0)) __PYX_ERR(33, 706, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_97Psend_init, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Psend_init, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[302])); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 706, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Psend_init, __pyx_t_2) < (0)) __PYX_ERR(33, 706, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 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_2, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 729, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 729, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_mstate_global->__pyx_k__46 = __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_2, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 730, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 730, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_mstate_global->__pyx_k__47 = __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_2, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 731, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 731, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__45 = ((struct PyMPIInfoObject *)__pyx_t_2);
  __Pyx_GIVEREF((PyObject *)__pyx_t_2);
  __pyx_t_2 = 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_2, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 729, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 729, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 729, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "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_11, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 730, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_11); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 730, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 730, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "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_3, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 731, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 731, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":725
 *         return request
 * 
 *     def Precv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_5 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_11, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 725, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 725, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 725, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_partitions, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 725, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_source, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 725, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 725, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 725, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Prequest) < (0)) __PYX_ERR(33, 725, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_99Precv_init, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Precv_init, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[303])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 725, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_t_5);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Precv_init, __pyx_t_11) < (0)) __PYX_ERR(33, 725, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":749
 *     # Blocking calls
 * 
 *     def Bsend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 749, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 749, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_dest, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 749, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 749, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 749, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_101Bsend, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Bsend, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[304])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 749, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Bsend, __pyx_t_3) < (0)) __PYX_ERR(33, 749, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":763
 *             dest, tag, self.ob_mpi) )
 * 
 *     def Ssend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 763, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 763, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_dest, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 763, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 763, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 763, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_103Ssend, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Ssend, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[305])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 763, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Ssend, __pyx_t_11) < (0)) __PYX_ERR(33, 763, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":777
 *             dest, tag, self.ob_mpi) )
 * 
 *     def Rsend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 777, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 777, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_dest, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 777, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 777, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 777, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_105Rsend, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Rsend, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[306])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 777, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Rsend, __pyx_t_3) < (0)) __PYX_ERR(33, 777, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":793
 *     # Nonblocking calls
 * 
 *     def Ibsend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 793, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 793, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_dest, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 793, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 793, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 793, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_107Ibsend, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Ibsend, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[307])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 793, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Ibsend, __pyx_t_11) < (0)) __PYX_ERR(33, 793, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":810
 *         return request
 * 
 *     def Issend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 810, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 810, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_dest, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 810, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 810, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 810, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_109Issend, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Issend, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[308])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 810, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Issend, __pyx_t_3) < (0)) __PYX_ERR(33, 810, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":827
 *         return request
 * 
 *     def Irsend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 827, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 827, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_dest, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 827, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 827, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 827, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_111Irsend, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Irsend, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[309])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 827, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Irsend, __pyx_t_11) < (0)) __PYX_ERR(33, 827, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":846
 *     # Persistent Requests
 * 
 *     def Bsend_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 846, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 846, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_dest, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 846, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 846, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 846, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_113Bsend_init, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Bsend_init, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[310])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 846, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Bsend_init, __pyx_t_3) < (0)) __PYX_ERR(33, 846, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":863
 *         return request
 * 
 *     def Ssend_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 863, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 863, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_dest, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 863, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 863, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 863, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_115Ssend_init, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Ssend_init, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[311])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 863, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Ssend_init, __pyx_t_11) < (0)) __PYX_ERR(33, 863, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":880
 *         return request
 * 
 *     def Rsend_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 880, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 880, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_dest, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 880, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 880, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 880, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_117Rsend_init, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Rsend_init, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[312])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 880, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Rsend_init, __pyx_t_3) < (0)) __PYX_ERR(33, 880, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":903
 *     # -----------------------
 * 
 *     def Barrier(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Barrier synchronization.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 903, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 903, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_119Barrier, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Barrier, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[313])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 903, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Barrier, __pyx_t_11) < (0)) __PYX_ERR(33, 903, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":912
 *     # ------------------------------
 * 
 *     def Bcast(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 912, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 912, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_root, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 912, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 912, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_121Bcast, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Bcast, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[314])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 912, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Bcast, __pyx_t_3) < (0)) __PYX_ERR(33, 912, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":926
 *             root, self.ob_mpi) )
 * 
 *     def Gather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 926, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_InPlace) < (0)) __PYX_ERR(33, 926, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_kp_u_BufSpecB_None) < (0)) __PYX_ERR(33, 926, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_root, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 926, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 926, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_123Gather, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Gather, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[315])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 926, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Gather, __pyx_t_11) < (0)) __PYX_ERR(33, 926, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":942
 *             root, self.ob_mpi) )
 * 
 *     def Gatherv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 942, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_InPlace) < (0)) __PYX_ERR(33, 942, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_kp_u_BufSpecV_None) < (0)) __PYX_ERR(33, 942, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_root, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 942, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 942, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_125Gatherv, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Gatherv, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[316])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 942, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Gatherv, __pyx_t_3) < (0)) __PYX_ERR(33, 942, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":961
 *             root, self.ob_mpi) )
 * 
 *     def Scatter(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | None,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 961, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpecB_None) < (0)) __PYX_ERR(33, 961, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_InPlace) < (0)) __PYX_ERR(33, 961, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_root, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 961, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 961, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_127Scatter, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Scatter, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[317])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 961, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Scatter, __pyx_t_11) < (0)) __PYX_ERR(33, 961, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":977
 *             root, self.ob_mpi) )
 * 
 *     def Scatterv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | None,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 977, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpecV_None) < (0)) __PYX_ERR(33, 977, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_InPlace) < (0)) __PYX_ERR(33, 977, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_root, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 977, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 977, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_129Scatterv, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Scatterv, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[318])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 977, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Scatterv, __pyx_t_3) < (0)) __PYX_ERR(33, 977, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":996
 *             root, self.ob_mpi) )
 * 
 *     def Allgather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 996, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_InPlace) < (0)) __PYX_ERR(33, 996, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpecB) < (0)) __PYX_ERR(33, 996, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 996, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_131Allgather, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Allgather, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[319])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 996, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Allgather, __pyx_t_11) < (0)) __PYX_ERR(33, 996, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1014
 *             self.ob_mpi) )
 * 
 *     def Allgatherv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1014, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_InPlace) < (0)) __PYX_ERR(33, 1014, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpecV) < (0)) __PYX_ERR(33, 1014, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 1014, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_133Allgatherv, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Allgatherv, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[320])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1014, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Allgatherv, __pyx_t_3) < (0)) __PYX_ERR(33, 1014, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1032
 *             self.ob_mpi) )
 * 
 *     def Alltoall(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1032, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpecB_InPlace) < (0)) __PYX_ERR(33, 1032, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpecB) < (0)) __PYX_ERR(33, 1032, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 1032, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_135Alltoall, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Alltoall, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[321])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1032, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Alltoall, __pyx_t_11) < (0)) __PYX_ERR(33, 1032, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1049
 *             self.ob_mpi) )
 * 
 *     def Alltoallv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | InPlace,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1049, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpecV_InPlace) < (0)) __PYX_ERR(33, 1049, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpecV) < (0)) __PYX_ERR(33, 1049, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 1049, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_137Alltoallv, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Alltoallv, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[322])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1049, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Alltoallv, __pyx_t_3) < (0)) __PYX_ERR(33, 1049, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1067
 *             self.ob_mpi) )
 * 
 *     def Alltoallw(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW | InPlace,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1067, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpecW_InPlace) < (0)) __PYX_ERR(33, 1067, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpecW) < (0)) __PYX_ERR(33, 1067, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 1067, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_139Alltoallw, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Alltoallw, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[323])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1067, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Alltoallw, __pyx_t_11) < (0)) __PYX_ERR(33, 1067, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "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_11, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1092, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 1092, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__48 = ((struct PyMPIOpObject *)__pyx_t_11);
  __Pyx_GIVEREF((PyObject *)__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1088
 *     # ---------------------------
 * 
 *     def Reduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1092, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "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_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 1092, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1088
 *     # ---------------------------
 * 
 *     def Reduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __pyx_t_3 = PyTuple_Pack(2, __pyx_t_11, __pyx_mstate_global->__pyx_int_0); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1088, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1088, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_InPlace) < (0)) __PYX_ERR(33, 1088, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_None) < (0)) __PYX_ERR(33, 1088, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_op, __pyx_mstate_global->__pyx_n_u_Op) < (0)) __PYX_ERR(33, 1088, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_root, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1088, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 1088, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_141Reduce, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Reduce, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[324])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1088, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Reduce, __pyx_t_5) < (0)) __PYX_ERR(33, 1088, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1108
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 1108, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__49 = ((struct PyMPIOpObject *)__pyx_t_5);
  __Pyx_GIVEREF((PyObject *)__pyx_t_5);
  __pyx_t_5 = 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_5, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "src/mpi4py/MPI.src/Comm.pyx":1108
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 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_11 = PyTuple_Pack(1, __pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_InPlace) < (0)) __PYX_ERR(33, 1104, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 1104, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_op, __pyx_mstate_global->__pyx_n_u_Op) < (0)) __PYX_ERR(33, 1104, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 1104, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_143Allreduce, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Allreduce, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[325])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_11);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Allreduce, __pyx_t_3) < (0)) __PYX_ERR(33, 1104, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1123
 *         sendbuf: BufSpecB | InPlace,
 *         recvbuf: BufSpec | BufSpecB,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 1123, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__50 = ((struct PyMPIOpObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 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_3, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":1123
 *         sendbuf: BufSpecB | InPlace,
 *         recvbuf: BufSpec | BufSpecB,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 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_5 = PyTuple_Pack(1, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpecB_InPlace) < (0)) __PYX_ERR(33, 1119, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_BufSpecB) < (0)) __PYX_ERR(33, 1119, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_op, __pyx_mstate_global->__pyx_n_u_Op) < (0)) __PYX_ERR(33, 1119, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 1119, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_145Reduce_scatter_block, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Reduce_scatter_block, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[326])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_t_5);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Reduce_scatter_block, __pyx_t_11) < (0)) __PYX_ERR(33, 1119, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1139
 *         recvbuf: BufSpec,
 *         recvcounts: Sequence[int] | None = None,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 1139, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__51 = ((struct PyMPIOpObject *)__pyx_t_11);
  __Pyx_GIVEREF((PyObject *)__pyx_t_11);
  __pyx_t_11 = 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_11, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "src/mpi4py/MPI.src/Comm.pyx":1139
 *         recvbuf: BufSpec,
 *         recvcounts: Sequence[int] | None = None,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 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_3 = PyTuple_Pack(2, Py_None, __pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_InPlace) < (0)) __PYX_ERR(33, 1134, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 1134, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_recvcounts, __pyx_mstate_global->__pyx_kp_u_Sequence_int_None) < (0)) __PYX_ERR(33, 1134, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_op, __pyx_mstate_global->__pyx_n_u_Op) < (0)) __PYX_ERR(33, 1134, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 1134, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_147Reduce_scatter, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Reduce_scatter, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[327])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Reduce_scatter, __pyx_t_5) < (0)) __PYX_ERR(33, 1134, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1154
 *     # -----------------------
 * 
 *     def Ibarrier(self) -> Request:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking Barrier.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 1154, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_149Ibarrier, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Ibarrier, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[328])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Ibarrier, __pyx_t_11) < (0)) __PYX_ERR(33, 1154, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1162
 *         return request
 * 
 *     def Ibcast(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 1162, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_root, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1162, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 1162, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_151Ibcast, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Ibcast, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[329])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Ibcast, __pyx_t_5) < (0)) __PYX_ERR(33, 1162, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1179
 *         return request
 * 
 *     def Igather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1179, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_InPlace) < (0)) __PYX_ERR(33, 1179, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_kp_u_BufSpecB_None) < (0)) __PYX_ERR(33, 1179, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_root, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1179, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 1179, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_153Igather, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Igather, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[330])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1179, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Igather, __pyx_t_11) < (0)) __PYX_ERR(33, 1179, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1198
 *         return request
 * 
 *     def Igatherv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_InPlace) < (0)) __PYX_ERR(33, 1198, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_kp_u_BufSpecV_None) < (0)) __PYX_ERR(33, 1198, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_root, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1198, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 1198, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_155Igatherv, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Igatherv, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[331])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Igatherv, __pyx_t_5) < (0)) __PYX_ERR(33, 1198, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1217
 *         return request
 * 
 *     def Iscatter(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | None,
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpecB_None) < (0)) __PYX_ERR(33, 1217, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_InPlace) < (0)) __PYX_ERR(33, 1217, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_root, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1217, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 1217, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_157Iscatter, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Iscatter, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[332])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Iscatter, __pyx_t_11) < (0)) __PYX_ERR(33, 1217, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1236
 *         return request
 * 
 *     def Iscatterv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | None,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1236, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpecV_None) < (0)) __PYX_ERR(33, 1236, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_InPlace) < (0)) __PYX_ERR(33, 1236, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_root, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1236, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 1236, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_159Iscatterv, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Iscatterv, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[333])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1236, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Iscatterv, __pyx_t_5) < (0)) __PYX_ERR(33, 1236, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1255
 *         return request
 * 
 *     def Iallgather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_InPlace) < (0)) __PYX_ERR(33, 1255, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpecB) < (0)) __PYX_ERR(33, 1255, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 1255, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_161Iallgather, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Iallgather, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[334])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Iallgather, __pyx_t_11) < (0)) __PYX_ERR(33, 1255, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1273
 *         return request
 * 
 *     def Iallgatherv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_InPlace) < (0)) __PYX_ERR(33, 1273, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpecV) < (0)) __PYX_ERR(33, 1273, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 1273, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_163Iallgatherv, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Iallgatherv, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[335])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Iallgatherv, __pyx_t_5) < (0)) __PYX_ERR(33, 1273, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1290
 *         return request
 * 
 *     def Ialltoall(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpecB_InPlace) < (0)) __PYX_ERR(33, 1290, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpecB) < (0)) __PYX_ERR(33, 1290, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 1290, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_165Ialltoall, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Ialltoall, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[336])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Ialltoall, __pyx_t_11) < (0)) __PYX_ERR(33, 1290, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1308
 *         return request
 * 
 *     def Ialltoallv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | InPlace,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1308, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpecV_InPlace) < (0)) __PYX_ERR(33, 1308, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpecV) < (0)) __PYX_ERR(33, 1308, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 1308, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_167Ialltoallv, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Ialltoallv, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[337])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1308, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Ialltoallv, __pyx_t_5) < (0)) __PYX_ERR(33, 1308, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1326
 *         return request
 * 
 *     def Ialltoallw(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW | InPlace,
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpecW_InPlace) < (0)) __PYX_ERR(33, 1326, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpecW) < (0)) __PYX_ERR(33, 1326, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 1326, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_169Ialltoallw, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Ialltoallw, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[338])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Ialltoallw, __pyx_t_11) < (0)) __PYX_ERR(33, 1326, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "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_11, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 1348, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__52 = ((struct PyMPIOpObject *)__pyx_t_11);
  __Pyx_GIVEREF((PyObject *)__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1344
 *         return request
 * 
 *     def Ireduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "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_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 1348, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1344
 *         return request
 * 
 *     def Ireduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __pyx_t_5 = PyTuple_Pack(2, __pyx_t_11, __pyx_mstate_global->__pyx_int_0); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1344, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1344, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_InPlace) < (0)) __PYX_ERR(33, 1344, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_None) < (0)) __PYX_ERR(33, 1344, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_op, __pyx_mstate_global->__pyx_n_u_Op) < (0)) __PYX_ERR(33, 1344, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_root, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1344, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 1344, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_171Ireduce, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Ireduce, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[339])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1344, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_5);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Ireduce, __pyx_t_3) < (0)) __PYX_ERR(33, 1344, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1366
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 1366, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__53 = ((struct PyMPIOpObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1362
 *         return request
 * 
 *     def Iallreduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":1366
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
*/
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 1366, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1362
 *         return request
 * 
 *     def Iallreduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __pyx_t_11 = PyTuple_Pack(1, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_InPlace) < (0)) __PYX_ERR(33, 1362, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 1362, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_op, __pyx_mstate_global->__pyx_n_u_Op) < (0)) __PYX_ERR(33, 1362, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 1362, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_173Iallreduce, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Iallreduce, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[340])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_t_11);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Iallreduce, __pyx_t_5) < (0)) __PYX_ERR(33, 1362, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1383
 *         sendbuf: BufSpecB | InPlace,
 *         recvbuf: BufSpec | BufSpecB,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1383, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 1383, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__54 = ((struct PyMPIOpObject *)__pyx_t_5);
  __Pyx_GIVEREF((PyObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1379
 *         return request
 * 
 *     def Ireduce_scatter_block(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1383, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "src/mpi4py/MPI.src/Comm.pyx":1383
 *         sendbuf: BufSpecB | InPlace,
 *         recvbuf: BufSpec | BufSpecB,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
*/
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 1383, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1379
 *         return request
 * 
 *     def Ireduce_scatter_block(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
*/
  __pyx_t_3 = PyTuple_Pack(1, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1379, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1379, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpecB_InPlace) < (0)) __PYX_ERR(33, 1379, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_BufSpecB) < (0)) __PYX_ERR(33, 1379, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_op, __pyx_mstate_global->__pyx_n_u_Op) < (0)) __PYX_ERR(33, 1379, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 1379, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_175Ireduce_scatter_block, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Ireduce_scatter_block, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[341])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1379, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Ireduce_scatter_block, __pyx_t_11) < (0)) __PYX_ERR(33, 1379, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1401
 *         recvbuf: BufSpec,
 *         recvcounts: Sequence[int] | None = None,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 1401, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__55 = ((struct PyMPIOpObject *)__pyx_t_11);
  __Pyx_GIVEREF((PyObject *)__pyx_t_11);
  __pyx_t_11 = 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_11, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "src/mpi4py/MPI.src/Comm.pyx":1401
 *         recvbuf: BufSpec,
 *         recvcounts: Sequence[int] | None = None,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
*/
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 1401, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1396
 *         return request
 * 
 *     def Ireduce_scatter(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __pyx_t_5 = PyTuple_Pack(2, Py_None, __pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1396, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1396, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_InPlace) < (0)) __PYX_ERR(33, 1396, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 1396, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_recvcounts, __pyx_mstate_global->__pyx_kp_u_Sequence_int_None) < (0)) __PYX_ERR(33, 1396, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_op, __pyx_mstate_global->__pyx_n_u_Op) < (0)) __PYX_ERR(33, 1396, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 1396, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_177Ireduce_scatter, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Ireduce_scatter, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[342])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1396, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_5);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Ireduce_scatter, __pyx_t_3) < (0)) __PYX_ERR(33, 1396, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1420
 *     def Barrier_init(
 *         self,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 1420, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__56 = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1418
 *     # ----------------------
 * 
 *     def Barrier_init(             # <<<<<<<<<<<<<<
 *         self,
 *         Info info: Info = INFO_NULL,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":1420
 *     def Barrier_init(
 *         self,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 1420, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1418
 *     # ----------------------
 * 
 *     def Barrier_init(             # <<<<<<<<<<<<<<
 *         self,
 *         Info info: Info = INFO_NULL,
*/
  __pyx_t_11 = PyTuple_Pack(1, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 1418, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Prequest) < (0)) __PYX_ERR(33, 1418, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_179Barrier_init, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Barrier_init, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[343])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_t_11);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Barrier_init, __pyx_t_5) < (0)) __PYX_ERR(33, 1418, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1435
 *         buf: BufSpec,
 *         int root: int = 0,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 1435, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__57 = ((struct PyMPIInfoObject *)__pyx_t_5);
  __Pyx_GIVEREF((PyObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1431
 *         return request
 * 
 *     def Bcast_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "src/mpi4py/MPI.src/Comm.pyx":1435
 *         buf: BufSpec,
 *         int root: int = 0,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 1435, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1431
 *         return request
 * 
 *     def Bcast_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_3 = PyTuple_Pack(2, __pyx_mstate_global->__pyx_int_0, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 1431, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_root, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1431, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 1431, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Prequest) < (0)) __PYX_ERR(33, 1431, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_181Bcast_init, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Bcast_init, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[344])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Bcast_init, __pyx_t_11) < (0)) __PYX_ERR(33, 1431, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1454
 *         recvbuf: BufSpecB | None,
 *         int root: int = 0,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1454, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 1454, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__58 = ((struct PyMPIInfoObject *)__pyx_t_11);
  __Pyx_GIVEREF((PyObject *)__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1449
 *         return request
 * 
 *     def Gather_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1454, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "src/mpi4py/MPI.src/Comm.pyx":1454
 *         recvbuf: BufSpecB | None,
 *         int root: int = 0,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 1454, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1449
 *         return request
 * 
 *     def Gather_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __pyx_t_5 = PyTuple_Pack(2, __pyx_mstate_global->__pyx_int_0, __pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1449, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1449, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_InPlace) < (0)) __PYX_ERR(33, 1449, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_kp_u_BufSpecB_None) < (0)) __PYX_ERR(33, 1449, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_root, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1449, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 1449, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Prequest) < (0)) __PYX_ERR(33, 1449, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_183Gather_init, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Gather_init, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[345])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1449, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_5);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Gather_init, __pyx_t_3) < (0)) __PYX_ERR(33, 1449, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1474
 *         recvbuf: BufSpecV | None,
 *         int root: int = 0,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 1474, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__59 = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1469
 *         return request
 * 
 *     def Gatherv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":1474
 *         recvbuf: BufSpecV | 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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 1474, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1469
 *         return request
 * 
 *     def Gatherv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __pyx_t_11 = PyTuple_Pack(2, __pyx_mstate_global->__pyx_int_0, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_InPlace) < (0)) __PYX_ERR(33, 1469, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_kp_u_BufSpecV_None) < (0)) __PYX_ERR(33, 1469, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_root, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1469, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 1469, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Prequest) < (0)) __PYX_ERR(33, 1469, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_185Gatherv_init, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Gatherv_init, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[346])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_t_11);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Gatherv_init, __pyx_t_5) < (0)) __PYX_ERR(33, 1469, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1494
 *         recvbuf: BufSpec | InPlace,
 *         int root: int = 0,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1494, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 1494, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__60 = ((struct PyMPIInfoObject *)__pyx_t_5);
  __Pyx_GIVEREF((PyObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1489
 *         return request
 * 
 *     def Scatter_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | None,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1494, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "src/mpi4py/MPI.src/Comm.pyx":1494
 *         recvbuf: BufSpec | InPlace,
 *         int root: int = 0,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 1494, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1489
 *         return request
 * 
 *     def Scatter_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | None,
*/
  __pyx_t_3 = PyTuple_Pack(2, __pyx_mstate_global->__pyx_int_0, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1489, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1489, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpecB_None) < (0)) __PYX_ERR(33, 1489, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_InPlace) < (0)) __PYX_ERR(33, 1489, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_root, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1489, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 1489, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Prequest) < (0)) __PYX_ERR(33, 1489, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_187Scatter_init, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Scatter_init, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[347])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1489, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Scatter_init, __pyx_t_11) < (0)) __PYX_ERR(33, 1489, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1514
 *         recvbuf: BufSpec | InPlace,
 *         int root: int = 0,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 1514, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__61 = ((struct PyMPIInfoObject *)__pyx_t_11);
  __Pyx_GIVEREF((PyObject *)__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1509
 *         return request
 * 
 *     def Scatterv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | None,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "src/mpi4py/MPI.src/Comm.pyx":1514
 *         recvbuf: BufSpec | InPlace,
 *         int root: int = 0,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 1514, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1509
 *         return request
 * 
 *     def Scatterv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | None,
*/
  __pyx_t_5 = PyTuple_Pack(2, __pyx_mstate_global->__pyx_int_0, __pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpecV_None) < (0)) __PYX_ERR(33, 1509, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_InPlace) < (0)) __PYX_ERR(33, 1509, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_root, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1509, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 1509, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Prequest) < (0)) __PYX_ERR(33, 1509, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_189Scatterv_init, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Scatterv_init, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[348])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_5);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Scatterv_init, __pyx_t_3) < (0)) __PYX_ERR(33, 1509, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1533
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpecB,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 1533, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__62 = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1529
 *         return request
 * 
 *     def Allgather_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":1533
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpecB,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 1533, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1529
 *         return request
 * 
 *     def Allgather_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __pyx_t_11 = PyTuple_Pack(1, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1529, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1529, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_InPlace) < (0)) __PYX_ERR(33, 1529, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpecB) < (0)) __PYX_ERR(33, 1529, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 1529, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Prequest) < (0)) __PYX_ERR(33, 1529, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_191Allgather_init, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Allgather_init, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[349])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1529, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_t_11);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Allgather_init, __pyx_t_5) < (0)) __PYX_ERR(33, 1529, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1552
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpecV,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1552, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 1552, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__63 = ((struct PyMPIInfoObject *)__pyx_t_5);
  __Pyx_GIVEREF((PyObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1548
 *         return request
 * 
 *     def Allgatherv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1552, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "src/mpi4py/MPI.src/Comm.pyx":1552
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpecV,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 1552, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1548
 *         return request
 * 
 *     def Allgatherv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __pyx_t_3 = PyTuple_Pack(1, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_InPlace) < (0)) __PYX_ERR(33, 1548, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpecV) < (0)) __PYX_ERR(33, 1548, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 1548, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Prequest) < (0)) __PYX_ERR(33, 1548, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_193Allgatherv_init, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Allgatherv_init, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[350])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Allgatherv_init, __pyx_t_11) < (0)) __PYX_ERR(33, 1548, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1570
 *         sendbuf: BufSpecB | InPlace,
 *         recvbuf: BufSpecB,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1570, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 1570, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__64 = ((struct PyMPIInfoObject *)__pyx_t_11);
  __Pyx_GIVEREF((PyObject *)__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1566
 *         return request
 * 
 *     def Alltoall_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1570, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "src/mpi4py/MPI.src/Comm.pyx":1570
 *         sendbuf: BufSpecB | InPlace,
 *         recvbuf: BufSpecB,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 1570, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1566
 *         return request
 * 
 *     def Alltoall_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
*/
  __pyx_t_5 = PyTuple_Pack(1, __pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1566, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1566, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpecB_InPlace) < (0)) __PYX_ERR(33, 1566, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpecB) < (0)) __PYX_ERR(33, 1566, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 1566, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Prequest) < (0)) __PYX_ERR(33, 1566, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_195Alltoall_init, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Alltoall_init, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[351])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1566, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_5);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Alltoall_init, __pyx_t_3) < (0)) __PYX_ERR(33, 1566, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1589
 *         sendbuf: BufSpecV | InPlace,
 *         recvbuf: BufSpecV,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1589, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 1589, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__65 = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1585
 *         return request
 * 
 *     def Alltoallv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | InPlace,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1589, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":1589
 *         sendbuf: BufSpecV | InPlace,
 *         recvbuf: BufSpecV,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 1589, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1585
 *         return request
 * 
 *     def Alltoallv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | InPlace,
*/
  __pyx_t_11 = PyTuple_Pack(1, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpecV_InPlace) < (0)) __PYX_ERR(33, 1585, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpecV) < (0)) __PYX_ERR(33, 1585, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 1585, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Prequest) < (0)) __PYX_ERR(33, 1585, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_197Alltoallv_init, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Alltoallv_init, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[352])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_t_11);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Alltoallv_init, __pyx_t_5) < (0)) __PYX_ERR(33, 1585, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1608
 *         sendbuf: BufSpecW | InPlace,
 *         recvbuf: BufSpecW,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1608, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 1608, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__66 = ((struct PyMPIInfoObject *)__pyx_t_5);
  __Pyx_GIVEREF((PyObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1604
 *         return request
 * 
 *     def Alltoallw_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW | InPlace,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1608, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "src/mpi4py/MPI.src/Comm.pyx":1608
 *         sendbuf: BufSpecW | InPlace,
 *         recvbuf: BufSpecW,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 1608, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1604
 *         return request
 * 
 *     def Alltoallw_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW | InPlace,
*/
  __pyx_t_3 = PyTuple_Pack(1, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpecW_InPlace) < (0)) __PYX_ERR(33, 1604, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpecW) < (0)) __PYX_ERR(33, 1604, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 1604, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Prequest) < (0)) __PYX_ERR(33, 1604, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_199Alltoallw_init, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Alltoallw_init, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[353])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Alltoallw_init, __pyx_t_11) < (0)) __PYX_ERR(33, 1604, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 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_11, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1627, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 1627, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__67 = ((struct PyMPIOpObject *)__pyx_t_11);
  __Pyx_GIVEREF((PyObject *)__pyx_t_11);
  __pyx_t_11 = 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_11, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 1629, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__68 = ((struct PyMPIInfoObject *)__pyx_t_11);
  __Pyx_GIVEREF((PyObject *)__pyx_t_11);
  __pyx_t_11 = 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_11, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1627, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 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_5, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 1629, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1623
 *         return request
 * 
 *     def Reduce_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __pyx_t_3 = PyTuple_Pack(3, __pyx_t_11, __pyx_mstate_global->__pyx_int_0, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1623, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1623, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_InPlace) < (0)) __PYX_ERR(33, 1623, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_None) < (0)) __PYX_ERR(33, 1623, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_op, __pyx_mstate_global->__pyx_n_u_Op) < (0)) __PYX_ERR(33, 1623, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_root, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1623, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 1623, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Prequest) < (0)) __PYX_ERR(33, 1623, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_201Reduce_init, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Reduce_init, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[354])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1623, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Reduce_init, __pyx_t_11) < (0)) __PYX_ERR(33, 1623, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 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_11, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1646, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 1646, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__69 = ((struct PyMPIOpObject *)__pyx_t_11);
  __Pyx_GIVEREF((PyObject *)__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1647
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1647, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 1647, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__70 = ((struct PyMPIInfoObject *)__pyx_t_11);
  __Pyx_GIVEREF((PyObject *)__pyx_t_11);
  __pyx_t_11 = 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_11, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1646, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 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_5, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1647, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 1647, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1642
 *         return request
 * 
 *     def Allreduce_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __pyx_t_3 = PyTuple_Pack(2, __pyx_t_11, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1642, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1642, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_InPlace) < (0)) __PYX_ERR(33, 1642, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 1642, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_op, __pyx_mstate_global->__pyx_n_u_Op) < (0)) __PYX_ERR(33, 1642, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 1642, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Prequest) < (0)) __PYX_ERR(33, 1642, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_203Allreduce_init, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Allreduce_init, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[355])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1642, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Allreduce_init, __pyx_t_11) < (0)) __PYX_ERR(33, 1642, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 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_11, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1664, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 1664, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__71 = ((struct PyMPIOpObject *)__pyx_t_11);
  __Pyx_GIVEREF((PyObject *)__pyx_t_11);
  __pyx_t_11 = 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_11, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1665, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 1665, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__72 = ((struct PyMPIInfoObject *)__pyx_t_11);
  __Pyx_GIVEREF((PyObject *)__pyx_t_11);
  __pyx_t_11 = 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_11, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1664, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 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_5, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1665, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 1665, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1660
 *         return request
 * 
 *     def Reduce_scatter_block_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
*/
  __pyx_t_3 = PyTuple_Pack(2, __pyx_t_11, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1660, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1660, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpecB_InPlace) < (0)) __PYX_ERR(33, 1660, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_BufSpecB) < (0)) __PYX_ERR(33, 1660, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_op, __pyx_mstate_global->__pyx_n_u_Op) < (0)) __PYX_ERR(33, 1660, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 1660, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Prequest) < (0)) __PYX_ERR(33, 1660, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_205Reduce_scatter_block_init, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Reduce_scatter_block_init, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[356])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1660, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Reduce_scatter_block_init, __pyx_t_11) < (0)) __PYX_ERR(33, 1660, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 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_11, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1683, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 1683, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__73 = ((struct PyMPIOpObject *)__pyx_t_11);
  __Pyx_GIVEREF((PyObject *)__pyx_t_11);
  __pyx_t_11 = 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_11, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1684, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 1684, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__74 = ((struct PyMPIInfoObject *)__pyx_t_11);
  __Pyx_GIVEREF((PyObject *)__pyx_t_11);
  __pyx_t_11 = 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_11, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1683, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 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_5, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1684, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 1684, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1678
 *         return request
 * 
 *     def Reduce_scatter_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __pyx_t_3 = PyTuple_Pack(3, Py_None, __pyx_t_11, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1678, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1678, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_InPlace) < (0)) __PYX_ERR(33, 1678, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 1678, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_recvcounts, __pyx_mstate_global->__pyx_kp_u_Sequence_int_None) < (0)) __PYX_ERR(33, 1678, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_op, __pyx_mstate_global->__pyx_n_u_Op) < (0)) __PYX_ERR(33, 1678, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 1678, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Prequest) < (0)) __PYX_ERR(33, 1678, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_207Reduce_scatter_init, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Reduce_scatter_init, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[357])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1678, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Reduce_scatter_init, __pyx_t_11) < (0)) __PYX_ERR(33, 1678, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1701
 *     # -----
 * 
 *     def Is_inter(self) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Return whether the communicator is an intercommunicator.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1701, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(33, 1701, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_209Is_inter, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Is_inter, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[358])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1701, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Is_inter, __pyx_t_5) < (0)) __PYX_ERR(33, 1701, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "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_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1714, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(33, 1714, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_211Is_intra, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Is_intra, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[359])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1714, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Is_intra, __pyx_t_11) < (0)) __PYX_ERR(33, 1714, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "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_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1725, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1725, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_213Get_topology, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Get_topology, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[360])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1725, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Get_topology, __pyx_t_5) < (0)) __PYX_ERR(33, 1725, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1746
 *     # -------------------------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Get_parent(cls) -> Intercomm:
 *         """
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1746, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Intercomm) < (0)) __PYX_ERR(33, 1746, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_215Get_parent, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Get_parent, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[361])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1746, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Get_parent, __pyx_t_11) < (0)) __PYX_ERR(33, 1746, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_GetNameInClass(__pyx_t_11, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Get_parent); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1746, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = __Pyx_Method_ClassMethod(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1746, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Get_parent, __pyx_t_5) < (0)) __PYX_ERR(33, 1746, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1756
 *         return comm
 * 
 *     def Disconnect(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Disconnect from a communicator.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1756, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 1756, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_217Disconnect, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Disconnect, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[362])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1756, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Disconnect, __pyx_t_11) < (0)) __PYX_ERR(33, 1756, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "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_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1762, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_fd, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1762, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Intercomm) < (0)) __PYX_ERR(33, 1762, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_219Join, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Join, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[363])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1762, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Join, __pyx_t_5) < (0)) __PYX_ERR(33, 1762, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_GetNameInClass(__pyx_t_5, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Join); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1762, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = __Pyx_Method_ClassMethod(__pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1762, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Join, __pyx_t_11) < (0)) __PYX_ERR(33, 1762, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1775
 *     # ----------
 * 
 *     def Get_attr(self, int keyval: int) -> int | Any | None:             # <<<<<<<<<<<<<<
 *         """
 *         Retrieve attribute value by key.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1775, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_keyval, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1775, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_int_Any_None) < (0)) __PYX_ERR(33, 1775, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_221Get_attr, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Get_attr, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[364])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1775, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Get_attr, __pyx_t_5) < (0)) __PYX_ERR(33, 1775, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "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_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1801, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_keyval, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1801, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_attrval, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(33, 1801, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 1801, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_223Set_attr, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Set_attr, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[365])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1801, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Set_attr, __pyx_t_11) < (0)) __PYX_ERR(33, 1801, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "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_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1807, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_keyval, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1807, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 1807, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_225Delete_attr, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Delete_attr, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[366])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1807, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Delete_attr, __pyx_t_5) < (0)) __PYX_ERR(33, 1807, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1813
 *         PyMPI_attr_del(self.ob_mpi, keyval)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_keyval(
 *         cls,
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1813, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_copy_fn, __pyx_mstate_global->__pyx_kp_u_Callable_Comm_int_Any_Any_None) < (0)) __PYX_ERR(33, 1813, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_delete_fn, __pyx_mstate_global->__pyx_kp_u_Callable_Comm_int_Any_None_None) < (0)) __PYX_ERR(33, 1813, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_nopython, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(33, 1813, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1813, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_227Create_keyval, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Create_keyval, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[367])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1813, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_mstate_global->__pyx_tuple[17]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Create_keyval, __pyx_t_11) < (0)) __PYX_ERR(33, 1813, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_GetNameInClass(__pyx_t_11, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Create_keyval); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1813, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = __Pyx_Method_ClassMethod(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1813, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Create_keyval, __pyx_t_5) < (0)) __PYX_ERR(33, 1813, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1831
 *         return keyval
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Free_keyval(cls, int keyval: int) -> int:
 *         """
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1831, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_keyval, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1831, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1831, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_229Free_keyval, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Free_keyval, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[368])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1831, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Free_keyval, __pyx_t_11) < (0)) __PYX_ERR(33, 1831, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_GetNameInClass(__pyx_t_11, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Free_keyval); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1831, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = __Pyx_Method_ClassMethod(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1831, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Free_keyval, __pyx_t_5) < (0)) __PYX_ERR(33, 1831, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1844
 *     # --------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_errhandler(
 *         cls,
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1844, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_errhandler_fn, __pyx_mstate_global->__pyx_kp_u_Callable_Comm_int_None) < (0)) __PYX_ERR(33, 1844, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Errhandler) < (0)) __PYX_ERR(33, 1844, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_231Create_errhandler, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Create_errhandler, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[369])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1844, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Create_errhandler, __pyx_t_11) < (0)) __PYX_ERR(33, 1844, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_GetNameInClass(__pyx_t_11, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Create_errhandler); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1844, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = __Pyx_Method_ClassMethod(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1844, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Create_errhandler, __pyx_t_5) < (0)) __PYX_ERR(33, 1844, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1862
 *         return errhandler
 * 
 *     def Get_errhandler(self) -> Errhandler:             # <<<<<<<<<<<<<<
 *         """
 *         Get the error handler for a communicator.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1862, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Errhandler) < (0)) __PYX_ERR(33, 1862, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_233Get_errhandler, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Get_errhandler, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[370])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1862, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Get_errhandler, __pyx_t_11) < (0)) __PYX_ERR(33, 1862, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "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_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1870, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_errhandler, __pyx_mstate_global->__pyx_n_u_Errhandler) < (0)) __PYX_ERR(33, 1870, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 1870, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_235Set_errhandler, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Set_errhandler, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[371])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1870, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Set_errhandler, __pyx_t_5) < (0)) __PYX_ERR(33, 1870, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "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_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1876, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_errorcode, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1876, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 1876, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_237Call_errhandler, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Call_errhandler, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[372])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1876, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Call_errhandler, __pyx_t_11) < (0)) __PYX_ERR(33, 1876, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "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_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1882, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_errorcode, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1882, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_NoReturn) < (0)) __PYX_ERR(33, 1882, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_239Abort, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Abort, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[373])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1882, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Abort, __pyx_t_5) < (0)) __PYX_ERR(33, 1882, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1896
 *     # --------------
 * 
 *     def Get_name(self) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Get the print name for this communicator.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1896, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(33, 1896, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_241Get_name, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Get_name, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[374])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1896, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Get_name, __pyx_t_11) < (0)) __PYX_ERR(33, 1896, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "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_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1905, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_name_2, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(33, 1905, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 1905, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_243Set_name, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_Set_name, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[375])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1905, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_Set_name, __pyx_t_5) < (0)) __PYX_ERR(33, 1905, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1924
 *     # --------------
 * 
 *     def toint(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate object to integer handle.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1924, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1924, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_245toint, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_toint, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[376])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1924, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_toint, __pyx_t_11) < (0)) __PYX_ERR(33, 1924, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1930
 *         return MPI_Comm_toint(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromint(cls, arg: int, /) -> Comm:
 *         """
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1930, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_arg, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1930, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Comm) < (0)) __PYX_ERR(33, 1930, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_247fromint, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_fromint, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[377])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1930, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_fromint, __pyx_t_5) < (0)) __PYX_ERR(33, 1930, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_GetNameInClass(__pyx_t_5, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_fromint); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1930, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = __Pyx_Method_ClassMethod(__pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1930, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_fromint, __pyx_t_11) < (0)) __PYX_ERR(33, 1930, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1940
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1940, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_249py2f, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_py2f, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[378])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_py2f, __pyx_t_5) < (0)) __PYX_ERR(33, 1940, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1945
 *         return MPI_Comm_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Comm:
 *         """
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1945, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_arg, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1945, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Comm) < (0)) __PYX_ERR(33, 1945, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_251f2py, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_f2py, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[379])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1945, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_f2py, __pyx_t_11) < (0)) __PYX_ERR(33, 1945, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_GetNameInClass(__pyx_t_11, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_f2py); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1945, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = __Pyx_Method_ClassMethod(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1945, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_f2py, __pyx_t_5) < (0)) __PYX_ERR(33, 1945, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1954
 *     # --------------------
 * 
 *     def send(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1954, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_obj, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(33, 1954, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_dest, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1954, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1954, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 1954, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_253send, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_send, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[380])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1954, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_send, __pyx_t_11) < (0)) __PYX_ERR(33, 1954, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1964
 *         return PyMPI_send(obj, dest, tag, comm)
 * 
 *     def bsend(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1964, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_obj, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(33, 1964, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_dest, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1964, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1964, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 1964, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_255bsend, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_bsend, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[381])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1964, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_bsend, __pyx_t_5) < (0)) __PYX_ERR(33, 1964, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1974
 *         return PyMPI_bsend(obj, dest, tag, comm)
 * 
 *     def ssend(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1974, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_obj, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(33, 1974, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_dest, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1974, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1974, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 1974, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_257ssend, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_ssend, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[382])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1974, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_ssend, __pyx_t_11) < (0)) __PYX_ERR(33, 1974, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1987
 *         self,
 *         buf: Buffer | None = None,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1987, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_11); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 1987, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_mstate_global->__pyx_k__75 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":1988
 *         buf: Buffer | None = None,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Any:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1988, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_11); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 1988, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_mstate_global->__pyx_k__76 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":1987
 *         self,
 *         buf: Buffer | None = None,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1987, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_11); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 1987, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1987, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "src/mpi4py/MPI.src/Comm.pyx":1988
 *         buf: Buffer | None = None,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Any:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1988, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 1988, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1988, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "src/mpi4py/MPI.src/Comm.pyx":1984
 *         return PyMPI_ssend(obj, dest, tag, comm)
 * 
 *     def recv(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: Buffer | None = None,
*/
  __pyx_t_3 = PyTuple_Pack(4, Py_None, __pyx_t_11, __pyx_t_5, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1984, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1984, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_kp_u_Buffer_None) < (0)) __PYX_ERR(33, 1984, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_source, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1984, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1984, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(33, 1984, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(33, 1984, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_259recv, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_recv, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[383])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1984, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_recv, __pyx_t_11) < (0)) __PYX_ERR(33, 1984, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2002
 *         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_11, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2002, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_11); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2002, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_mstate_global->__pyx_k__77 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":2003
 *         recvbuf: Buffer | None = None,
 *         int source: int = ANY_SOURCE,
 *         int recvtag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Any:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2003, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_11); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2003, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_mstate_global->__pyx_k__78 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":2002
 *         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_11, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2002, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_11); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2002, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2002, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "src/mpi4py/MPI.src/Comm.pyx":2003
 *         recvbuf: Buffer | None = None,
 *         int source: int = ANY_SOURCE,
 *         int recvtag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Any:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2003, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2003, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2003, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "src/mpi4py/MPI.src/Comm.pyx":1996
 *         return PyMPI_recv(buf, source, tag, comm, statusp)
 * 
 *     def sendrecv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
*/
  __pyx_t_3 = PyTuple_Pack(5, __pyx_mstate_global->__pyx_int_0, Py_None, __pyx_t_11, __pyx_t_5, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 1996, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyDict_NewPresized(8); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 1996, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_sendobj, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(33, 1996, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_dest, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1996, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_sendtag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1996, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_kp_u_Buffer_None) < (0)) __PYX_ERR(33, 1996, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_source, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1996, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_recvtag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 1996, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(33, 1996, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(33, 1996, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_261sendrecv, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_sendrecv, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[384])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 1996, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_sendrecv, __pyx_t_11) < (0)) __PYX_ERR(33, 1996, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2013
 *                               comm, statusp)
 * 
 *     def isend(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2013, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_obj, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(33, 2013, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_dest, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 2013, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 2013, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 2013, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_263isend, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_isend, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[385])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2013, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_isend, __pyx_t_5) < (0)) __PYX_ERR(33, 2013, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2025
 *         return request
 * 
 *     def ibsend(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2025, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_obj, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(33, 2025, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_dest, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 2025, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 2025, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 2025, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_265ibsend, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_ibsend, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[386])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2025, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_ibsend, __pyx_t_11) < (0)) __PYX_ERR(33, 2025, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2037
 *         return request
 * 
 *     def issend(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2037, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_obj, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(33, 2037, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_dest, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 2037, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 2037, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 2037, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_267issend, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_issend, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[387])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2037, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_issend, __pyx_t_5) < (0)) __PYX_ERR(33, 2037, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2052
 *         self,
 *         buf: Buffer | None = None,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *     ) -> Request:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2052, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2052, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_mstate_global->__pyx_k__79 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":2053
 *         buf: Buffer | None = None,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """Nonblocking receive."""
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2053, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2053, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_mstate_global->__pyx_k__80 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":2052
 *         self,
 *         buf: Buffer | None = None,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *     ) -> Request:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2052, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2052, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2052, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "src/mpi4py/MPI.src/Comm.pyx":2053
 *         buf: Buffer | None = None,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """Nonblocking receive."""
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2053, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_11); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2053, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2053, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "src/mpi4py/MPI.src/Comm.pyx":2049
 *         return request
 * 
 *     def irecv(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: Buffer | None = None,
*/
  __pyx_t_3 = PyTuple_Pack(3, Py_None, __pyx_t_5, __pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2049, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2049, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_kp_u_Buffer_None) < (0)) __PYX_ERR(33, 2049, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_source, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 2049, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 2049, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 2049, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_269irecv, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_irecv, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[388])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2049, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_irecv, __pyx_t_5) < (0)) __PYX_ERR(33, 2049, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2063
 *     def probe(
 *         self,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2063, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2063, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_mstate_global->__pyx_k__81 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":2064
 *         self,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Literal[True]:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2064, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2064, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_mstate_global->__pyx_k__82 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":2063
 *     def probe(
 *         self,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2063, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2063, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2063, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "src/mpi4py/MPI.src/Comm.pyx":2064
 *         self,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Literal[True]:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2064, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_11); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2064, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2064, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "src/mpi4py/MPI.src/Comm.pyx":2061
 *         return request
 * 
 *     def probe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
*/
  __pyx_t_3 = PyTuple_Pack(3, __pyx_t_5, __pyx_t_11, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2061, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2061, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_source, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 2061, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 2061, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(33, 2061, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_Literal_True) < (0)) __PYX_ERR(33, 2061, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_271probe, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_probe, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[389])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2061, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_probe, __pyx_t_5) < (0)) __PYX_ERR(33, 2061, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2074
 *     def iprobe(
 *         self,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2074, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2074, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_mstate_global->__pyx_k__83 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":2075
 *         self,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> bool:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2075, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2075, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_mstate_global->__pyx_k__84 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":2074
 *     def iprobe(
 *         self,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2074, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2074, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2074, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "src/mpi4py/MPI.src/Comm.pyx":2075
 *         self,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> bool:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2075, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_11); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2075, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2075, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "src/mpi4py/MPI.src/Comm.pyx":2072
 *         return PyMPI_probe(source, tag, comm, statusp)
 * 
 *     def iprobe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
*/
  __pyx_t_3 = PyTuple_Pack(3, __pyx_t_5, __pyx_t_11, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2072, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2072, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_source, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 2072, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 2072, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(33, 2072, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(33, 2072, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_273iprobe, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_iprobe, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[390])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2072, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_iprobe, __pyx_t_5) < (0)) __PYX_ERR(33, 2072, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2085
 *     def mprobe(
 *         self,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2085, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2085, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_mstate_global->__pyx_k__85 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":2086
 *         self,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Message:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2086, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2086, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_mstate_global->__pyx_k__86 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":2085
 *     def mprobe(
 *         self,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2085, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2085, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2085, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "src/mpi4py/MPI.src/Comm.pyx":2086
 *         self,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Message:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2086, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_11); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2086, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2086, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "src/mpi4py/MPI.src/Comm.pyx":2083
 *         return PyMPI_iprobe(source, tag, comm, statusp)
 * 
 *     def mprobe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
*/
  __pyx_t_3 = PyTuple_Pack(3, __pyx_t_5, __pyx_t_11, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2083, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2083, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_source, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 2083, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 2083, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(33, 2083, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Message) < (0)) __PYX_ERR(33, 2083, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_275mprobe, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_mprobe, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[391])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2083, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_mprobe, __pyx_t_5) < (0)) __PYX_ERR(33, 2083, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2099
 *     def improbe(
 *         self,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2099, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2099, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_mstate_global->__pyx_k__87 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":2100
 *         self,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Message | None:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2100, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_mstate_global->__pyx_k__88 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":2099
 *     def improbe(
 *         self,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ANY_SOURCE); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2099, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2099, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2099, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "src/mpi4py/MPI.src/Comm.pyx":2100
 *         self,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Message | None:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_ANY_TAG); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_11); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 2100, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "src/mpi4py/MPI.src/Comm.pyx":2097
 *         return message
 * 
 *     def improbe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
*/
  __pyx_t_3 = PyTuple_Pack(3, __pyx_t_5, __pyx_t_11, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2097, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2097, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_source, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 2097, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 2097, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(33, 2097, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_Message_None) < (0)) __PYX_ERR(33, 2097, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_277improbe, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_improbe, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[392])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2097, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_improbe, __pyx_t_5) < (0)) __PYX_ERR(33, 2097, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2113
 *         return message
 * 
 *     def barrier(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Barrier synchronization.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 2113, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_279barrier, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_barrier, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[393])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_barrier, __pyx_t_11) < (0)) __PYX_ERR(33, 2113, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2122
 *         return PyMPI_barrier(comm)
 * 
 *     def bcast(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_obj, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(33, 2122, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_root, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 2122, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(33, 2122, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_281bcast, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_bcast, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[394])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_bcast, __pyx_t_5) < (0)) __PYX_ERR(33, 2122, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2131
 *         return PyMPI_bcast(obj, root, comm)
 * 
 *     def gather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_sendobj, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(33, 2131, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_root, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 2131, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_list_Any_None) < (0)) __PYX_ERR(33, 2131, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_283gather, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_gather, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[395])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_gather, __pyx_t_11) < (0)) __PYX_ERR(33, 2131, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2140
 *         return PyMPI_gather(sendobj, root, comm)
 * 
 *     def scatter(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Sequence[Any] | None,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_sendobj, __pyx_mstate_global->__pyx_kp_u_Sequence_Any_None) < (0)) __PYX_ERR(33, 2140, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_root, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 2140, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(33, 2140, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_285scatter, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_scatter, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[396])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_scatter, __pyx_t_5) < (0)) __PYX_ERR(33, 2140, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2149
 *         return PyMPI_scatter(sendobj, root, comm)
 * 
 *     def allgather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_sendobj, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(33, 2149, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_list_Any) < (0)) __PYX_ERR(33, 2149, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_287allgather, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_allgather, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[397])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_allgather, __pyx_t_11) < (0)) __PYX_ERR(33, 2149, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2157
 *         return PyMPI_allgather(sendobj, comm)
 * 
 *     def alltoall(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Sequence[Any],
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_sendobj, __pyx_mstate_global->__pyx_kp_u_Sequence_Any) < (0)) __PYX_ERR(33, 2157, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_list_Any) < (0)) __PYX_ERR(33, 2157, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_289alltoall, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_alltoall, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[398])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_alltoall, __pyx_t_5) < (0)) __PYX_ERR(33, 2157, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2168
 *         self,
 *         sendobj: Any,
 *         op: Op | Callable[[Any, Any], Any] = SUM,             # <<<<<<<<<<<<<<
 *         int root: int = 0,
 *     ) -> Any | None:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_mstate_global->__pyx_k__89 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2165
 *         return PyMPI_alltoall(sendobj, comm)
 * 
 *     def reduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyTuple_Pack(2, __pyx_t_5, __pyx_mstate_global->__pyx_int_0); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_sendobj, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(33, 2165, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_op, __pyx_mstate_global->__pyx_kp_u_Op_Callable_Any_Any_Any) < (0)) __PYX_ERR(33, 2165, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_root, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 2165, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_Any_None) < (0)) __PYX_ERR(33, 2165, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_291reduce, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_reduce, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[399])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_11);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_reduce_2, __pyx_t_3) < (0)) __PYX_ERR(33, 2165, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2178
 *         self,
 *         sendobj: Any,
 *         op: Op | Callable[[Any, Any], Any] = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Any:
 *         """Reduce to All."""
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2178, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_mstate_global->__pyx_k__90 = __pyx_t_3;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2175
 *         return PyMPI_reduce(sendobj, op, root, comm)
 * 
 *     def allreduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2178, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = PyTuple_Pack(1, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_sendobj, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(33, 2175, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_op, __pyx_mstate_global->__pyx_kp_u_Op_Callable_Any_Any_Any) < (0)) __PYX_ERR(33, 2175, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(33, 2175, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_293allreduce, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Comm_allreduce, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[400])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_t_5);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_mstate_global->__pyx_n_u_allreduce, __pyx_t_11) < (0)) __PYX_ERR(33, 2175, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2201
 *     # -------------------------
 * 
 *     def Create_group(self, Group group: Group, int tag: int = 0) -> Intracomm:             # <<<<<<<<<<<<<<
 *         """
 *         Create communicator from group.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_group, __pyx_mstate_global->__pyx_n_u_Group) < (0)) __PYX_ERR(33, 2201, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 2201, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Intracomm) < (0)) __PYX_ERR(33, 2201, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_3Create_group, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Intracomm_Create_group, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[401])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_mstate_global->__pyx_n_u_Create_group, __pyx_t_3) < (0)) __PYX_ERR(33, 2201, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2216
 *         Group group: Group,
 *         stringtag: str = "org.mpi4py",
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         Errhandler errhandler: Errhandler | None = None,
 *     ) -> Intracomm:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 2216, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__91 = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2211
 *         return comm
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_from_group(
 *         cls,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":2216
 *         Group group: Group,
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 2216, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2211
 *         return comm
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_from_group(
 *         cls,
*/
  __pyx_t_11 = PyTuple_Pack(3, __pyx_mstate_global->__pyx_kp_u_org_mpi4py, __pyx_t_3, Py_None); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_group, __pyx_mstate_global->__pyx_n_u_Group) < (0)) __PYX_ERR(33, 2211, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_stringtag, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(33, 2211, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 2211, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_errhandler, __pyx_mstate_global->__pyx_kp_u_Errhandler_None) < (0)) __PYX_ERR(33, 2211, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Intracomm) < (0)) __PYX_ERR(33, 2211, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_5Create_from_group, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Intracomm_Create_from_group, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[402])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_t_11);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_mstate_global->__pyx_n_u_Create_from_group, __pyx_t_5) < (0)) __PYX_ERR(33, 2211, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_GetNameInClass(__pyx_t_5, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_mstate_global->__pyx_n_u_Create_from_group); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_mstate_global->__pyx_n_u_Create_from_group, __pyx_t_3) < (0)) __PYX_ERR(33, 2211, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2230
 *         return comm
 * 
 *     def Create_cart(             # <<<<<<<<<<<<<<
 *         self,
 *         dims: Sequence[int],
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_dims, __pyx_mstate_global->__pyx_kp_u_Sequence_int) < (0)) __PYX_ERR(33, 2230, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_periods, __pyx_mstate_global->__pyx_kp_u_Sequence_bool_None) < (0)) __PYX_ERR(33, 2230, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_reorder, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(33, 2230, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Cartcomm) < (0)) __PYX_ERR(33, 2230, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_7Create_cart, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Intracomm_Create_cart, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[403])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[23]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_mstate_global->__pyx_n_u_Create_cart, __pyx_t_5) < (0)) __PYX_ERR(33, 2230, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2251
 *         return comm
 * 
 *     def Create_graph(             # <<<<<<<<<<<<<<
 *         self,
 *         index: Sequence[int],
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_index, __pyx_mstate_global->__pyx_kp_u_Sequence_int) < (0)) __PYX_ERR(33, 2251, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_edges, __pyx_mstate_global->__pyx_kp_u_Sequence_int) < (0)) __PYX_ERR(33, 2251, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_reorder, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(33, 2251, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Graphcomm) < (0)) __PYX_ERR(33, 2251, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_9Create_graph, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Intracomm_Create_graph, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[404])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[14]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_mstate_global->__pyx_n_u_Create_graph, __pyx_t_3) < (0)) __PYX_ERR(33, 2251, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2281
 *         sourceweights: Sequence[int] | None = None,
 *         destweights: Sequence[int] | None = None,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         bint reorder: bool = False,
 *     ) -> Distgraphcomm:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 2281, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__92 = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2280
 *         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_3, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":2281
 *         sourceweights: Sequence[int] | None = None,
 *         destweights: Sequence[int] | None = None,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         bint reorder: bool = False,
 *     ) -> Distgraphcomm:
*/
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 2281, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2275
 *         return comm
 * 
 *     def Create_dist_graph_adjacent(             # <<<<<<<<<<<<<<
 *         self,
 *         sources: Sequence[int],
*/
  __pyx_t_5 = PyTuple_Pack(4, Py_None, Py_None, __pyx_t_3, Py_False); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_sources, __pyx_mstate_global->__pyx_kp_u_Sequence_int) < (0)) __PYX_ERR(33, 2275, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_destinations, __pyx_mstate_global->__pyx_kp_u_Sequence_int) < (0)) __PYX_ERR(33, 2275, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_sourceweights, __pyx_mstate_global->__pyx_kp_u_Sequence_int_None) < (0)) __PYX_ERR(33, 2275, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_destweights, __pyx_mstate_global->__pyx_kp_u_Sequence_int_None) < (0)) __PYX_ERR(33, 2275, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 2275, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_reorder, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(33, 2275, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Distgraphcomm) < (0)) __PYX_ERR(33, 2275, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_11Create_dist_graph_adjacent, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Intracomm_Create_dist_graph_adja, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[405])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_t_5);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_mstate_global->__pyx_n_u_Create_dist_graph_adjacent, __pyx_t_11) < (0)) __PYX_ERR(33, 2275, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2315
 *         destinations: Sequence[int],
 *         weights: Sequence[int] | None = None,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         bint reorder: bool = False,
 *     ) -> Distgraphcomm:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2315, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 2315, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__93 = ((struct PyMPIInfoObject *)__pyx_t_11);
  __Pyx_GIVEREF((PyObject *)__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2314
 *         degrees: Sequence[int],
 *         destinations: Sequence[int],
 *         weights: Sequence[int] | None = None,             # <<<<<<<<<<<<<<
 *         Info info: Info = INFO_NULL,
 *         bint reorder: bool = False,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2315, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "src/mpi4py/MPI.src/Comm.pyx":2315
 *         destinations: Sequence[int],
 *         weights: Sequence[int] | None = None,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         bint reorder: bool = False,
 *     ) -> Distgraphcomm:
*/
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 2315, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2309
 *         return comm
 * 
 *     def Create_dist_graph(             # <<<<<<<<<<<<<<
 *         self,
 *         sources: Sequence[int],
*/
  __pyx_t_3 = PyTuple_Pack(3, Py_None, __pyx_t_11, Py_False); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_sources, __pyx_mstate_global->__pyx_kp_u_Sequence_int) < (0)) __PYX_ERR(33, 2309, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_degrees, __pyx_mstate_global->__pyx_kp_u_Sequence_int) < (0)) __PYX_ERR(33, 2309, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_destinations, __pyx_mstate_global->__pyx_kp_u_Sequence_int) < (0)) __PYX_ERR(33, 2309, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_weights, __pyx_mstate_global->__pyx_kp_u_Sequence_int_None) < (0)) __PYX_ERR(33, 2309, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 2309, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_reorder, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(33, 2309, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Distgraphcomm) < (0)) __PYX_ERR(33, 2309, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_13Create_dist_graph, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Intracomm_Create_dist_graph, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[406])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_mstate_global->__pyx_n_u_Create_dist_graph, __pyx_t_5) < (0)) __PYX_ERR(33, 2309, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2338
 *         return comm
 * 
 *     def Create_intercomm(             # <<<<<<<<<<<<<<
 *         self,
 *         int local_leader: int,
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2338, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_local_leader, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 2338, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_peer_comm, __pyx_mstate_global->__pyx_n_u_Intracomm) < (0)) __PYX_ERR(33, 2338, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_remote_leader, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 2338, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 2338, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Intercomm) < (0)) __PYX_ERR(33, 2338, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_15Create_intercomm, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Intracomm_Create_intercomm, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[407])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2338, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_mstate_global->__pyx_n_u_Create_intercomm, __pyx_t_11) < (0)) __PYX_ERR(33, 2338, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2359
 *     # ----------------------------
 * 
 *     def Cart_map(             # <<<<<<<<<<<<<<
 *         self,
 *         dims: Sequence[int],
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2359, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_dims, __pyx_mstate_global->__pyx_kp_u_Sequence_int) < (0)) __PYX_ERR(33, 2359, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_periods, __pyx_mstate_global->__pyx_kp_u_Sequence_bool_None) < (0)) __PYX_ERR(33, 2359, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 2359, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_17Cart_map, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Intracomm_Cart_map, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[408])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2359, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_mstate_global->__pyx_n_u_Cart_map, __pyx_t_5) < (0)) __PYX_ERR(33, 2359, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2376
 *         return rank
 * 
 *     def Graph_map(             # <<<<<<<<<<<<<<
 *         self,
 *         index: Sequence[int],
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2376, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_index, __pyx_mstate_global->__pyx_kp_u_Sequence_int) < (0)) __PYX_ERR(33, 2376, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_edges, __pyx_mstate_global->__pyx_kp_u_Sequence_int) < (0)) __PYX_ERR(33, 2376, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 2376, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_19Graph_map, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Intracomm_Graph_map, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[409])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2376, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_mstate_global->__pyx_n_u_Graph_map, __pyx_t_11) < (0)) __PYX_ERR(33, 2376, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2405
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2405, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 2405, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__94 = ((struct PyMPIOpObject *)__pyx_t_11);
  __Pyx_GIVEREF((PyObject *)__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2401
 *     # Inclusive Scan
 * 
 *     def Scan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2405, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "src/mpi4py/MPI.src/Comm.pyx":2405
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 2405, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2401
 *     # Inclusive Scan
 * 
 *     def Scan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __pyx_t_5 = PyTuple_Pack(1, __pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_InPlace) < (0)) __PYX_ERR(33, 2401, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 2401, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_op, __pyx_mstate_global->__pyx_n_u_Op) < (0)) __PYX_ERR(33, 2401, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 2401, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_21Scan, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Intracomm_Scan, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[410])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_5);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_mstate_global->__pyx_n_u_Scan, __pyx_t_3) < (0)) __PYX_ERR(33, 2401, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2422
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2422, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 2422, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__95 = ((struct PyMPIOpObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2418
 *     # Exclusive Scan
 * 
 *     def Exscan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2422, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":2422
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 2422, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2418
 *     # Exclusive Scan
 * 
 *     def Exscan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __pyx_t_11 = PyTuple_Pack(1, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_InPlace) < (0)) __PYX_ERR(33, 2418, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 2418, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_op, __pyx_mstate_global->__pyx_n_u_Op) < (0)) __PYX_ERR(33, 2418, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 2418, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_23Exscan, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Intracomm_Exscan, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[411])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_t_11);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_mstate_global->__pyx_n_u_Exscan, __pyx_t_5) < (0)) __PYX_ERR(33, 2418, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2439
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2439, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 2439, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__96 = ((struct PyMPIOpObject *)__pyx_t_5);
  __Pyx_GIVEREF((PyObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2435
 *     # Nonblocking
 * 
 *     def Iscan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2439, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "src/mpi4py/MPI.src/Comm.pyx":2439
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
*/
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 2439, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2435
 *     # Nonblocking
 * 
 *     def Iscan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __pyx_t_3 = PyTuple_Pack(1, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_InPlace) < (0)) __PYX_ERR(33, 2435, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 2435, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_op, __pyx_mstate_global->__pyx_n_u_Op) < (0)) __PYX_ERR(33, 2435, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 2435, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_25Iscan, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Intracomm_Iscan, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[412])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_mstate_global->__pyx_n_u_Iscan, __pyx_t_11) < (0)) __PYX_ERR(33, 2435, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2456
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2456, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 2456, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__97 = ((struct PyMPIOpObject *)__pyx_t_11);
  __Pyx_GIVEREF((PyObject *)__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2452
 *         return request
 * 
 *     def Iexscan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2456, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "src/mpi4py/MPI.src/Comm.pyx":2456
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
*/
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 2456, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2452
 *         return request
 * 
 *     def Iexscan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __pyx_t_5 = PyTuple_Pack(1, __pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2452, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2452, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_InPlace) < (0)) __PYX_ERR(33, 2452, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 2452, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_op, __pyx_mstate_global->__pyx_n_u_Op) < (0)) __PYX_ERR(33, 2452, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 2452, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_27Iexscan, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Intracomm_Iexscan, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[413])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2452, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_5);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_mstate_global->__pyx_n_u_Iexscan, __pyx_t_3) < (0)) __PYX_ERR(33, 2452, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2475
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *         Info info: Info = INFO_NULL,
 *     ) -> Prequest:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2475, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 2475, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__98 = ((struct PyMPIOpObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2476
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2476, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 2476, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__99 = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2475
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *         Info info: Info = INFO_NULL,
 *     ) -> Prequest:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2475, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 2475, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2476
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2476, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 2476, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2471
 *     # Persistent
 * 
 *     def Scan_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __pyx_t_5 = PyTuple_Pack(2, __pyx_t_3, __pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2471, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2471, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_InPlace) < (0)) __PYX_ERR(33, 2471, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 2471, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_op, __pyx_mstate_global->__pyx_n_u_Op) < (0)) __PYX_ERR(33, 2471, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 2471, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Prequest) < (0)) __PYX_ERR(33, 2471, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_29Scan_init, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Intracomm_Scan_init, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[414])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2471, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_5);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_mstate_global->__pyx_n_u_Scan_init, __pyx_t_3) < (0)) __PYX_ERR(33, 2471, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2494
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *         Info info: Info = INFO_NULL,
 *     ) -> Prequest:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2494, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 2494, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__100 = ((struct PyMPIOpObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2495
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2495, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 2495, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__101 = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2494
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *         Info info: Info = INFO_NULL,
 *     ) -> Prequest:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2494, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(33, 2494, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2495
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2495, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 2495, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2490
 *         return request
 * 
 *     def Exscan_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
*/
  __pyx_t_5 = PyTuple_Pack(2, __pyx_t_3, __pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2490, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2490, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_kp_u_BufSpec_InPlace) < (0)) __PYX_ERR(33, 2490, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 2490, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_op, __pyx_mstate_global->__pyx_n_u_Op) < (0)) __PYX_ERR(33, 2490, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 2490, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Prequest) < (0)) __PYX_ERR(33, 2490, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_31Exscan_init, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Intracomm_Exscan_init, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[415])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2490, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_5);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_mstate_global->__pyx_n_u_Exscan_init, __pyx_t_3) < (0)) __PYX_ERR(33, 2490, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2514
 *         self,
 *         sendobj: Any,
 *         op: Op | Callable[[Any, Any], Any] = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Any:
 *         """Inclusive Scan."""
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_mstate_global->__pyx_k__102 = __pyx_t_3;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2511
 *     # Python Communication
 * 
 *     def scan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_11 = PyTuple_Pack(1, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_sendobj, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(33, 2511, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_op, __pyx_mstate_global->__pyx_kp_u_Op_Callable_Any_Any_Any) < (0)) __PYX_ERR(33, 2511, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(33, 2511, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_33scan, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Intracomm_scan, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[416])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_t_11);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_mstate_global->__pyx_n_u_scan, __pyx_t_5) < (0)) __PYX_ERR(33, 2511, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2523
 *         self,
 *         sendobj: Any,
 *         op: Op | Callable[[Any, Any], Any] = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Any:
 *         """Exclusive Scan."""
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_mstate_global->__pyx_k__103 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2520
 *         return PyMPI_scan(sendobj, op, comm)
 * 
 *     def exscan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = PyTuple_Pack(1, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_sendobj, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(33, 2520, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_op, __pyx_mstate_global->__pyx_kp_u_Op_Callable_Any_Any_Any) < (0)) __PYX_ERR(33, 2520, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(33, 2520, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_35exscan, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Intracomm_exscan, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[417])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_mstate_global->__pyx_n_u_exscan, __pyx_t_11) < (0)) __PYX_ERR(33, 2520, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2539
 *         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_11, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2539, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 2539, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__104 = ((struct PyMPIInfoObject *)__pyx_t_11);
  __Pyx_GIVEREF((PyObject *)__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2537
 *         self,
 *         command: PathLike[AnyStr] | str | bytes,
 *         args: Sequence[str] | None = None,             # <<<<<<<<<<<<<<
 *         int maxprocs: int = 1,
 *         Info info: Info = INFO_NULL,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2539, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "src/mpi4py/MPI.src/Comm.pyx":2539
 *         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_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 2539, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2534
 *     # Starting Processes
 * 
 *     def Spawn(             # <<<<<<<<<<<<<<
 *         self,
 *         command: PathLike[AnyStr] | str | bytes,
*/
  __pyx_t_5 = PyTuple_Pack(5, Py_None, __pyx_mstate_global->__pyx_int_1, __pyx_t_11, __pyx_mstate_global->__pyx_int_0, Py_None); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2534, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2534, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_command, __pyx_mstate_global->__pyx_kp_u_PathLike_AnyStr_str_bytes) < (0)) __PYX_ERR(33, 2534, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_args, __pyx_mstate_global->__pyx_kp_u_Sequence_str_None) < (0)) __PYX_ERR(33, 2534, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_maxprocs, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 2534, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 2534, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_root, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 2534, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_errcodes, __pyx_mstate_global->__pyx_kp_u_list_int_None) < (0)) __PYX_ERR(33, 2534, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Intercomm) < (0)) __PYX_ERR(33, 2534, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_37Spawn, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Intracomm_Spawn, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[418])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2534, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_5);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_mstate_global->__pyx_n_u_Spawn, __pyx_t_3) < (0)) __PYX_ERR(33, 2534, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2575
 *         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_3, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2575, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_mstate_global->__pyx_k__105 = __pyx_t_3;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2574
 *         command: Sequence[PathLike[AnyStr] | str | bytes],
 *         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_3, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2575, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":2570
 *         return comm
 * 
 *     def Spawn_multiple(             # <<<<<<<<<<<<<<
 *         self,
 *         command: Sequence[PathLike[AnyStr] | str | bytes],
*/
  __pyx_t_11 = PyTuple_Pack(5, Py_None, Py_None, __pyx_t_3, __pyx_mstate_global->__pyx_int_0, Py_None); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2570, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2570, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_command, __pyx_mstate_global->__pyx_kp_u_Sequence_PathLike_AnyStr_str_byt) < (0)) __PYX_ERR(33, 2570, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_args, __pyx_mstate_global->__pyx_kp_u_Sequence_Sequence_str_None) < (0)) __PYX_ERR(33, 2570, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_maxprocs, __pyx_mstate_global->__pyx_kp_u_Sequence_int_None) < (0)) __PYX_ERR(33, 2570, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_kp_u_Sequence_Info_Info) < (0)) __PYX_ERR(33, 2570, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_root, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 2570, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_errcodes, __pyx_mstate_global->__pyx_kp_u_list_list_int_None) < (0)) __PYX_ERR(33, 2570, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Intercomm) < (0)) __PYX_ERR(33, 2570, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_39Spawn_multiple, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Intracomm_Spawn_multiple, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[419])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2570, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_t_11);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_mstate_global->__pyx_n_u_Spawn_multiple, __pyx_t_5) < (0)) __PYX_ERR(33, 2570, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2627
 *         self,
 *         port_name: str,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         int root: int = 0,
 *     ) -> Intercomm:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2627, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 2627, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__106 = ((struct PyMPIInfoObject *)__pyx_t_5);
  __Pyx_GIVEREF((PyObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2624
 *     # Server Routines
 * 
 *     def Accept(             # <<<<<<<<<<<<<<
 *         self,
 *         port_name: str,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2627, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "src/mpi4py/MPI.src/Comm.pyx":2627
 *         self,
 *         port_name: str,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         int root: int = 0,
 *     ) -> Intercomm:
*/
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 2627, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2624
 *     # Server Routines
 * 
 *     def Accept(             # <<<<<<<<<<<<<<
 *         self,
 *         port_name: str,
*/
  __pyx_t_3 = PyTuple_Pack(2, __pyx_t_5, __pyx_mstate_global->__pyx_int_0); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2624, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2624, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_port_name, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(33, 2624, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 2624, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_root, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 2624, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Intercomm) < (0)) __PYX_ERR(33, 2624, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_41Accept, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Intracomm_Accept, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[420])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2624, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_mstate_global->__pyx_n_u_Accept, __pyx_t_11) < (0)) __PYX_ERR(33, 2624, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2650
 *         self,
 *         port_name: str,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         int root: int = 0,
 *     ) -> Intercomm:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 2650, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__107 = ((struct PyMPIInfoObject *)__pyx_t_11);
  __Pyx_GIVEREF((PyObject *)__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2647
 *     # Client Routines
 * 
 *     def Connect(             # <<<<<<<<<<<<<<
 *         self,
 *         port_name: str,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "src/mpi4py/MPI.src/Comm.pyx":2650
 *         self,
 *         port_name: str,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         int root: int = 0,
 *     ) -> Intercomm:
*/
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 2650, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2647
 *     # Client Routines
 * 
 *     def Connect(             # <<<<<<<<<<<<<<
 *         self,
 *         port_name: str,
*/
  __pyx_t_5 = PyTuple_Pack(2, __pyx_t_11, __pyx_mstate_global->__pyx_int_0); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2647, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2647, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_port_name, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(33, 2647, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 2647, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_root, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 2647, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Intercomm) < (0)) __PYX_ERR(33, 2647, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_43Connect, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Intracomm_Connect, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[421])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2647, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_5);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_mstate_global->__pyx_n_u_Connect, __pyx_t_3) < (0)) __PYX_ERR(33, 2647, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2743
 *     # ------------------------
 * 
 *     def Neighbor_allgather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2743, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 2743, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpecB) < (0)) __PYX_ERR(33, 2743, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 2743, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_3Neighbor_allgather, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Topocomm_Neighbor_allgather, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[422])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2743, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_mstate_global->__pyx_n_u_Neighbor_allgather, __pyx_t_11) < (0)) __PYX_ERR(33, 2743, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2758
 *             self.ob_mpi) )
 * 
 *     def Neighbor_allgatherv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2758, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 2758, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpecV) < (0)) __PYX_ERR(33, 2758, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 2758, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_5Neighbor_allgatherv, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Topocomm_Neighbor_allgatherv, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[423])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2758, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_mstate_global->__pyx_n_u_Neighbor_allgatherv, __pyx_t_3) < (0)) __PYX_ERR(33, 2758, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2773
 *             self.ob_mpi) )
 * 
 *     def Neighbor_alltoall(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2773, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_n_u_BufSpecB) < (0)) __PYX_ERR(33, 2773, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpecB) < (0)) __PYX_ERR(33, 2773, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 2773, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_7Neighbor_alltoall, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Topocomm_Neighbor_alltoall, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[424])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2773, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_mstate_global->__pyx_n_u_Neighbor_alltoall, __pyx_t_11) < (0)) __PYX_ERR(33, 2773, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2788
 *             self.ob_mpi) )
 * 
 *     def Neighbor_alltoallv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2788, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_n_u_BufSpecV) < (0)) __PYX_ERR(33, 2788, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpecV) < (0)) __PYX_ERR(33, 2788, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 2788, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_9Neighbor_alltoallv, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Topocomm_Neighbor_alltoallv, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[425])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2788, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_mstate_global->__pyx_n_u_Neighbor_alltoallv, __pyx_t_3) < (0)) __PYX_ERR(33, 2788, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2803
 *             self.ob_mpi) )
 * 
 *     def Neighbor_alltoallw(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2803, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_n_u_BufSpecW) < (0)) __PYX_ERR(33, 2803, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpecW) < (0)) __PYX_ERR(33, 2803, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 2803, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_11Neighbor_alltoallw, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Topocomm_Neighbor_alltoallw, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[426])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2803, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_mstate_global->__pyx_n_u_Neighbor_alltoallw, __pyx_t_11) < (0)) __PYX_ERR(33, 2803, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2821
 *     # ------------------------------------
 * 
 *     def Ineighbor_allgather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2821, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 2821, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpecB) < (0)) __PYX_ERR(33, 2821, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 2821, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_13Ineighbor_allgather, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Topocomm_Ineighbor_allgather, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[427])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2821, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_mstate_global->__pyx_n_u_Ineighbor_allgather, __pyx_t_3) < (0)) __PYX_ERR(33, 2821, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2839
 *         return request
 * 
 *     def Ineighbor_allgatherv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2839, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 2839, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpecV) < (0)) __PYX_ERR(33, 2839, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 2839, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_15Ineighbor_allgatherv, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Topocomm_Ineighbor_allgatherv, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[428])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2839, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_mstate_global->__pyx_n_u_Ineighbor_allgatherv, __pyx_t_11) < (0)) __PYX_ERR(33, 2839, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2857
 *         return request
 * 
 *     def Ineighbor_alltoall(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2857, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_n_u_BufSpecB) < (0)) __PYX_ERR(33, 2857, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpecB) < (0)) __PYX_ERR(33, 2857, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 2857, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_17Ineighbor_alltoall, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Topocomm_Ineighbor_alltoall, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[429])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2857, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_mstate_global->__pyx_n_u_Ineighbor_alltoall, __pyx_t_3) < (0)) __PYX_ERR(33, 2857, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2875
 *         return request
 * 
 *     def Ineighbor_alltoallv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2875, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_n_u_BufSpecV) < (0)) __PYX_ERR(33, 2875, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpecV) < (0)) __PYX_ERR(33, 2875, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 2875, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_19Ineighbor_alltoallv, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Topocomm_Ineighbor_alltoallv, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[430])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2875, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_mstate_global->__pyx_n_u_Ineighbor_alltoallv, __pyx_t_11) < (0)) __PYX_ERR(33, 2875, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2893
 *         return request
 * 
 *     def Ineighbor_alltoallw(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_n_u_BufSpecW) < (0)) __PYX_ERR(33, 2893, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpecW) < (0)) __PYX_ERR(33, 2893, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 2893, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_21Ineighbor_alltoallw, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Topocomm_Ineighbor_alltoallw, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[431])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_mstate_global->__pyx_n_u_Ineighbor_alltoallw, __pyx_t_3) < (0)) __PYX_ERR(33, 2893, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2918
 *         sendbuf: BufSpec,
 *         recvbuf: BufSpecB,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2918, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 2918, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__108 = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2914
 *     # -----------------------------------
 * 
 *     def Neighbor_allgather_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2918, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":2918
 *         sendbuf: BufSpec,
 *         recvbuf: BufSpecB,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 2918, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2914
 *     # -----------------------------------
 * 
 *     def Neighbor_allgather_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
*/
  __pyx_t_11 = PyTuple_Pack(1, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2914, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2914, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 2914, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpecB) < (0)) __PYX_ERR(33, 2914, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 2914, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Prequest) < (0)) __PYX_ERR(33, 2914, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_23Neighbor_allgather_init, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Topocomm_Neighbor_allgather_init, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[432])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2914, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_t_11);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_mstate_global->__pyx_n_u_Neighbor_allgather_init, __pyx_t_5) < (0)) __PYX_ERR(33, 2914, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2937
 *         sendbuf: BufSpec,
 *         recvbuf: BufSpecV,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2937, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 2937, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__109 = ((struct PyMPIInfoObject *)__pyx_t_5);
  __Pyx_GIVEREF((PyObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2933
 *         return request
 * 
 *     def Neighbor_allgatherv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2937, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "src/mpi4py/MPI.src/Comm.pyx":2937
 *         sendbuf: BufSpec,
 *         recvbuf: BufSpecV,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 2937, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2933
 *         return request
 * 
 *     def Neighbor_allgatherv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
*/
  __pyx_t_3 = PyTuple_Pack(1, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2933, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2933, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(33, 2933, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpecV) < (0)) __PYX_ERR(33, 2933, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 2933, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Prequest) < (0)) __PYX_ERR(33, 2933, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_25Neighbor_allgatherv_init, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Topocomm_Neighbor_allgatherv_ini, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[433])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2933, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_mstate_global->__pyx_n_u_Neighbor_allgatherv_init, __pyx_t_11) < (0)) __PYX_ERR(33, 2933, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2956
 *         sendbuf: BufSpecB,
 *         recvbuf: BufSpecB,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2956, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 2956, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__110 = ((struct PyMPIInfoObject *)__pyx_t_11);
  __Pyx_GIVEREF((PyObject *)__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2952
 *         return request
 * 
 *     def Neighbor_alltoall_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2956, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "src/mpi4py/MPI.src/Comm.pyx":2956
 *         sendbuf: BufSpecB,
 *         recvbuf: BufSpecB,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 2956, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2952
 *         return request
 * 
 *     def Neighbor_alltoall_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB,
*/
  __pyx_t_5 = PyTuple_Pack(1, __pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2952, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2952, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_n_u_BufSpecB) < (0)) __PYX_ERR(33, 2952, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpecB) < (0)) __PYX_ERR(33, 2952, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 2952, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Prequest) < (0)) __PYX_ERR(33, 2952, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_27Neighbor_alltoall_init, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Topocomm_Neighbor_alltoall_init, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[434])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2952, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_5);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_mstate_global->__pyx_n_u_Neighbor_alltoall_init, __pyx_t_3) < (0)) __PYX_ERR(33, 2952, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2975
 *         sendbuf: BufSpecV,
 *         recvbuf: BufSpecV,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2975, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 2975, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__111 = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2971
 *         return request
 * 
 *     def Neighbor_alltoallv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2975, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":2975
 *         sendbuf: BufSpecV,
 *         recvbuf: BufSpecV,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 2975, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2971
 *         return request
 * 
 *     def Neighbor_alltoallv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV,
*/
  __pyx_t_11 = PyTuple_Pack(1, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2971, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2971, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_n_u_BufSpecV) < (0)) __PYX_ERR(33, 2971, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpecV) < (0)) __PYX_ERR(33, 2971, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 2971, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Prequest) < (0)) __PYX_ERR(33, 2971, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_29Neighbor_alltoallv_init, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Topocomm_Neighbor_alltoallv_init, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[435])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2971, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_t_11);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_mstate_global->__pyx_n_u_Neighbor_alltoallv_init, __pyx_t_5) < (0)) __PYX_ERR(33, 2971, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2994
 *         sendbuf: BufSpecW,
 *         recvbuf: BufSpecW,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2994, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 2994, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__112 = ((struct PyMPIInfoObject *)__pyx_t_5);
  __Pyx_GIVEREF((PyObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2990
 *         return request
 * 
 *     def Neighbor_alltoallw_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2994, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "src/mpi4py/MPI.src/Comm.pyx":2994
 *         sendbuf: BufSpecW,
 *         recvbuf: BufSpecW,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
*/
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 2994, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2990
 *         return request
 * 
 *     def Neighbor_alltoallw_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW,
*/
  __pyx_t_3 = PyTuple_Pack(1, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 2990, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 2990, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_sendbuf, __pyx_mstate_global->__pyx_n_u_BufSpecW) < (0)) __PYX_ERR(33, 2990, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_recvbuf, __pyx_mstate_global->__pyx_n_u_BufSpecW) < (0)) __PYX_ERR(33, 2990, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 2990, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Prequest) < (0)) __PYX_ERR(33, 2990, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_31Neighbor_alltoallw_init, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Topocomm_Neighbor_alltoallw_init, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[436])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 2990, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_mstate_global->__pyx_n_u_Neighbor_alltoallw_init, __pyx_t_11) < (0)) __PYX_ERR(33, 2990, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3011
 *     # Python Communication
 * 
 *     def neighbor_allgather(self, sendobj: Any) -> list[Any]:             # <<<<<<<<<<<<<<
 *         """Neighbor Gather to All."""
 *         cdef MPI_Comm comm = self.ob_mpi
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 3011, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_sendobj, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(33, 3011, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_list_Any) < (0)) __PYX_ERR(33, 3011, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_33neighbor_allgather, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Topocomm_neighbor_allgather, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[437])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3011, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_mstate_global->__pyx_n_u_neighbor_allgather, __pyx_t_5) < (0)) __PYX_ERR(33, 3011, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3016
 *         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_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3016, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_sendobj, __pyx_mstate_global->__pyx_kp_u_list_Any) < (0)) __PYX_ERR(33, 3016, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_list_Any) < (0)) __PYX_ERR(33, 3016, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_35neighbor_alltoall, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Topocomm_neighbor_alltoall, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[438])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 3016, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_mstate_global->__pyx_n_u_neighbor_alltoall, __pyx_t_11) < (0)) __PYX_ERR(33, 3016, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3038
 *     # ---------------------------
 * 
 *     def Get_dim(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return number of dimensions.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 3038, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 3038, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Cartcomm_3Get_dim, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Cartcomm_Get_dim, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[439])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3038, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Cartcomm, __pyx_mstate_global->__pyx_n_u_Get_dim, __pyx_t_5) < (0)) __PYX_ERR(33, 3038, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3056
 *             return self.Get_dim()
 * 
 *     def Get_topo(self) -> tuple[list[int], list[int], list[int]]:             # <<<<<<<<<<<<<<
 *         """
 *         Return information on the cartesian topology.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3056, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_tuple_list_int_list_int_list_int_2) < (0)) __PYX_ERR(33, 3056, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Cartcomm_5Get_topo, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Cartcomm_Get_topo, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[440])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 3056, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Cartcomm, __pyx_mstate_global->__pyx_n_u_Get_topo, __pyx_t_11) < (0)) __PYX_ERR(33, 3056, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3097
 *     # ------------------------------
 * 
 *     def Get_cart_rank(self, coords: Sequence[int]) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate logical coordinates to ranks.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 3097, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_coords, __pyx_mstate_global->__pyx_kp_u_Sequence_int) < (0)) __PYX_ERR(33, 3097, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 3097, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Cartcomm_7Get_cart_rank, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Cartcomm_Get_cart_rank, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[441])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3097, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Cartcomm, __pyx_mstate_global->__pyx_n_u_Get_cart_rank, __pyx_t_5) < (0)) __PYX_ERR(33, 3097, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3108
 *         return rank
 * 
 *     def Get_coords(self, int rank: int) -> list[int]:             # <<<<<<<<<<<<<<
 *         """
 *         Translate ranks to logical coordinates.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_rank, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 3108, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_list_int) < (0)) __PYX_ERR(33, 3108, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Cartcomm_9Get_coords, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Cartcomm_Get_coords, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[442])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 3108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Cartcomm, __pyx_mstate_global->__pyx_n_u_Get_coords, __pyx_t_11) < (0)) __PYX_ERR(33, 3108, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3122
 *     # ------------------------
 * 
 *     def Shift(self, int direction: int, int disp: int) -> tuple[int, int]:             # <<<<<<<<<<<<<<
 *         """
 *         Return a process ranks for data shifting with `Sendrecv`.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 3122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_direction, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 3122, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_disp, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 3122, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_tuple_int_int) < (0)) __PYX_ERR(33, 3122, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Cartcomm_11Shift, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Cartcomm_Shift, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[443])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Cartcomm, __pyx_mstate_global->__pyx_n_u_Shift, __pyx_t_5) < (0)) __PYX_ERR(33, 3122, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3133
 *     # ----------------------------
 * 
 *     def Sub(self, remain_dims: Sequence[bool]) -> Cartcomm:             # <<<<<<<<<<<<<<
 *         """
 *         Return a lower-dimensional Cartesian topology.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_remain_dims, __pyx_mstate_global->__pyx_kp_u_Sequence_bool) < (0)) __PYX_ERR(33, 3133, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Cartcomm) < (0)) __PYX_ERR(33, 3133, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Cartcomm_13Sub, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Cartcomm_Sub, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[444])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 3133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Cartcomm, __pyx_mstate_global->__pyx_n_u_Sub, __pyx_t_11) < (0)) __PYX_ERR(33, 3133, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3148
 * # 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_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 3148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_nnodes, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 3148, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_dims, __pyx_mstate_global->__pyx_kp_u_int_Sequence_int) < (0)) __PYX_ERR(33, 3148, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_list_int) < (0)) __PYX_ERR(33, 3148, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_33Compute_dims, 0, __pyx_mstate_global->__pyx_n_u_Compute_dims, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[445])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Compute_dims, __pyx_t_5) < (0)) __PYX_ERR(33, 3148, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3180
 *     # -----------------------
 * 
 *     def Get_dims(self) -> tuple[int, int]:             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of nodes and edges.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_tuple_int_int) < (0)) __PYX_ERR(33, 3180, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Graphcomm_3Get_dims, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Graphcomm_Get_dims, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[446])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 3180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Graphcomm, __pyx_mstate_global->__pyx_n_u_Get_dims, __pyx_t_11) < (0)) __PYX_ERR(33, 3180, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3203
 *             return self.Get_dims()[1]
 * 
 *     def Get_topo(self) -> tuple[list[int], list[int]]:             # <<<<<<<<<<<<<<
 *         """
 *         Return index and edges.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 3203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_tuple_list_int_list_int) < (0)) __PYX_ERR(33, 3203, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Graphcomm_5Get_topo, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Graphcomm_Get_topo, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[447])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Graphcomm, __pyx_mstate_global->__pyx_n_u_Get_topo, __pyx_t_5) < (0)) __PYX_ERR(33, 3203, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3236
 *     # ---------------------------
 * 
 *     def Get_neighbors_count(self, int rank: int) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return number of neighbors of a process.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3236, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_rank, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 3236, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 3236, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Graphcomm_7Get_neighbors_count, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Graphcomm_Get_neighbors_count, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[448])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 3236, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Graphcomm, __pyx_mstate_global->__pyx_n_u_Get_neighbors_count, __pyx_t_11) < (0)) __PYX_ERR(33, 3236, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3250
 *             return self.Get_neighbors_count(rank)
 * 
 *     def Get_neighbors(self, int rank: int) -> list[int]:             # <<<<<<<<<<<<<<
 *         """
 *         Return list of neighbors of a process.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 3250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_rank, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 3250, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_list_int) < (0)) __PYX_ERR(33, 3250, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Graphcomm_9Get_neighbors, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Graphcomm_Get_neighbors, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[449])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Graphcomm, __pyx_mstate_global->__pyx_n_u_Get_neighbors, __pyx_t_5) < (0)) __PYX_ERR(33, 3250, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3286
 *     # --------------------------
 * 
 *     def Get_dist_neighbors_count(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return adjacency information for a distributed graph topology.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 3286, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_13Distgraphcomm_3Get_dist_neighbors_count, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Distgraphcomm_Get_dist_neighbors, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[450])); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 3286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Distgraphcomm, __pyx_mstate_global->__pyx_n_u_Get_dist_neighbors_count, __pyx_t_11) < (0)) __PYX_ERR(33, 3286, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3297
 *         return (indegree, outdegree, <bint>weighted)
 * 
 *     def Get_dist_neighbors(self) -> \             # <<<<<<<<<<<<<<
 *             tuple[list[int], list[int], tuple[list[int], list[int]] | None]:
 *         """
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 3297, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_tuple_list_int_list_int_tuple_li) < (0)) __PYX_ERR(33, 3297, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_13Distgraphcomm_5Get_dist_neighbors, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Distgraphcomm_Get_dist_neighbors_2, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[451])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3297, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Distgraphcomm, __pyx_mstate_global->__pyx_n_u_Get_dist_neighbors, __pyx_t_5) < (0)) __PYX_ERR(33, 3297, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3358
 *         int remote_leader: int,
 *         stringtag: str = "org.mpi4py",
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         Errhandler errhandler: Errhandler | None = None,
 *     ) -> Intracomm:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3358, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 3358, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__113 = ((struct PyMPIInfoObject *)__pyx_t_5);
  __Pyx_GIVEREF((PyObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3350
 *     # ------------------------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_from_groups(
 *         cls,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3358, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "src/mpi4py/MPI.src/Comm.pyx":3358
 *         int remote_leader: int,
 *         stringtag: str = "org.mpi4py",
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         Errhandler errhandler: Errhandler | None = None,
 *     ) -> Intracomm:
*/
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 3358, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3350
 *     # ------------------------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_from_groups(
 *         cls,
*/
  __pyx_t_11 = PyTuple_Pack(3, __pyx_mstate_global->__pyx_kp_u_org_mpi4py, __pyx_t_5, Py_None); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 3350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyDict_NewPresized(8); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_local_group, __pyx_mstate_global->__pyx_n_u_Group) < (0)) __PYX_ERR(33, 3350, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_local_leader, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 3350, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_remote_group, __pyx_mstate_global->__pyx_n_u_Group) < (0)) __PYX_ERR(33, 3350, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_remote_leader, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 3350, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_stringtag, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(33, 3350, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 3350, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_errhandler, __pyx_mstate_global->__pyx_kp_u_Errhandler_None) < (0)) __PYX_ERR(33, 3350, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Intracomm) < (0)) __PYX_ERR(33, 3350, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intercomm_3Create_from_groups, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Intercomm_Create_from_groups, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[452])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 3350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_11);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intercomm, __pyx_mstate_global->__pyx_n_u_Create_from_groups, __pyx_t_3) < (0)) __PYX_ERR(33, 3350, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intercomm, __pyx_mstate_global->__pyx_n_u_Create_from_groups); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 3350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intercomm, __pyx_mstate_global->__pyx_n_u_Create_from_groups, __pyx_t_5) < (0)) __PYX_ERR(33, 3350, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3377
 *     # ---------------------------
 * 
 *     def Get_remote_group(self) -> Group:             # <<<<<<<<<<<<<<
 *         """
 *         Access the remote group associated with the inter-communicator.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3377, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Group) < (0)) __PYX_ERR(33, 3377, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intercomm_5Get_remote_group, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Intercomm_Get_remote_group, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[453])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 3377, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intercomm, __pyx_mstate_global->__pyx_n_u_Get_remote_group, __pyx_t_3) < (0)) __PYX_ERR(33, 3377, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3391
 *             return self.Get_remote_group()
 * 
 *     def Get_remote_size(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Intercommunicator remote size.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 3391, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(33, 3391, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intercomm_7Get_remote_size, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Intercomm_Get_remote_size, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[454])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3391, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intercomm, __pyx_mstate_global->__pyx_n_u_Get_remote_size, __pyx_t_5) < (0)) __PYX_ERR(33, 3391, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3407
 *     # -------------------------
 * 
 *     def Merge(self, bint high: bool = False) -> Intracomm:             # <<<<<<<<<<<<<<
 *         """
 *         Merge intercommunicator into an intracommunicator.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3407, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_high, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(33, 3407, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Intracomm) < (0)) __PYX_ERR(33, 3407, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intercomm_9Merge, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Intercomm_Merge, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[455])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 3407, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[14]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intercomm, __pyx_mstate_global->__pyx_n_u_Merge, __pyx_t_3) < (0)) __PYX_ERR(33, 3407, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3418
 * 
 * 
 * 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_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Comm(MPI_COMM_NULL, __pyx_mstate_global->__pyx_n_u_COMM_NULL)); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 3418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_NULL__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___COMM_NULL__, ((struct PyMPICommObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3419
 * 
 * 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_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Intracomm(MPI_COMM_SELF, __pyx_mstate_global->__pyx_n_u_COMM_SELF)); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 3419, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_SELF__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___COMM_SELF__, ((struct PyMPIIntracommObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3420
 * 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_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Intracomm(MPI_COMM_WORLD, __pyx_mstate_global->__pyx_n_u_COMM_WORLD)); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 3420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_WORLD__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___COMM_WORLD__, ((struct PyMPIIntracommObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3421
 * 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_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Intercomm(MPI_COMM_NULL)); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 3421, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_PARENT__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___COMM_PARENT__, ((struct PyMPIIntercommObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3427
 * # ------------------------
 * 
 * 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_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_COMM_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_NULL__)) < (0)) __PYX_ERR(33, 3427, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3428
 * 
 * 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_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_COMM_SELF, ((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_SELF__)) < (0)) __PYX_ERR(33, 3428, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3429
 * 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_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_COMM_WORLD, ((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_WORLD__)) < (0)) __PYX_ERR(33, 3429, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3435
 * # ---------------------------
 * 
 * BSEND_OVERHEAD = MPI_BSEND_OVERHEAD             # <<<<<<<<<<<<<<
 * #: Upper bound of memory overhead for sending in buffered mode
 * 
*/
  __pyx_t_3 = __Pyx_PyLong_From___pyx_anon_enum(MPI_BSEND_OVERHEAD); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 3435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_BSEND_OVERHEAD, __pyx_t_3) < (0)) __PYX_ERR(33, 3435, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3438
 * #: Upper bound of memory overhead for sending in buffered mode
 * 
 * BUFFER_AUTOMATIC = __BUFFER_AUTOMATIC__             # <<<<<<<<<<<<<<
 * #: Special address for automatic buffering
 * 
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_BUFFER_AUTOMATIC, __pyx_v_6mpi4py_3MPI___BUFFER_AUTOMATIC__) < (0)) __PYX_ERR(33, 3438, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3442
 * 
 * 
 * def Attach_buffer(buf: Buffer | None) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Attach a user-provided buffer for sending in buffered mode.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 3442, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_kp_u_Buffer_None) < (0)) __PYX_ERR(33, 3442, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 3442, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_35Attach_buffer, 0, __pyx_mstate_global->__pyx_n_u_Attach_buffer, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[456])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3442, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Attach_buffer, __pyx_t_5) < (0)) __PYX_ERR(33, 3442, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3453
 * 
 * 
 * def Detach_buffer() -> Buffer | None:             # <<<<<<<<<<<<<<
 *     """
 *     Remove an existing attached buffer.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_Buffer_None) < (0)) __PYX_ERR(33, 3453, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_37Detach_buffer, 0, __pyx_mstate_global->__pyx_n_u_Detach_buffer, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[457])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 3453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Detach_buffer, __pyx_t_3) < (0)) __PYX_ERR(33, 3453, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3463
 * 
 * 
 * def Flush_buffer() -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Block until all buffered messages have been transmitted.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 3463, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 3463, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_39Flush_buffer, 0, __pyx_mstate_global->__pyx_n_u_Flush_buffer, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[458])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3463, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Flush_buffer, __pyx_t_5) < (0)) __PYX_ERR(33, 3463, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3470
 * 
 * 
 * def Iflush_buffer() -> Request:             # <<<<<<<<<<<<<<
 *     """
 *     Nonblocking flush for buffered messages.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3470, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(33, 3470, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_41Iflush_buffer, 0, __pyx_mstate_global->__pyx_n_u_Iflush_buffer, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[459])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 3470, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Iflush_buffer, __pyx_t_3) < (0)) __PYX_ERR(33, 3470, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3485
 * # ---------------
 * 
 * def Open_port(Info info: Info = INFO_NULL) -> str:             # <<<<<<<<<<<<<<
 *     """
 *     Return an address used to connect group of processes.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 3485, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 3485, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(33, 3485, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_43Open_port, 0, __pyx_mstate_global->__pyx_n_u_Open_port, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[460])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3485, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  if (!__Pyx_CyFunction_InitDefaults(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI___pyx_defaults1)) __PYX_ERR(33, 3485, __pyx_L1_error)
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 3485, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 3485, __pyx_L1_error)
  __Pyx_CyFunction_Defaults(struct __pyx_defaults1, __pyx_t_5)->arg0 = ((struct PyMPIInfoObject *)__pyx_t_11);
  __Pyx_GIVEREF((PyObject *)__pyx_t_11);
  __pyx_t_11 = 0;
  __Pyx_CyFunction_SetDefaultsGetter(__pyx_t_5, __pyx_pf_6mpi4py_3MPI_110__defaults__);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Open_port, __pyx_t_5) < (0)) __PYX_ERR(33, 3485, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3496
 * 
 * 
 * def Close_port(port_name: str) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Close a port.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3496, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_port_name, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(33, 3496, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 3496, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_45Close_port, 0, __pyx_mstate_global->__pyx_n_u_Close_port, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[461])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 3496, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Close_port, __pyx_t_3) < (0)) __PYX_ERR(33, 3496, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3508
 * # ---------------
 * 
 * def Publish_name(             # <<<<<<<<<<<<<<
 *     service_name: str,
 *     port_name: str,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 3508, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_service_name, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(33, 3508, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_port_name, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(33, 3508, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 3508, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 3508, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_47Publish_name, 0, __pyx_mstate_global->__pyx_n_u_Publish_name, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[462])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3508, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  if (!__Pyx_CyFunction_InitDefaults(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI___pyx_defaults1)) __PYX_ERR(33, 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_11, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 3511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 3511, __pyx_L1_error)
  __Pyx_CyFunction_Defaults(struct __pyx_defaults1, __pyx_t_5)->arg0 = ((struct PyMPIInfoObject *)__pyx_t_11);
  __Pyx_GIVEREF((PyObject *)__pyx_t_11);
  __pyx_t_11 = 0;
  __Pyx_CyFunction_SetDefaultsGetter(__pyx_t_5, __pyx_pf_6mpi4py_3MPI_112__defaults__);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Publish_name, __pyx_t_5) < (0)) __PYX_ERR(33, 3508, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3524
 * 
 * 
 * def Unpublish_name(             # <<<<<<<<<<<<<<
 *     service_name: str,
 *     port_name: str,
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_service_name, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(33, 3524, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_port_name, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(33, 3524, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 3524, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(33, 3524, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_49Unpublish_name, 0, __pyx_mstate_global->__pyx_n_u_Unpublish_name, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[463])); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 3524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  if (!__Pyx_CyFunction_InitDefaults(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI___pyx_defaults1)) __PYX_ERR(33, 3524, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3527
 *     service_name: str,
 *     port_name: str,
 *     Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 * ) -> None:
 *     """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 3527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 3527, __pyx_L1_error)
  __Pyx_CyFunction_Defaults(struct __pyx_defaults1, __pyx_t_3)->arg0 = ((struct PyMPIInfoObject *)__pyx_t_11);
  __Pyx_GIVEREF((PyObject *)__pyx_t_11);
  __pyx_t_11 = 0;
  __Pyx_CyFunction_SetDefaultsGetter(__pyx_t_3, __pyx_pf_6mpi4py_3MPI_114__defaults__);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Unpublish_name, __pyx_t_3) < (0)) __PYX_ERR(33, 3524, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3540
 * 
 * 
 * def Lookup_name(             # <<<<<<<<<<<<<<
 *     service_name: str,
 *     info: Info = INFO_NULL,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 3540, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_service_name, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(33, 3540, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(33, 3540, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(33, 3540, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_51Lookup_name, 0, __pyx_mstate_global->__pyx_n_u_Lookup_name, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[464])); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 3540, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  if (!__Pyx_CyFunction_InitDefaults(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI___pyx_defaults2)) __PYX_ERR(33, 3540, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3542
 * def Lookup_name(
 *     service_name: str,
 *     info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 * ) -> str:
 *     """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 3542, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_CyFunction_Defaults(struct __pyx_defaults2, __pyx_t_5)->arg0 = __pyx_t_11;
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;
  __Pyx_CyFunction_SetDefaultsGetter(__pyx_t_5, __pyx_pf_6mpi4py_3MPI_116__defaults__);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Lookup_name, __pyx_t_5) < (0)) __PYX_ERR(33, 3540, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 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_5 = __Pyx_PyLong_From___pyx_anon_enum(MPI_WIN_FLAVOR_CREATE); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_WIN_FLAVOR_CREATE, __pyx_t_5) < (0)) __PYX_ERR(34, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 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_5 = __Pyx_PyLong_From___pyx_anon_enum(MPI_WIN_FLAVOR_ALLOCATE); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_WIN_FLAVOR_ALLOCATE, __pyx_t_5) < (0)) __PYX_ERR(34, 4, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 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_5 = __Pyx_PyLong_From___pyx_anon_enum(MPI_WIN_FLAVOR_DYNAMIC); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_WIN_FLAVOR_DYNAMIC, __pyx_t_5) < (0)) __PYX_ERR(34, 5, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 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_5 = __Pyx_PyLong_From___pyx_anon_enum(MPI_WIN_FLAVOR_SHARED); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_WIN_FLAVOR_SHARED, __pyx_t_5) < (0)) __PYX_ERR(34, 6, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":10
 * # Memory model
 * # ------------
 * WIN_SEPARATE = MPI_WIN_SEPARATE             # <<<<<<<<<<<<<<
 * WIN_UNIFIED  = MPI_WIN_UNIFIED
 * 
*/
  __pyx_t_5 = __Pyx_PyLong_From___pyx_anon_enum(MPI_WIN_SEPARATE); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_WIN_SEPARATE, __pyx_t_5) < (0)) __PYX_ERR(34, 10, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":11
 * # ------------
 * WIN_SEPARATE = MPI_WIN_SEPARATE
 * WIN_UNIFIED  = MPI_WIN_UNIFIED             # <<<<<<<<<<<<<<
 * 
 * # Assertion modes
*/
  __pyx_t_5 = __Pyx_PyLong_From___pyx_anon_enum(MPI_WIN_UNIFIED); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_WIN_UNIFIED, __pyx_t_5) < (0)) __PYX_ERR(34, 11, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 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_5 = __Pyx_PyLong_From___pyx_anon_enum(MPI_MODE_NOCHECK); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MODE_NOCHECK, __pyx_t_5) < (0)) __PYX_ERR(34, 15, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 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_5 = __Pyx_PyLong_From___pyx_anon_enum(MPI_MODE_NOSTORE); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MODE_NOSTORE, __pyx_t_5) < (0)) __PYX_ERR(34, 16, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 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_5 = __Pyx_PyLong_From___pyx_anon_enum(MPI_MODE_NOPUT); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MODE_NOPUT, __pyx_t_5) < (0)) __PYX_ERR(34, 17, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 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_5 = __Pyx_PyLong_From___pyx_anon_enum(MPI_MODE_NOPRECEDE); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MODE_NOPRECEDE, __pyx_t_5) < (0)) __PYX_ERR(34, 18, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 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_5 = __Pyx_PyLong_From___pyx_anon_enum(MPI_MODE_NOSUCCEED); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MODE_NOSUCCEED, __pyx_t_5) < (0)) __PYX_ERR(34, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":23
 * # Lock types
 * # ----------
 * LOCK_EXCLUSIVE = MPI_LOCK_EXCLUSIVE             # <<<<<<<<<<<<<<
 * LOCK_SHARED    = MPI_LOCK_SHARED
 * 
*/
  __pyx_t_5 = __Pyx_PyLong_From___pyx_anon_enum(MPI_LOCK_EXCLUSIVE); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LOCK_EXCLUSIVE, __pyx_t_5) < (0)) __PYX_ERR(34, 23, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":24
 * # ----------
 * LOCK_EXCLUSIVE = MPI_LOCK_EXCLUSIVE
 * LOCK_SHARED    = MPI_LOCK_SHARED             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_5 = __Pyx_PyLong_From___pyx_anon_enum(MPI_LOCK_SHARED); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LOCK_SHARED, __pyx_t_5) < (0)) __PYX_ERR(34, 24, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":45
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_str_tuple_Any) < (0)) __PYX_ERR(34, 45, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_9__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win___reduce, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[465])); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_reduce, __pyx_t_3) < (0)) __PYX_ERR(34, 45, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":53
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Win:
 *         """
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_handle, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 53, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Win) < (0)) __PYX_ERR(34, 53, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_11fromhandle, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_fromhandle, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[466])); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_fromhandle, __pyx_t_5) < (0)) __PYX_ERR(34, 53, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_GetNameInClass(__pyx_t_5, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_fromhandle); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_fromhandle, __pyx_t_3) < (0)) __PYX_ERR(34, 53, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "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_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(34, 60, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_13free, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_free, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[467])); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_free, __pyx_t_5) < (0)) __PYX_ERR(34, 60, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 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_5, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(34, 74, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__114 = ((struct PyMPIInfoObject *)__pyx_t_5);
  __Pyx_GIVEREF((PyObject *)__pyx_t_5);
  __pyx_t_5 = 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_5, __pyx_mstate_global->__pyx_n_u_COMM_SELF); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm))))) __PYX_ERR(34, 75, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__115 = ((struct PyMPIIntracommObject *)__pyx_t_5);
  __Pyx_GIVEREF((PyObject *)__pyx_t_5);
  __pyx_t_5 = 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_5, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(34, 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_3, __pyx_mstate_global->__pyx_n_u_COMM_SELF); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm))))) __PYX_ERR(34, 75, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":69
 *     # ---------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create(
 *         cls,
*/
  __pyx_t_11 = PyTuple_Pack(3, __pyx_mstate_global->__pyx_int_1, __pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(34, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_memory, __pyx_mstate_global->__pyx_kp_u_Buffer_Bottom) < (0)) __PYX_ERR(34, 69, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_disp_unit, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 69, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(34, 69, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_comm, __pyx_mstate_global->__pyx_n_u_Intracomm) < (0)) __PYX_ERR(34, 69, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(34, 69, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_15Create, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Create, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[468])); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_t_11);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Create, __pyx_t_5) < (0)) __PYX_ERR(34, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_GetNameInClass(__pyx_t_5, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Create); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Create, __pyx_t_3) < (0)) __PYX_ERR(34, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 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_3, __pyx_mstate_global->__pyx_n_u_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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(34, 99, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__116 = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 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_3, __pyx_mstate_global->__pyx_n_u_COMM_SELF); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm))))) __PYX_ERR(34, 100, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__117 = ((struct PyMPIIntracommObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 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_3, __pyx_mstate_global->__pyx_n_u_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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(34, 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_5, __pyx_mstate_global->__pyx_n_u_COMM_SELF); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm))))) __PYX_ERR(34, 100, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":94
 *         return win
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Allocate(
 *         cls,
*/
  __pyx_t_11 = PyTuple_Pack(3, __pyx_mstate_global->__pyx_int_1, __pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(34, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_size_2, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 94, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_disp_unit, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 94, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(34, 94, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_comm, __pyx_mstate_global->__pyx_n_u_Intracomm) < (0)) __PYX_ERR(34, 94, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(34, 94, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_17Allocate, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Allocate, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[469])); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_11);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Allocate, __pyx_t_3) < (0)) __PYX_ERR(34, 94, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Allocate); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Allocate, __pyx_t_5) < (0)) __PYX_ERR(34, 94, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 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_5, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(34, 118, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__118 = ((struct PyMPIInfoObject *)__pyx_t_5);
  __Pyx_GIVEREF((PyObject *)__pyx_t_5);
  __pyx_t_5 = 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_5, __pyx_mstate_global->__pyx_n_u_COMM_SELF); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm))))) __PYX_ERR(34, 119, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__119 = ((struct PyMPIIntracommObject *)__pyx_t_5);
  __Pyx_GIVEREF((PyObject *)__pyx_t_5);
  __pyx_t_5 = 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_5, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(34, 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_3, __pyx_mstate_global->__pyx_n_u_COMM_SELF); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm))))) __PYX_ERR(34, 119, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":113
 *         return win
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Allocate_shared(
 *         cls,
*/
  __pyx_t_11 = PyTuple_Pack(3, __pyx_mstate_global->__pyx_int_1, __pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(34, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_size_2, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 113, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_disp_unit, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 113, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(34, 113, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_comm, __pyx_mstate_global->__pyx_n_u_Intracomm) < (0)) __PYX_ERR(34, 113, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(34, 113, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_19Allocate_shared, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Allocate_shared, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[470])); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_t_11);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Allocate_shared, __pyx_t_5) < (0)) __PYX_ERR(34, 113, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_GetNameInClass(__pyx_t_5, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Allocate_shared); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Allocate_shared, __pyx_t_3) < (0)) __PYX_ERR(34, 113, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "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_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_rank, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 132, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_tuple_buffer_int) < (0)) __PYX_ERR(34, 132, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_21Shared_query, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Shared_query, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[471])); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Shared_query, __pyx_t_5) < (0)) __PYX_ERR(34, 132, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 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_5, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(34, 147, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__120 = ((struct PyMPIInfoObject *)__pyx_t_5);
  __Pyx_GIVEREF((PyObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":148
 *         cls,
 *         Info info: Info = INFO_NULL,
 *         Intracomm comm: Intracomm = COMM_SELF,             # <<<<<<<<<<<<<<
 *     ) -> Self:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_COMM_SELF); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm))))) __PYX_ERR(34, 148, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__121 = ((struct PyMPIIntracommObject *)__pyx_t_5);
  __Pyx_GIVEREF((PyObject *)__pyx_t_5);
  __pyx_t_5 = 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_5, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(34, 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_3, __pyx_mstate_global->__pyx_n_u_COMM_SELF); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm))))) __PYX_ERR(34, 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_11 = PyTuple_Pack(2, __pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(34, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(34, 144, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_comm, __pyx_mstate_global->__pyx_n_u_Intracomm) < (0)) __PYX_ERR(34, 144, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(34, 144, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_23Create_dynamic, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Create_dynamic, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[472])); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_t_11);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Create_dynamic, __pyx_t_5) < (0)) __PYX_ERR(34, 144, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_GetNameInClass(__pyx_t_5, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Create_dynamic); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Create_dynamic, __pyx_t_3) < (0)) __PYX_ERR(34, 144, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":160
 *         return win
 * 
 *     def Attach(self, memory: Buffer) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Attach a local memory region.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_memory, __pyx_mstate_global->__pyx_n_u_Buffer) < (0)) __PYX_ERR(34, 160, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(34, 160, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_25Attach, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Attach, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[473])); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Attach, __pyx_t_5) < (0)) __PYX_ERR(34, 160, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":174
 *             pass  # ~> uncovered
 * 
 *     def Detach(self, memory: Buffer) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Detach a local memory region.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_memory, __pyx_mstate_global->__pyx_n_u_Buffer) < (0)) __PYX_ERR(34, 174, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(34, 174, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_27Detach, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Detach, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[474])); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Detach, __pyx_t_3) < (0)) __PYX_ERR(34, 174, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":187
 *             pass  # ~> uncovered
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free a window.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(34, 187, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_29Free, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Free, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[475])); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Free, __pyx_t_5) < (0)) __PYX_ERR(34, 187, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":199
 *     # -----------
 * 
 *     def Set_info(self, Info info: Info) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set new values for the hints associated with a window.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(34, 199, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(34, 199, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_31Set_info, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Set_info, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[476])); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Set_info, __pyx_t_3) < (0)) __PYX_ERR(34, 199, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":205
 *         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_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(34, 205, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_33Get_info, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Get_info, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[477])); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Get_info, __pyx_t_5) < (0)) __PYX_ERR(34, 205, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":224
 *     # -------------
 * 
 *     def Get_group(self) -> Group:             # <<<<<<<<<<<<<<
 *         """
 *         Access the group of processes that created the window.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Group) < (0)) __PYX_ERR(34, 224, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_35Get_group, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Get_group, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[478])); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Get_group, __pyx_t_3) < (0)) __PYX_ERR(34, 224, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":264
 *     # -----------------
 * 
 *     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(34, 264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_keyval, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 264, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_int_Any_None) < (0)) __PYX_ERR(34, 264, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_37Get_attr, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Get_attr, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[479])); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Get_attr, __pyx_t_5) < (0)) __PYX_ERR(34, 264, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":288
 *         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_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 288, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_keyval, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 288, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_attrval, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(34, 288, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(34, 288, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_39Set_attr, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Set_attr, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[480])); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 288, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Set_attr, __pyx_t_3) < (0)) __PYX_ERR(34, 288, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":294
 *         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(34, 294, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_keyval, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 294, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(34, 294, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_41Delete_attr, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Delete_attr, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[481])); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 294, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Delete_attr, __pyx_t_5) < (0)) __PYX_ERR(34, 294, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":300
 *         PyMPI_attr_del(self.ob_mpi, keyval)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_keyval(
 *         cls,
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 300, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_copy_fn, __pyx_mstate_global->__pyx_kp_u_Callable_Win_int_Any_Any_None) < (0)) __PYX_ERR(34, 300, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_delete_fn, __pyx_mstate_global->__pyx_kp_u_Callable_Win_int_Any_None_None) < (0)) __PYX_ERR(34, 300, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_nopython, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(34, 300, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 300, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_43Create_keyval, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Create_keyval, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[482])); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 300, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[17]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Create_keyval, __pyx_t_3) < (0)) __PYX_ERR(34, 300, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Create_keyval); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 300, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 300, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Create_keyval, __pyx_t_5) < (0)) __PYX_ERR(34, 300, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":318
 *         return keyval
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Free_keyval(cls, int keyval: int) -> int:
 *         """
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_keyval, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 318, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 318, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_45Free_keyval, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Free_keyval, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[483])); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Free_keyval, __pyx_t_3) < (0)) __PYX_ERR(34, 318, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Free_keyval); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Free_keyval, __pyx_t_5) < (0)) __PYX_ERR(34, 318, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":365
 *             return model
 * 
 *     def tomemory(self) -> buffer:             # <<<<<<<<<<<<<<
 *         """
 *         Return window memory buffer.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 365, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_buffer) < (0)) __PYX_ERR(34, 365, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_47tomemory, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_tomemory, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[484])); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 365, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_tomemory, __pyx_t_3) < (0)) __PYX_ERR(34, 365, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":383
 *     # ------------------------
 * 
 *     def Put(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 383, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_origin, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(34, 383, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_target_rank, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 383, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_target, __pyx_mstate_global->__pyx_kp_u_TargetSpec_None) < (0)) __PYX_ERR(34, 383, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(34, 383, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_51Put, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Put, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[485])); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 383, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Put, __pyx_t_5) < (0)) __PYX_ERR(34, 383, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":400
 *             self.ob_mpi) )
 * 
 *     def Get(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_origin, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(34, 400, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_target_rank, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 400, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_target, __pyx_mstate_global->__pyx_kp_u_TargetSpec_None) < (0)) __PYX_ERR(34, 400, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(34, 400, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_53Get, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Get, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[486])); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Get, __pyx_t_3) < (0)) __PYX_ERR(34, 400, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":422
 *         int target_rank: int,
 *         target: TargetSpec | None = None,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 422, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(34, 422, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__122 = ((struct PyMPIOpObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":421
 *         origin: BufSpec,
 *         int target_rank: int,
 *         target: TargetSpec | None = None,             # <<<<<<<<<<<<<<
 *         Op op: Op = SUM,
 *     ) -> None:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 422, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Win.pyx":422
 *         int target_rank: int,
 *         target: TargetSpec | None = None,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(34, 422, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":417
 *             self.ob_mpi) )
 * 
 *     def Accumulate(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
*/
  __pyx_t_5 = PyTuple_Pack(2, Py_None, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 417, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 417, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_origin, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(34, 417, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_target_rank, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 417, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_target, __pyx_mstate_global->__pyx_kp_u_TargetSpec_None) < (0)) __PYX_ERR(34, 417, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_op, __pyx_mstate_global->__pyx_n_u_Op) < (0)) __PYX_ERR(34, 417, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(34, 417, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_55Accumulate, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Accumulate, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[487])); if (unlikely(!__pyx_t_11)) __PYX_ERR(34, 417, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_t_5);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Accumulate, __pyx_t_11) < (0)) __PYX_ERR(34, 417, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":441
 *         int target_rank: int,
 *         target: TargetSpec | None = None,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_11)) __PYX_ERR(34, 441, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(34, 441, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__123 = ((struct PyMPIOpObject *)__pyx_t_11);
  __Pyx_GIVEREF((PyObject *)__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":440
 *         result: BufSpec,
 *         int target_rank: int,
 *         target: TargetSpec | None = None,             # <<<<<<<<<<<<<<
 *         Op op: Op = SUM,
 *     ) -> None:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_11)) __PYX_ERR(34, 441, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "src/mpi4py/MPI.src/Win.pyx":441
 *         int target_rank: int,
 *         target: TargetSpec | None = None,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(34, 441, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":435
 *             op.ob_mpi, self.ob_mpi) )
 * 
 *     def Get_accumulate(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
*/
  __pyx_t_3 = PyTuple_Pack(2, Py_None, __pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_11)) __PYX_ERR(34, 435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_origin, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(34, 435, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_result, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(34, 435, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_target_rank, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 435, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_target, __pyx_mstate_global->__pyx_kp_u_TargetSpec_None) < (0)) __PYX_ERR(34, 435, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_op, __pyx_mstate_global->__pyx_n_u_Op) < (0)) __PYX_ERR(34, 435, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(34, 435, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_57Get_accumulate, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Get_accumulate, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[488])); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Get_accumulate, __pyx_t_5) < (0)) __PYX_ERR(34, 435, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":461
 *         int target_rank: int,
 *         Aint target_disp: int = 0,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 461, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(34, 461, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__124 = ((struct PyMPIOpObject *)__pyx_t_5);
  __Pyx_GIVEREF((PyObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":455
 *             op.ob_mpi, self.ob_mpi) )
 * 
 *     def Fetch_and_op(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 461, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "src/mpi4py/MPI.src/Win.pyx":461
 *         int target_rank: int,
 *         Aint target_disp: int = 0,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(34, 461, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":455
 *             op.ob_mpi, self.ob_mpi) )
 * 
 *     def Fetch_and_op(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
*/
  __pyx_t_11 = PyTuple_Pack(2, __pyx_mstate_global->__pyx_int_0, __pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(34, 455, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 455, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_origin, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(34, 455, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_result, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(34, 455, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_target_rank, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 455, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_target_disp, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 455, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_op, __pyx_mstate_global->__pyx_n_u_Op) < (0)) __PYX_ERR(34, 455, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(34, 455, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_59Fetch_and_op, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Fetch_and_op, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[489])); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 455, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_11);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Fetch_and_op, __pyx_t_3) < (0)) __PYX_ERR(34, 455, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":473
 *                 op.ob_mpi, self.ob_mpi) )
 * 
 *     def Compare_and_swap(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 473, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_origin, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(34, 473, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_compare, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(34, 473, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_result, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(34, 473, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_target_rank, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 473, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_target_disp, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 473, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(34, 473, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_61Compare_and_swap, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Compare_and_swap, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[490])); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 473, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Compare_and_swap, __pyx_t_5) < (0)) __PYX_ERR(34, 473, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":493
 *     # ------------------------------------------
 * 
 *     def Rput(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 493, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_origin, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(34, 493, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_target_rank, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 493, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_target, __pyx_mstate_global->__pyx_kp_u_TargetSpec_None) < (0)) __PYX_ERR(34, 493, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(34, 493, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_63Rput, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Rput, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[491])); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 493, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Rput, __pyx_t_3) < (0)) __PYX_ERR(34, 493, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":513
 *         return request
 * 
 *     def Rget(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 513, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_origin, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(34, 513, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_target_rank, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 513, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_target, __pyx_mstate_global->__pyx_kp_u_TargetSpec_None) < (0)) __PYX_ERR(34, 513, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(34, 513, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_65Rget, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Rget, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[492])); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 513, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Rget, __pyx_t_5) < (0)) __PYX_ERR(34, 513, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":538
 *         int target_rank: int,
 *         target: TargetSpec | None = None,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 538, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(34, 538, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__125 = ((struct PyMPIOpObject *)__pyx_t_5);
  __Pyx_GIVEREF((PyObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":537
 *         origin: BufSpec,
 *         int target_rank: int,
 *         target: TargetSpec | None = None,             # <<<<<<<<<<<<<<
 *         Op op: Op = SUM,
 *     ) -> Request:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 538, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "src/mpi4py/MPI.src/Win.pyx":538
 *         int target_rank: int,
 *         target: TargetSpec | None = None,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
*/
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(34, 538, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":533
 *         return request
 * 
 *     def Raccumulate(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
*/
  __pyx_t_3 = PyTuple_Pack(2, Py_None, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_origin, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(34, 533, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_target_rank, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 533, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_target, __pyx_mstate_global->__pyx_kp_u_TargetSpec_None) < (0)) __PYX_ERR(34, 533, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_op, __pyx_mstate_global->__pyx_n_u_Op) < (0)) __PYX_ERR(34, 533, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(34, 533, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_67Raccumulate, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Raccumulate, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[493])); if (unlikely(!__pyx_t_11)) __PYX_ERR(34, 533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Raccumulate, __pyx_t_11) < (0)) __PYX_ERR(34, 533, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":560
 *         int target_rank: int,
 *         target: TargetSpec | None = None,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_11)) __PYX_ERR(34, 560, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(34, 560, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__126 = ((struct PyMPIOpObject *)__pyx_t_11);
  __Pyx_GIVEREF((PyObject *)__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":559
 *         result: BufSpec,
 *         int target_rank: int,
 *         target: TargetSpec | None = None,             # <<<<<<<<<<<<<<
 *         Op op: Op = SUM,
 *     ) -> Request:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_SUM); if (unlikely(!__pyx_t_11)) __PYX_ERR(34, 560, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "src/mpi4py/MPI.src/Win.pyx":560
 *         int target_rank: int,
 *         target: TargetSpec | None = None,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
*/
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(34, 560, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":554
 *         return request
 * 
 *     def Rget_accumulate(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
*/
  __pyx_t_5 = PyTuple_Pack(2, Py_None, __pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 554, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_11)) __PYX_ERR(34, 554, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_origin, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(34, 554, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_result, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(34, 554, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_target_rank, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 554, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_target, __pyx_mstate_global->__pyx_kp_u_TargetSpec_None) < (0)) __PYX_ERR(34, 554, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_op, __pyx_mstate_global->__pyx_n_u_Op) < (0)) __PYX_ERR(34, 554, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(34, 554, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_69Rget_accumulate, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Rget_accumulate, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[494])); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 554, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_5);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Rget_accumulate, __pyx_t_3) < (0)) __PYX_ERR(34, 554, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":583
 *     # -----
 * 
 *     def Fence(self, int assertion: int = 0) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Perform an MPI fence synchronization on a window.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 583, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_assertion, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 583, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(34, 583, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_71Fence, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Fence, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[495])); if (unlikely(!__pyx_t_11)) __PYX_ERR(34, 583, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Fence, __pyx_t_11) < (0)) __PYX_ERR(34, 583, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":592
 *     # -------------------------------------
 * 
 *     def Start(self, Group group: Group, int assertion: int = 0) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Start an RMA access epoch for MPI.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(34, 592, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_group, __pyx_mstate_global->__pyx_n_u_Group) < (0)) __PYX_ERR(34, 592, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_assertion, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 592, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(34, 592, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_73Start, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Start, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[496])); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 592, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Start, __pyx_t_3) < (0)) __PYX_ERR(34, 592, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":599
 *             group.ob_mpi, assertion, self.ob_mpi) )
 * 
 *     def Complete(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Complete an RMA operation begun after an `Start`.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 599, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(34, 599, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_75Complete, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Complete, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[497])); if (unlikely(!__pyx_t_11)) __PYX_ERR(34, 599, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Complete, __pyx_t_11) < (0)) __PYX_ERR(34, 599, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":605
 *         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_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(34, 605, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_group, __pyx_mstate_global->__pyx_n_u_Group) < (0)) __PYX_ERR(34, 605, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_assertion, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 605, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(34, 605, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_77Post, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Post, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[498])); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 605, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Post, __pyx_t_3) < (0)) __PYX_ERR(34, 605, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":612
 *             group.ob_mpi, assertion, self.ob_mpi) )
 * 
 *     def Wait(self) -> Literal[True]:             # <<<<<<<<<<<<<<
 *         """
 *         Complete an RMA exposure epoch begun with `Post`.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 612, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_Literal_True) < (0)) __PYX_ERR(34, 612, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_79Wait, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Wait, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[499])); if (unlikely(!__pyx_t_11)) __PYX_ERR(34, 612, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Wait, __pyx_t_11) < (0)) __PYX_ERR(34, 612, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":619
 *         return True
 * 
 *     def Test(self) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Test whether an RMA exposure epoch has completed.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(34, 619, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(34, 619, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_81Test, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Test, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[500])); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 619, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Test, __pyx_t_3) < (0)) __PYX_ERR(34, 619, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":633
 *         self,
 *         int rank: int,
 *         int lock_type: int = LOCK_EXCLUSIVE,             # <<<<<<<<<<<<<<
 *         int assertion: int = 0,
 *     ) -> None:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_LOCK_EXCLUSIVE); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 633, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 633, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_mstate_global->__pyx_k__127 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Win.pyx":630
 *     # ----
 * 
 *     def Lock(             # <<<<<<<<<<<<<<
 *         self,
 *         int rank: int,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_LOCK_EXCLUSIVE); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 633, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Win.pyx":633
 *         self,
 *         int rank: int,
 *         int lock_type: int = LOCK_EXCLUSIVE,             # <<<<<<<<<<<<<<
 *         int assertion: int = 0,
 *     ) -> None:
*/
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 633, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 633, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Win.pyx":630
 *     # ----
 * 
 *     def Lock(             # <<<<<<<<<<<<<<
 *         self,
 *         int rank: int,
*/
  __pyx_t_11 = PyTuple_Pack(2, __pyx_t_3, __pyx_mstate_global->__pyx_int_0); if (unlikely(!__pyx_t_11)) __PYX_ERR(34, 630, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 630, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_rank, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 630, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_lock_type, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 630, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_assertion, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 630, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(34, 630, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_83Lock, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Lock, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[501])); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 630, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_t_11);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Lock, __pyx_t_5) < (0)) __PYX_ERR(34, 630, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":642
 *             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_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 642, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_rank, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 642, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(34, 642, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_85Unlock, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Unlock, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[502])); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 642, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Unlock, __pyx_t_3) < (0)) __PYX_ERR(34, 642, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":648
 *         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_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 648, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_assertion, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 648, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(34, 648, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_87Lock_all, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Lock_all, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[503])); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 648, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Lock_all, __pyx_t_5) < (0)) __PYX_ERR(34, 648, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":654
 *         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_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 654, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(34, 654, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_89Unlock_all, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Unlock_all, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[504])); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 654, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Unlock_all, __pyx_t_3) < (0)) __PYX_ERR(34, 654, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":663
 *     # --------------
 * 
 *     def Flush(self, int rank: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Complete all outstanding RMA operations at a target.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 663, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_rank, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 663, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(34, 663, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_91Flush, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Flush, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[505])); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 663, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Flush, __pyx_t_5) < (0)) __PYX_ERR(34, 663, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":669
 *         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_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 669, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(34, 669, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_93Flush_all, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Flush_all, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[506])); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 669, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Flush_all, __pyx_t_3) < (0)) __PYX_ERR(34, 669, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":675
 *         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_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 675, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_rank, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 675, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(34, 675, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_95Flush_local, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Flush_local, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[507])); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 675, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Flush_local, __pyx_t_5) < (0)) __PYX_ERR(34, 675, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":681
 *         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_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 681, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(34, 681, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_97Flush_local_all, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Flush_local_all, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[508])); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 681, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Flush_local_all, __pyx_t_3) < (0)) __PYX_ERR(34, 681, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":687
 *         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_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 687, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(34, 687, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_99Sync, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Sync, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[509])); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 687, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Sync, __pyx_t_5) < (0)) __PYX_ERR(34, 687, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":696
 *     # --------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_errhandler(
 *         cls,
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 696, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_errhandler_fn, __pyx_mstate_global->__pyx_kp_u_Callable_Win_int_None) < (0)) __PYX_ERR(34, 696, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Errhandler) < (0)) __PYX_ERR(34, 696, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_101Create_errhandler, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Create_errhandler, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[510])); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 696, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Create_errhandler, __pyx_t_3) < (0)) __PYX_ERR(34, 696, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Create_errhandler); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 696, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 696, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Create_errhandler, __pyx_t_5) < (0)) __PYX_ERR(34, 696, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":714
 *         return errhandler
 * 
 *     def Get_errhandler(self) -> Errhandler:             # <<<<<<<<<<<<<<
 *         """
 *         Get the error handler for a window.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 714, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Errhandler) < (0)) __PYX_ERR(34, 714, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_103Get_errhandler, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Get_errhandler, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[511])); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 714, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Get_errhandler, __pyx_t_3) < (0)) __PYX_ERR(34, 714, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":722
 *         return errhandler
 * 
 *     def Set_errhandler(self, Errhandler errhandler: Errhandler) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the error handler for a window.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 722, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_errhandler, __pyx_mstate_global->__pyx_n_u_Errhandler) < (0)) __PYX_ERR(34, 722, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(34, 722, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_105Set_errhandler, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Set_errhandler, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[512])); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 722, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Set_errhandler, __pyx_t_5) < (0)) __PYX_ERR(34, 722, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":728
 *         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_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 728, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_errorcode, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 728, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(34, 728, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_107Call_errhandler, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Call_errhandler, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[513])); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 728, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Call_errhandler, __pyx_t_3) < (0)) __PYX_ERR(34, 728, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":737
 *     # --------------
 * 
 *     def Get_name(self) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Get the print name for this window.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 737, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(34, 737, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_109Get_name, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Get_name, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[514])); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 737, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Get_name, __pyx_t_5) < (0)) __PYX_ERR(34, 737, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":746
 *         return tompistr(name, nlen)
 * 
 *     def Set_name(self, name: str) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the print name for this window.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 746, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_name_2, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(34, 746, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(34, 746, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_111Set_name, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_Set_name, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[515])); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 746, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_Set_name, __pyx_t_3) < (0)) __PYX_ERR(34, 746, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":765
 *     # --------------
 * 
 *     def toint(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate object to integer handle.
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 765, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 765, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_113toint, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_toint, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[516])); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 765, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_toint, __pyx_t_5) < (0)) __PYX_ERR(34, 765, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":771
 *         return MPI_Win_toint(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromint(cls, arg: int, /) -> Win:
 *         """
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 771, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_arg, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 771, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Win) < (0)) __PYX_ERR(34, 771, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_115fromint, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_fromint, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[517])); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 771, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_fromint, __pyx_t_3) < (0)) __PYX_ERR(34, 771, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_fromint); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 771, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 771, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_fromint, __pyx_t_5) < (0)) __PYX_ERR(34, 771, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":781
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 781, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 781, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_117py2f, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_py2f, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[518])); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 781, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_py2f, __pyx_t_3) < (0)) __PYX_ERR(34, 781, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":786
 *         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(34, 786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_arg, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(34, 786, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Win) < (0)) __PYX_ERR(34, 786, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_119f2py, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Win_f2py, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[519])); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_f2py, __pyx_t_5) < (0)) __PYX_ERR(34, 786, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_GetNameInClass(__pyx_t_5, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_f2py); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win, __pyx_mstate_global->__pyx_n_u_f2py, __pyx_t_3) < (0)) __PYX_ERR(34, 786, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":793
 * 
 * 
 * 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_mstate_global->__pyx_n_u_WIN_NULL)); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 793, __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":799
 * # -------------------------
 * 
 * WIN_NULL = __WIN_NULL__  #: Null window handle             # <<<<<<<<<<<<<<
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_WIN_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___WIN_NULL__)) < (0)) __PYX_ERR(34, 799, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":4
 * # -------------
 * 
 * MODE_RDONLY = MPI_MODE_RDONLY             # <<<<<<<<<<<<<<
 * #: Read only
 * 
*/
  __pyx_t_3 = __Pyx_PyLong_From___pyx_anon_enum(MPI_MODE_RDONLY); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MODE_RDONLY, __pyx_t_3) < (0)) __PYX_ERR(35, 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_PyLong_From___pyx_anon_enum(MPI_MODE_WRONLY); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MODE_WRONLY, __pyx_t_3) < (0)) __PYX_ERR(35, 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_PyLong_From___pyx_anon_enum(MPI_MODE_RDWR); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MODE_RDWR, __pyx_t_3) < (0)) __PYX_ERR(35, 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_PyLong_From___pyx_anon_enum(MPI_MODE_CREATE); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 13, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MODE_CREATE, __pyx_t_3) < (0)) __PYX_ERR(35, 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_PyLong_From___pyx_anon_enum(MPI_MODE_EXCL); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MODE_EXCL, __pyx_t_3) < (0)) __PYX_ERR(35, 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_PyLong_From___pyx_anon_enum(MPI_MODE_DELETE_ON_CLOSE); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MODE_DELETE_ON_CLOSE, __pyx_t_3) < (0)) __PYX_ERR(35, 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_PyLong_From___pyx_anon_enum(MPI_MODE_UNIQUE_OPEN); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MODE_UNIQUE_OPEN, __pyx_t_3) < (0)) __PYX_ERR(35, 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_PyLong_From___pyx_anon_enum(MPI_MODE_SEQUENTIAL); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MODE_SEQUENTIAL, __pyx_t_3) < (0)) __PYX_ERR(35, 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_PyLong_From___pyx_anon_enum(MPI_MODE_APPEND); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MODE_APPEND, __pyx_t_3) < (0)) __PYX_ERR(35, 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_PyLong_From___pyx_anon_enum(MPI_SEEK_SET); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SEEK_SET, __pyx_t_3) < (0)) __PYX_ERR(35, 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_PyLong_From___pyx_anon_enum(MPI_SEEK_CUR); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SEEK_CUR, __pyx_t_3) < (0)) __PYX_ERR(35, 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_PyLong_From___pyx_anon_enum(MPI_SEEK_END); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SEEK_END, __pyx_t_3) < (0)) __PYX_ERR(35, 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_PyLong_From___pyx_anon_enum(MPI_DISPLACEMENT_CURRENT); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_DISPLACEMENT_CURRENT, __pyx_t_3) < (0)) __PYX_ERR(35, 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_PyLong_From___pyx_anon_enum(MPI_DISPLACEMENT_CURRENT); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_DISP_CUR, __pyx_t_3) < (0)) __PYX_ERR(35, 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(35, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_str_tuple_Any) < (0)) __PYX_ERR(35, 69, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_9__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File___reduce, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[520])); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_reduce, __pyx_t_5) < (0)) __PYX_ERR(35, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":77
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> File:
 *         """
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_handle, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(35, 77, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_File) < (0)) __PYX_ERR(35, 77, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_11fromhandle, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_fromhandle, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[521])); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_fromhandle, __pyx_t_3) < (0)) __PYX_ERR(35, 77, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_fromhandle); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_fromhandle, __pyx_t_5) < (0)) __PYX_ERR(35, 77, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "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_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 84, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_13free, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_free, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[522])); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_free, __pyx_t_3) < (0)) __PYX_ERR(35, 84, __pyx_L1_error)
  __Pyx_DECREF(__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_mstate_global->__pyx_n_u_MODE_RDONLY); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 98, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(35, 98, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_mstate_global->__pyx_k__129 = __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_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(35, 99, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__128 = ((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_mstate_global->__pyx_n_u_MODE_RDONLY); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 98, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(35, 98, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 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_5, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(35, 99, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":93
 *     # -----------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Open(
 *         cls,
*/
  __pyx_t_11 = PyTuple_Pack(2, __pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_comm, __pyx_mstate_global->__pyx_n_u_Intracomm) < (0)) __PYX_ERR(35, 93, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_filename, __pyx_mstate_global->__pyx_kp_u_PathLike_AnyStr_str_bytes) < (0)) __PYX_ERR(35, 93, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_amode, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(35, 93, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(35, 93, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Self) < (0)) __PYX_ERR(35, 93, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_15Open, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Open, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[523])); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_11);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Open, __pyx_t_3) < (0)) __PYX_ERR(35, 93, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Open); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Open, __pyx_t_5) < (0)) __PYX_ERR(35, 93, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":112
 *         return file
 * 
 *     def Close(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Close a file.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 112, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_17Close, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Close, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[524])); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Close, __pyx_t_3) < (0)) __PYX_ERR(35, 112, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":124
 *         cls,
 *         filename: PathLike[AnyStr] | str | bytes,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(35, 124, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__130 = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":120
 *         if constobj(self): self.ob_mpi = save
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Delete(
 *         cls,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/File.pyx":124
 *         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_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(35, 124, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":120
 *         if constobj(self): self.ob_mpi = save
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Delete(
 *         cls,
*/
  __pyx_t_5 = PyTuple_Pack(1, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_filename, __pyx_mstate_global->__pyx_kp_u_PathLike_AnyStr_str_bytes) < (0)) __PYX_ERR(35, 120, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(35, 120, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 120, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_19Delete, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Delete, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[525])); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_t_5);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Delete, __pyx_t_11) < (0)) __PYX_ERR(35, 120, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_GetNameInClass(__pyx_t_11, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Delete); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Delete, __pyx_t_3) < (0)) __PYX_ERR(35, 120, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":133
 *         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(35, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_size_2, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(35, 133, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 133, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_21Set_size, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Set_size, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[526])); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Set_size, __pyx_t_11) < (0)) __PYX_ERR(35, 133, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":139
 *         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_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_size_2, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(35, 139, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 139, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_23Preallocate, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Preallocate, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[527])); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Preallocate, __pyx_t_3) < (0)) __PYX_ERR(35, 139, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":145
 *         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(35, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(35, 145, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_25Get_size, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Get_size, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[528])); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Get_size, __pyx_t_11) < (0)) __PYX_ERR(35, 145, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":158
 *             return self.Get_size()
 * 
 *     def Get_amode(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the file access mode.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(35, 158, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_27Get_amode, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Get_amode, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[529])); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Get_amode, __pyx_t_3) < (0)) __PYX_ERR(35, 158, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":174
 *     # ----------
 * 
 *     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(35, 174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Group) < (0)) __PYX_ERR(35, 174, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_29Get_group, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Get_group, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[530])); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Get_group, __pyx_t_11) < (0)) __PYX_ERR(35, 174, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":214
 *     # ---------
 * 
 *     def Set_info(self, Info info: Info) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set new values for the hints associated with a file.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(35, 214, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 214, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_31Set_info, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Set_info, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[531])); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Set_info, __pyx_t_3) < (0)) __PYX_ERR(35, 214, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":220
 *         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(35, 220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(35, 220, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_33Get_info, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Get_info, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[532])); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Get_info, __pyx_t_11) < (0)) __PYX_ERR(35, 220, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":242
 *         self,
 *         Offset disp: int = 0,
 *         Datatype etype: Datatype = BYTE,             # <<<<<<<<<<<<<<
 *         Datatype filetype: Datatype | None = None,
 *         datarep: str = "native",
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_BYTE); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 242, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype))))) __PYX_ERR(35, 242, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__131 = ((struct PyMPIDatatypeObject *)__pyx_t_11);
  __Pyx_GIVEREF((PyObject *)__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":245
 *         Datatype filetype: Datatype | None = None,
 *         datarep: str = "native",
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(35, 245, __pyx_L1_error)
  __pyx_mstate_global->__pyx_k__132 = ((struct PyMPIInfoObject *)__pyx_t_11);
  __Pyx_GIVEREF((PyObject *)__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":242
 *         self,
 *         Offset disp: int = 0,
 *         Datatype etype: Datatype = BYTE,             # <<<<<<<<<<<<<<
 *         Datatype filetype: Datatype | None = None,
 *         datarep: str = "native",
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_BYTE); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 242, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype))))) __PYX_ERR(35, 242, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":245
 *         Datatype filetype: Datatype | None = None,
 *         datarep: str = "native",
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(35, 245, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":239
 *     # ----------
 * 
 *     def Set_view(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset disp: int = 0,
*/
  __pyx_t_5 = PyTuple_Pack(5, __pyx_mstate_global->__pyx_int_0, __pyx_t_11, Py_None, __pyx_mstate_global->__pyx_n_u_native, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_disp, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(35, 239, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_etype, __pyx_mstate_global->__pyx_n_u_Datatype) < (0)) __PYX_ERR(35, 239, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_filetype, __pyx_mstate_global->__pyx_kp_u_Datatype_None) < (0)) __PYX_ERR(35, 239, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_datarep, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(35, 239, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(35, 239, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 239, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_35Set_view, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Set_view, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[533])); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_t_5);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Set_view, __pyx_t_11) < (0)) __PYX_ERR(35, 239, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":258
 *             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_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_tuple_int_Datatype_Datatype_str) < (0)) __PYX_ERR(35, 258, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_37Get_view, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Get_view, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[534])); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Get_view, __pyx_t_3) < (0)) __PYX_ERR(35, 258, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":281
 *     # ---------------------------------
 * 
 *     def Read_at(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_offset, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(35, 281, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 281, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(35, 281, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 281, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_39Read_at, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Read_at, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[535])); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Read_at, __pyx_t_11) < (0)) __PYX_ERR(35, 281, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":295
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Read_at_all(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_offset, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(35, 295, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 295, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(35, 295, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 295, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_41Read_at_all, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Read_at_all, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[536])); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Read_at_all, __pyx_t_3) < (0)) __PYX_ERR(35, 295, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":309
 *             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(35, 309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_offset, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(35, 309, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 309, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(35, 309, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 309, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_43Write_at, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Write_at, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[537])); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Write_at, __pyx_t_11) < (0)) __PYX_ERR(35, 309, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":323
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write_at_all(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 323, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_offset, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(35, 323, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 323, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(35, 323, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 323, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_45Write_at_all, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Write_at_all, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[538])); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 323, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Write_at_all, __pyx_t_3) < (0)) __PYX_ERR(35, 323, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":337
 *             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(35, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_offset, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(35, 337, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 337, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(35, 337, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_47Iread_at, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Iread_at, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[539])); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Iread_at, __pyx_t_11) < (0)) __PYX_ERR(35, 337, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":352
 *         return request
 * 
 *     def Iread_at_all(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 352, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_offset, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(35, 352, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 352, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(35, 352, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_49Iread_at_all, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Iread_at_all, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[540])); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 352, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Iread_at_all, __pyx_t_3) < (0)) __PYX_ERR(35, 352, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":367
 *         return request
 * 
 *     def Iwrite_at(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 367, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_offset, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(35, 367, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 367, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(35, 367, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_51Iwrite_at, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Iwrite_at, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[541])); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 367, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Iwrite_at, __pyx_t_11) < (0)) __PYX_ERR(35, 367, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":382
 *         return request
 * 
 *     def Iwrite_at_all(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 382, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_offset, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(35, 382, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 382, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(35, 382, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_53Iwrite_at_all, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Iwrite_at_all, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[542])); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 382, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Iwrite_at_all, __pyx_t_3) < (0)) __PYX_ERR(35, 382, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":400
 *     # -----------------------------------------
 * 
 *     def Read(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 400, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(35, 400, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 400, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_55Read, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Read, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[543])); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Read, __pyx_t_11) < (0)) __PYX_ERR(35, 400, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":413
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Read_all(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 413, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(35, 413, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 413, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_57Read_all, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Read_all, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[544])); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Read_all, __pyx_t_3) < (0)) __PYX_ERR(35, 413, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":426
 *             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(35, 426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 426, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(35, 426, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 426, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_59Write, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Write, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[545])); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Write, __pyx_t_11) < (0)) __PYX_ERR(35, 426, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":439
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write_all(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 439, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 439, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(35, 439, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 439, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_61Write_all, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Write_all, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[546])); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 439, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Write_all, __pyx_t_3) < (0)) __PYX_ERR(35, 439, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":452
 *             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(35, 452, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 452, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(35, 452, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_63Iread, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Iread, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[547])); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 452, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Iread, __pyx_t_11) < (0)) __PYX_ERR(35, 452, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":466
 *         return request
 * 
 *     def Iread_all(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 466, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 466, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(35, 466, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_65Iread_all, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Iread_all, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[548])); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 466, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Iread_all, __pyx_t_3) < (0)) __PYX_ERR(35, 466, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":480
 *         return request
 * 
 *     def Iwrite(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 480, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 480, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(35, 480, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_67Iwrite, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Iwrite, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[549])); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 480, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Iwrite, __pyx_t_11) < (0)) __PYX_ERR(35, 480, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":494
 *         return request
 * 
 *     def Iwrite_all(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 494, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 494, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(35, 494, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_69Iwrite_all, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Iwrite_all, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[550])); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 494, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Iwrite_all, __pyx_t_3) < (0)) __PYX_ERR(35, 494, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":508
 *         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_mstate_global->__pyx_n_u_SEEK_SET); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 508, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(35, 508, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_mstate_global->__pyx_k__133 = __pyx_t_4;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_SEEK_SET); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 508, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(35, 508, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 508, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_11 = PyTuple_Pack(1, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 508, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 508, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_offset, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(35, 508, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_whence, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(35, 508, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 508, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_71Seek, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Seek, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[551])); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 508, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_t_11);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Seek, __pyx_t_5) < (0)) __PYX_ERR(35, 508, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":514
 *         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_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(35, 514, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_73Get_position, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Get_position, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[552])); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Get_position, __pyx_t_3) < (0)) __PYX_ERR(35, 514, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":525
 *         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(35, 525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_offset, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(35, 525, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(35, 525, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_75Get_byte_offset, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Get_byte_offset, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[553])); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Get_byte_offset, __pyx_t_5) < (0)) __PYX_ERR(35, 525, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":540
 *     # -------------------------------------
 * 
 *     def Read_shared(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 540, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 540, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(35, 540, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 540, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_77Read_shared, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Read_shared, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[554])); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 540, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Read_shared, __pyx_t_3) < (0)) __PYX_ERR(35, 540, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":553
 *             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(35, 553, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 553, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(35, 553, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 553, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_79Write_shared, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Write_shared, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[555])); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 553, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Write_shared, __pyx_t_5) < (0)) __PYX_ERR(35, 553, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":566
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Iread_shared(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 566, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 566, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(35, 566, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_81Iread_shared, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Iread_shared, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[556])); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 566, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Iread_shared, __pyx_t_3) < (0)) __PYX_ERR(35, 566, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":580
 *         return request
 * 
 *     def Iwrite_shared(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 580, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 580, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Request) < (0)) __PYX_ERR(35, 580, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_83Iwrite_shared, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Iwrite_shared, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[557])); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 580, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Iwrite_shared, __pyx_t_5) < (0)) __PYX_ERR(35, 580, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":594
 *         return request
 * 
 *     def Read_ordered(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 594, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 594, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(35, 594, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 594, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_85Read_ordered, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Read_ordered, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[558])); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 594, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Read_ordered, __pyx_t_3) < (0)) __PYX_ERR(35, 594, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":607
 *             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(35, 607, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 607, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(35, 607, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 607, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_87Write_ordered, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Write_ordered, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[559])); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 607, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Write_ordered, __pyx_t_5) < (0)) __PYX_ERR(35, 607, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":623
 *         self,
 *         Offset offset: int,
 *         int whence: int = SEEK_SET,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_SEEK_SET); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 623, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(35, 623, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_mstate_global->__pyx_k__134 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/File.pyx":620
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Seek_shared(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_SEEK_SET); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 623, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "src/mpi4py/MPI.src/File.pyx":623
 *         self,
 *         Offset offset: int,
 *         int whence: int = SEEK_SET,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
*/
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(35, 623, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 623, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "src/mpi4py/MPI.src/File.pyx":620
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Seek_shared(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
*/
  __pyx_t_3 = PyTuple_Pack(1, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(35, 620, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 620, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_offset, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(35, 620, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_whence, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(35, 620, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 620, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_89Seek_shared, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Seek_shared, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[560])); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 620, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Seek_shared, __pyx_t_11) < (0)) __PYX_ERR(35, 620, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":631
 *             self.ob_mpi, offset, whence) )
 * 
 *     def Get_position_shared(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the current position of the shared file pointer.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 631, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(35, 631, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_91Get_position_shared, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Get_position_shared, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[561])); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 631, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Get_position_shared, __pyx_t_5) < (0)) __PYX_ERR(35, 631, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":648
 *     # explicit offset
 * 
 *     def Read_at_all_begin(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 648, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_offset, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(35, 648, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 648, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 648, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_93Read_at_all_begin, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Read_at_all_begin, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[562])); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 648, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Read_at_all_begin, __pyx_t_11) < (0)) __PYX_ERR(35, 648, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":660
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype) )
 * 
 *     def Read_at_all_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 660, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 660, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(35, 660, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 660, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_95Read_at_all_end, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Read_at_all_end, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[563])); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 660, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Read_at_all_end, __pyx_t_5) < (0)) __PYX_ERR(35, 660, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":673
 *             self.ob_mpi, m.buf, statusp) )
 * 
 *     def Write_at_all_begin(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 673, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_offset, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(35, 673, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 673, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 673, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_97Write_at_all_begin, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Write_at_all_begin, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[564])); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 673, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Write_at_all_begin, __pyx_t_11) < (0)) __PYX_ERR(35, 673, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":685
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype) )
 * 
 *     def Write_at_all_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 685, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 685, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(35, 685, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 685, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_99Write_at_all_end, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Write_at_all_end, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[565])); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 685, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Write_at_all_end, __pyx_t_5) < (0)) __PYX_ERR(35, 685, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":700
 *     # individual file pointer
 * 
 *     def Read_all_begin(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 700, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 700, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 700, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_101Read_all_begin, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Read_all_begin, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[566])); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 700, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Read_all_begin, __pyx_t_11) < (0)) __PYX_ERR(35, 700, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":711
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 *     def Read_all_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 711, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 711, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(35, 711, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 711, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_103Read_all_end, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Read_all_end, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[567])); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 711, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Read_all_end, __pyx_t_5) < (0)) __PYX_ERR(35, 711, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":724
 *             self.ob_mpi, m.buf, statusp) )
 * 
 *     def Write_all_begin(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 724, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 724, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 724, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_105Write_all_begin, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Write_all_begin, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[568])); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 724, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Write_all_begin, __pyx_t_11) < (0)) __PYX_ERR(35, 724, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":735
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 *     def Write_all_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 735, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 735, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(35, 735, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 735, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_107Write_all_end, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Write_all_end, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[569])); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 735, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Write_all_end, __pyx_t_5) < (0)) __PYX_ERR(35, 735, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":750
 *     # shared file pointer
 * 
 *     def Read_ordered_begin(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 750, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 750, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 750, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_109Read_ordered_begin, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Read_ordered_begin, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[570])); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 750, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Read_ordered_begin, __pyx_t_11) < (0)) __PYX_ERR(35, 750, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":761
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 *     def Read_ordered_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 761, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 761, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(35, 761, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 761, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_111Read_ordered_end, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Read_ordered_end, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[571])); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 761, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Read_ordered_end, __pyx_t_5) < (0)) __PYX_ERR(35, 761, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":774
 *             self.ob_mpi, m.buf, statusp) )
 * 
 *     def Write_ordered_begin(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 774, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 774, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 774, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_113Write_ordered_begin, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Write_ordered_begin, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[572])); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 774, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Write_ordered_begin, __pyx_t_11) < (0)) __PYX_ERR(35, 774, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":785
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 *     def Write_ordered_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 785, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_buf, __pyx_mstate_global->__pyx_n_u_BufSpec) < (0)) __PYX_ERR(35, 785, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Status_None) < (0)) __PYX_ERR(35, 785, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 785, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_115Write_ordered_end, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Write_ordered_end, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[573])); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 785, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Write_ordered_end, __pyx_t_5) < (0)) __PYX_ERR(35, 785, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":801
 *     # ---------------------
 * 
 *     def Get_type_extent(self, Datatype datatype: Datatype) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the extent of datatype in the file.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 801, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_datatype, __pyx_mstate_global->__pyx_n_u_Datatype) < (0)) __PYX_ERR(35, 801, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(35, 801, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_117Get_type_extent, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Get_type_extent, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[574])); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 801, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Get_type_extent, __pyx_t_11) < (0)) __PYX_ERR(35, 801, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":813
 *     # -------------------------
 * 
 *     def Set_atomicity(self, bint flag: bool) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the atomicity mode.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 813, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_flag, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(35, 813, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 813, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_119Set_atomicity, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Set_atomicity, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[575])); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 813, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Set_atomicity, __pyx_t_5) < (0)) __PYX_ERR(35, 813, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":819
 *         with nogil: CHKERR( MPI_File_set_atomicity(self.ob_mpi, flag) )
 * 
 *     def Get_atomicity(self) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Return the atomicity mode.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 819, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(35, 819, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_121Get_atomicity, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Get_atomicity, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[576])); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 819, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Get_atomicity, __pyx_t_11) < (0)) __PYX_ERR(35, 819, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":835
 *             self.Set_atomicity(value)
 * 
 *     def Sync(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Causes all previous writes to be transferred to the storage device.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 835, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 835, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_123Sync, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Sync, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[577])); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 835, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Sync, __pyx_t_5) < (0)) __PYX_ERR(35, 835, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":844
 *     # --------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_errhandler(
 *         cls,
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 844, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_errhandler_fn, __pyx_mstate_global->__pyx_kp_u_Callable_File_int_None) < (0)) __PYX_ERR(35, 844, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Errhandler) < (0)) __PYX_ERR(35, 844, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_125Create_errhandler, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Create_errhandler, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[578])); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 844, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Create_errhandler, __pyx_t_11) < (0)) __PYX_ERR(35, 844, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_GetNameInClass(__pyx_t_11, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Create_errhandler); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 844, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = __Pyx_Method_ClassMethod(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 844, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Create_errhandler, __pyx_t_5) < (0)) __PYX_ERR(35, 844, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":862
 *         return errhandler
 * 
 *     def Get_errhandler(self) -> Errhandler:             # <<<<<<<<<<<<<<
 *         """
 *         Get the error handler for a file.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 862, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Errhandler) < (0)) __PYX_ERR(35, 862, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_127Get_errhandler, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Get_errhandler, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[579])); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 862, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Get_errhandler, __pyx_t_11) < (0)) __PYX_ERR(35, 862, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":870
 *         return errhandler
 * 
 *     def Set_errhandler(self, Errhandler errhandler: Errhandler) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the error handler for a file.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 870, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_errhandler, __pyx_mstate_global->__pyx_n_u_Errhandler) < (0)) __PYX_ERR(35, 870, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 870, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_129Set_errhandler, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Set_errhandler, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[580])); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 870, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Set_errhandler, __pyx_t_5) < (0)) __PYX_ERR(35, 870, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":876
 *         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_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 876, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_errorcode, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(35, 876, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 876, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_131Call_errhandler, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_Call_errhandler, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[581])); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 876, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_Call_errhandler, __pyx_t_11) < (0)) __PYX_ERR(35, 876, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":885
 *     # --------------
 * 
 *     def toint(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate object to integer handle.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 885, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(35, 885, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_133toint, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_toint, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[582])); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 885, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_toint, __pyx_t_5) < (0)) __PYX_ERR(35, 885, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":891
 *         return MPI_File_toint(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromint(cls, arg: int, /) -> File:
 *         """
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_arg, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(35, 891, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_File) < (0)) __PYX_ERR(35, 891, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_135fromint, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_fromint, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[583])); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_fromint, __pyx_t_11) < (0)) __PYX_ERR(35, 891, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_GetNameInClass(__pyx_t_11, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_fromint); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = __Pyx_Method_ClassMethod(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_fromint, __pyx_t_5) < (0)) __PYX_ERR(35, 891, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":901
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 901, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(35, 901, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_137py2f, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_py2f, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[584])); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 901, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_py2f, __pyx_t_11) < (0)) __PYX_ERR(35, 901, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":906
 *         return MPI_File_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> File:
 *         """
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 906, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_arg, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(35, 906, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_File) < (0)) __PYX_ERR(35, 906, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_139f2py, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_File_f2py, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[585])); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 906, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_f2py, __pyx_t_5) < (0)) __PYX_ERR(35, 906, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_GetNameInClass(__pyx_t_5, (PyObject*)__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_f2py); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 906, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = __Pyx_Method_ClassMethod(__pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 906, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File, __pyx_mstate_global->__pyx_n_u_f2py, __pyx_t_11) < (0)) __PYX_ERR(35, 906, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":913
 * 
 * 
 * cdef File __FILE_NULL__ = def_File( MPI_FILE_NULL , "FILE_NULL" )             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_File(MPI_FILE_NULL, __pyx_mstate_global->__pyx_n_u_FILE_NULL)); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 913, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___FILE_NULL__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___FILE_NULL__, ((struct PyMPIFileObject *)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":919
 * # -----------------------
 * 
 * FILE_NULL = __FILE_NULL__  #: Null file handle             # <<<<<<<<<<<<<<
 * 
 * 
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_FILE_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___FILE_NULL__)) < (0)) __PYX_ERR(35, 919, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":925
 * # ---------------------------------
 * 
 * def Register_datarep(             # <<<<<<<<<<<<<<
 *     datarep: str,
 *     read_fn: Callable[[Buffer, Datatype, int, Buffer, int], None],
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_11)) __PYX_ERR(35, 925, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_datarep, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(35, 925, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_read_fn, __pyx_mstate_global->__pyx_kp_u_Callable_Buffer_Datatype_int_Buf) < (0)) __PYX_ERR(35, 925, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_write_fn, __pyx_mstate_global->__pyx_kp_u_Callable_Buffer_Datatype_int_Buf) < (0)) __PYX_ERR(35, 925, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_extent_fn, __pyx_mstate_global->__pyx_kp_u_Callable_Datatype_int) < (0)) __PYX_ERR(35, 925, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(35, 925, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_53Register_datarep, 0, __pyx_mstate_global->__pyx_n_u_Register_datarep, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[586])); if (unlikely(!__pyx_t_5)) __PYX_ERR(35, 925, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Register_datarep, __pyx_t_5) < (0)) __PYX_ERR(35, 925, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":100
 * # -----------------
 * 
 * def Alloc_mem(Aint size: int, Info info: Info = INFO_NULL) -> buffer:             # <<<<<<<<<<<<<<
 *     """
 *     Allocate memory for message passing and remote memory access.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(36, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_size_2, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(36, 100, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_info, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(36, 100, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_buffer) < (0)) __PYX_ERR(36, 100, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_55Alloc_mem, 0, __pyx_mstate_global->__pyx_n_u_Alloc_mem, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[587])); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  if (!__Pyx_CyFunction_InitDefaults(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI___pyx_defaults1)) __PYX_ERR(36, 100, __pyx_L1_error)
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(36, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(36, 100, __pyx_L1_error)
  __Pyx_CyFunction_Defaults(struct __pyx_defaults1, __pyx_t_11)->arg0 = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  __Pyx_CyFunction_SetDefaultsGetter(__pyx_t_11, __pyx_pf_6mpi4py_3MPI_118__defaults__);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Alloc_mem, __pyx_t_11) < (0)) __PYX_ERR(36, 100, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":109
 * 
 * 
 * def Free_mem(mem: buffer) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Free memory allocated with `Alloc_mem`.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_mem, __pyx_mstate_global->__pyx_n_u_buffer) < (0)) __PYX_ERR(36, 109, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(36, 109, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_57Free_mem, 0, __pyx_mstate_global->__pyx_n_u_Free_mem, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[588])); if (unlikely(!__pyx_t_5)) __PYX_ERR(36, 109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Free_mem, __pyx_t_5) < (0)) __PYX_ERR(36, 109, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":122
 * # -----------------------
 * 
 * def Init() -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Initialize the MPI execution environment.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(36, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(36, 122, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_59Init, 0, __pyx_mstate_global->__pyx_n_u_Init, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[589])); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Init, __pyx_t_11) < (0)) __PYX_ERR(36, 122, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":130
 * 
 * 
 * def Finalize() -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Terminate the MPI execution environment.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(36, 130, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_61Finalize, 0, __pyx_mstate_global->__pyx_n_u_Finalize, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[590])); if (unlikely(!__pyx_t_5)) __PYX_ERR(36, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Finalize, __pyx_t_5) < (0)) __PYX_ERR(36, 130, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":141
 * # -------------------------------
 * 
 * THREAD_SINGLE     = MPI_THREAD_SINGLE             # <<<<<<<<<<<<<<
 * #: Only one thread will execute
 * 
*/
  __pyx_t_5 = __Pyx_PyLong_From___pyx_anon_enum(MPI_THREAD_SINGLE); if (unlikely(!__pyx_t_5)) __PYX_ERR(36, 141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_THREAD_SINGLE, __pyx_t_5) < (0)) __PYX_ERR(36, 141, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":144
 * #: Only one thread will execute
 * 
 * THREAD_FUNNELED   = MPI_THREAD_FUNNELED             # <<<<<<<<<<<<<<
 * #: MPI calls are *funneled* to the main thread
 * 
*/
  __pyx_t_5 = __Pyx_PyLong_From___pyx_anon_enum(MPI_THREAD_FUNNELED); if (unlikely(!__pyx_t_5)) __PYX_ERR(36, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_THREAD_FUNNELED, __pyx_t_5) < (0)) __PYX_ERR(36, 144, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":147
 * #: MPI calls are *funneled* to the main thread
 * 
 * THREAD_SERIALIZED = MPI_THREAD_SERIALIZED             # <<<<<<<<<<<<<<
 * #: MPI calls are *serialized*
 * 
*/
  __pyx_t_5 = __Pyx_PyLong_From___pyx_anon_enum(MPI_THREAD_SERIALIZED); if (unlikely(!__pyx_t_5)) __PYX_ERR(36, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_THREAD_SERIALIZED, __pyx_t_5) < (0)) __PYX_ERR(36, 147, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":150
 * #: MPI calls are *serialized*
 * 
 * THREAD_MULTIPLE   = MPI_THREAD_MULTIPLE             # <<<<<<<<<<<<<<
 * #: Multiple threads may call MPI
 * 
*/
  __pyx_t_5 = __Pyx_PyLong_From___pyx_anon_enum(MPI_THREAD_MULTIPLE); if (unlikely(!__pyx_t_5)) __PYX_ERR(36, 150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_THREAD_MULTIPLE, __pyx_t_5) < (0)) __PYX_ERR(36, 150, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":154
 * 
 * 
 * def Init_thread(int required: int = THREAD_MULTIPLE) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Initialize the MPI execution environment.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(36, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_required, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(36, 154, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(36, 154, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_63Init_thread, 0, __pyx_mstate_global->__pyx_n_u_Init_thread, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[591])); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  if (!__Pyx_CyFunction_InitDefaults(__pyx_t_11, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI___pyx_defaults)) __PYX_ERR(36, 154, __pyx_L1_error)
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_THREAD_MULTIPLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(36, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(36, 154, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_CyFunction_Defaults(struct __pyx_defaults, __pyx_t_11)->arg0 = __pyx_t_4;
  __Pyx_CyFunction_SetDefaultsGetter(__pyx_t_11, __pyx_pf_6mpi4py_3MPI_120__defaults__);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Init_thread, __pyx_t_11) < (0)) __PYX_ERR(36, 154, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":164
 * 
 * 
 * def Query_thread() -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Return the level of thread support provided by the MPI library.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(36, 164, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_65Query_thread, 0, __pyx_mstate_global->__pyx_n_u_Query_thread, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[592])); if (unlikely(!__pyx_t_5)) __PYX_ERR(36, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Query_thread, __pyx_t_5) < (0)) __PYX_ERR(36, 164, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":173
 * 
 * 
 * def Is_thread_main() -> bool:             # <<<<<<<<<<<<<<
 *     """
 *     Indicate whether this thread called `Init` or `Init_thread`.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(36, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(36, 173, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_67Is_thread_main, 0, __pyx_mstate_global->__pyx_n_u_Is_thread_main, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[593])); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Is_thread_main, __pyx_t_11) < (0)) __PYX_ERR(36, 173, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":182
 * 
 * 
 * def Is_initialized() -> bool:             # <<<<<<<<<<<<<<
 *     """
 *     Indicate whether `Init` has been called.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(36, 182, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_69Is_initialized, 0, __pyx_mstate_global->__pyx_n_u_Is_initialized, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[594])); if (unlikely(!__pyx_t_5)) __PYX_ERR(36, 182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Is_initialized, __pyx_t_5) < (0)) __PYX_ERR(36, 182, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":191
 * 
 * 
 * def Is_finalized() -> bool:             # <<<<<<<<<<<<<<
 *     """
 *     Indicate whether `Finalize` has completed.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(36, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(36, 191, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_71Is_finalized, 0, __pyx_mstate_global->__pyx_n_u_Is_finalized, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[595])); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Is_finalized, __pyx_t_11) < (0)) __PYX_ERR(36, 191, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":206
 * # -----------------
 * 
 * VERSION    = MPI_VERSION             # <<<<<<<<<<<<<<
 * SUBVERSION = MPI_SUBVERSION
 * 
*/
  __pyx_t_11 = __Pyx_PyLong_From___pyx_anon_enum(MPI_VERSION); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_VERSION, __pyx_t_11) < (0)) __PYX_ERR(36, 206, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":207
 * 
 * VERSION    = MPI_VERSION
 * SUBVERSION = MPI_SUBVERSION             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_11 = __Pyx_PyLong_From___pyx_anon_enum(MPI_SUBVERSION); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SUBVERSION, __pyx_t_11) < (0)) __PYX_ERR(36, 207, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":210
 * 
 * 
 * def Get_version() -> tuple[int, int]:             # <<<<<<<<<<<<<<
 *     """
 *     Obtain the version number of the MPI standard.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_tuple_int_int) < (0)) __PYX_ERR(36, 210, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_73Get_version, 0, __pyx_mstate_global->__pyx_n_u_Get_version, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[596])); if (unlikely(!__pyx_t_5)) __PYX_ERR(36, 210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Get_version, __pyx_t_5) < (0)) __PYX_ERR(36, 210, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":220
 * 
 * 
 * def Get_library_version() -> str:             # <<<<<<<<<<<<<<
 *     """
 *     Obtain the version string of the MPI library.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(36, 220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(36, 220, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_75Get_library_version, 0, __pyx_mstate_global->__pyx_n_u_Get_library_version, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[597])); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Get_library_version, __pyx_t_11) < (0)) __PYX_ERR(36, 220, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":233
 * # -------
 * 
 * def Get_abi_version() -> tuple[int, int]:             # <<<<<<<<<<<<<<
 *     """
 *     Obtain the MPI ABI version number.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_tuple_int_int) < (0)) __PYX_ERR(36, 233, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_77Get_abi_version, 0, __pyx_mstate_global->__pyx_n_u_Get_abi_version, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[598])); if (unlikely(!__pyx_t_5)) __PYX_ERR(36, 233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Get_abi_version, __pyx_t_5) < (0)) __PYX_ERR(36, 233, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":243
 * 
 * 
 * def Get_abi_info() -> Info:             # <<<<<<<<<<<<<<
 *     """
 *     Obtain information about the MPI ABI.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(36, 243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(36, 243, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_79Get_abi_info, 0, __pyx_mstate_global->__pyx_n_u_Get_abi_info, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[599])); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Get_abi_info, __pyx_t_11) < (0)) __PYX_ERR(36, 243, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":252
 * 
 * 
 * def Get_abi_fortran_info() -> Info:             # <<<<<<<<<<<<<<
 *     """
 *     Obtain information about the Fortran MPI ABI.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 252, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(36, 252, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_81Get_abi_fortran_info, 0, __pyx_mstate_global->__pyx_n_u_Get_abi_fortran_info, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[600])); if (unlikely(!__pyx_t_5)) __PYX_ERR(36, 252, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Get_abi_fortran_info, __pyx_t_5) < (0)) __PYX_ERR(36, 252, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":264
 * # ----------------------
 * 
 * def Get_processor_name() -> str:             # <<<<<<<<<<<<<<
 *     """
 *     Obtain the name of the calling processor.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(36, 264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(36, 264, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_83Get_processor_name, 0, __pyx_mstate_global->__pyx_n_u_Get_processor_name, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[601])); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Get_processor_name, __pyx_t_11) < (0)) __PYX_ERR(36, 264, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":274
 * 
 * 
 * def Get_hw_resource_info() -> Info:             # <<<<<<<<<<<<<<
 *     """
 *     Obtain information about the hardware platform of the calling processor.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Info) < (0)) __PYX_ERR(36, 274, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_85Get_hw_resource_info, 0, __pyx_mstate_global->__pyx_n_u_Get_hw_resource_info, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[602])); if (unlikely(!__pyx_t_5)) __PYX_ERR(36, 274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Get_hw_resource_info, __pyx_t_5) < (0)) __PYX_ERR(36, 274, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":286
 * # --------------------------
 * 
 * def Wtime() -> float:             # <<<<<<<<<<<<<<
 *     """
 *     Return an elapsed time on the calling processor.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(36, 286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_float) < (0)) __PYX_ERR(36, 286, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_87Wtime, 0, __pyx_mstate_global->__pyx_n_u_Wtime, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[603])); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Wtime, __pyx_t_11) < (0)) __PYX_ERR(36, 286, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":293
 * 
 * 
 * def Wtick() -> float:             # <<<<<<<<<<<<<<
 *     """
 *     Return the resolution of `Wtime`.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 293, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_float) < (0)) __PYX_ERR(36, 293, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_89Wtick, 0, __pyx_mstate_global->__pyx_n_u_Wtick, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[604])); if (unlikely(!__pyx_t_5)) __PYX_ERR(36, 293, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Wtick, __pyx_t_5) < (0)) __PYX_ERR(36, 293, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":303
 * # --------------------
 * 
 * def Pcontrol(int level: int) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Control profiling.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(36, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_level, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(36, 303, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(36, 303, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_91Pcontrol, 0, __pyx_mstate_global->__pyx_n_u_Pcontrol, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[605])); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Pcontrol, __pyx_t_11) < (0)) __PYX_ERR(36, 303, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":315
 * 
 * # MPI-1
 * MAX_PROCESSOR_NAME = MPI_MAX_PROCESSOR_NAME             # <<<<<<<<<<<<<<
 * MAX_ERROR_STRING   = MPI_MAX_ERROR_STRING
 * # MPI-2
*/
  __pyx_t_11 = __Pyx_PyLong_From___pyx_anon_enum(MPI_MAX_PROCESSOR_NAME); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 315, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MAX_PROCESSOR_NAME, __pyx_t_11) < (0)) __PYX_ERR(36, 315, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":316
 * # 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_11 = __Pyx_PyLong_From___pyx_anon_enum(MPI_MAX_ERROR_STRING); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 316, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MAX_ERROR_STRING, __pyx_t_11) < (0)) __PYX_ERR(36, 316, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":318
 * 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_11 = __Pyx_PyLong_From___pyx_anon_enum(MPI_MAX_PORT_NAME); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MAX_PORT_NAME, __pyx_t_11) < (0)) __PYX_ERR(36, 318, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":319
 * # 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_11 = __Pyx_PyLong_From___pyx_anon_enum(MPI_MAX_INFO_KEY); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MAX_INFO_KEY, __pyx_t_11) < (0)) __PYX_ERR(36, 319, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":320
 * 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_11 = __Pyx_PyLong_From___pyx_anon_enum(MPI_MAX_INFO_VAL); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MAX_INFO_VAL, __pyx_t_11) < (0)) __PYX_ERR(36, 320, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":321
 * 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_11 = __Pyx_PyLong_From___pyx_anon_enum(MPI_MAX_OBJECT_NAME); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MAX_OBJECT_NAME, __pyx_t_11) < (0)) __PYX_ERR(36, 321, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":322
 * 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_11 = __Pyx_PyLong_From___pyx_anon_enum(MPI_MAX_DATAREP_STRING); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MAX_DATAREP_STRING, __pyx_t_11) < (0)) __PYX_ERR(36, 322, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":324
 * 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_11 = __Pyx_PyLong_From___pyx_anon_enum(MPI_MAX_LIBRARY_VERSION_STRING); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 324, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MAX_LIBRARY_VERSION_STRING, __pyx_t_11) < (0)) __PYX_ERR(36, 324, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":326
 * 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_11 = __Pyx_PyLong_From___pyx_anon_enum(MPI_MAX_PSET_NAME_LEN); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MAX_PSET_NAME_LEN, __pyx_t_11) < (0)) __PYX_ERR(36, 326, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":327
 * # MPI-4
 * MAX_PSET_NAME_LEN  = MPI_MAX_PSET_NAME_LEN
 * MAX_STRINGTAG_LEN  = MPI_MAX_STRINGTAG_LEN             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  __pyx_t_11 = __Pyx_PyLong_From___pyx_anon_enum(MPI_MAX_STRINGTAG_LEN); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 327, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MAX_STRINGTAG_LEN, __pyx_t_11) < (0)) __PYX_ERR(36, 327, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":11
 * # -----------------------------------------------------------------------------
 * 
 * cdef dict TypeDict = { }             # <<<<<<<<<<<<<<
 * _typedict = TypeDict
 * 
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_11)) __PYX_ERR(37, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_TypeDict);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_TypeDict, ((PyObject*)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":12
 * 
 * cdef dict TypeDict = { }
 * _typedict = TypeDict             # <<<<<<<<<<<<<<
 * 
 * # boolean (C++)
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_typedict, __pyx_v_6mpi4py_3MPI_TypeDict) < (0)) __PYX_ERR(37, 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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_BOOL__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k__135, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 15, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_BOOL__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k__135, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 17, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___SIGNED_CHAR__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_b, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___SHORT__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_h, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 20, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_i, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 21, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_l, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 22, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_LONG__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_q, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 23, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_CHAR__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_B, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 25, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_H, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 26, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_I, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_L, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 28, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 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, "e" , __REAL2__       )
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG_LONG__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_Q, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 29, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":31
 * AddTypeMap(TypeDict, "Q" , __UNSIGNED_LONG_LONG__ )
 * # real floating
 * AddTypeMap(TypeDict, "e" , __REAL2__       )             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "e" , __FLOAT16_T__   )
 * AddTypeMap(TypeDict, "f" , __FLOAT__       )
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL2__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_e, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 31, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":32
 * # real floating
 * AddTypeMap(TypeDict, "e" , __REAL2__       )
 * AddTypeMap(TypeDict, "e" , __FLOAT16_T__   )             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "f" , __FLOAT__       )
 * AddTypeMap(TypeDict, "d" , __DOUBLE__      )
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT16_T__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_e, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 32, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":33
 * AddTypeMap(TypeDict, "e" , __REAL2__       )
 * AddTypeMap(TypeDict, "e" , __FLOAT16_T__   )
 * AddTypeMap(TypeDict, "f" , __FLOAT__       )             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "d" , __DOUBLE__      )
 * AddTypeMap(TypeDict, "g" , __LONG_DOUBLE__ )  # PEP-3118 & NumPy
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_f, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 33, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":34
 * AddTypeMap(TypeDict, "e" , __FLOAT16_T__   )
 * AddTypeMap(TypeDict, "f" , __FLOAT__       )
 * AddTypeMap(TypeDict, "d" , __DOUBLE__      )             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "g" , __LONG_DOUBLE__ )  # PEP-3118 & NumPy
 * # complex floating (F90)
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_d, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 34, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":35
 * AddTypeMap(TypeDict, "f" , __FLOAT__       )
 * AddTypeMap(TypeDict, "d" , __DOUBLE__      )
 * AddTypeMap(TypeDict, "g" , __LONG_DOUBLE__ )  # PEP-3118 & NumPy             # <<<<<<<<<<<<<<
 * # complex floating (F90)
 * AddTypeMap(TypeDict, "Ze" , __COMPLEX4__       )
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_DOUBLE__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_g, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 35, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":37
 * AddTypeMap(TypeDict, "g" , __LONG_DOUBLE__ )  # PEP-3118 & NumPy
 * # complex floating (F90)
 * AddTypeMap(TypeDict, "Ze" , __COMPLEX4__       )             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "Zf" , __COMPLEX8__       )  # PEP-3118
 * AddTypeMap(TypeDict, "Zd" , __COMPLEX16__      )  # PEP-3118
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX4__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_Ze, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 37, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":38
 * # complex floating (F90)
 * AddTypeMap(TypeDict, "Ze" , __COMPLEX4__       )
 * AddTypeMap(TypeDict, "Zf" , __COMPLEX8__       )  # PEP-3118             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "Zd" , __COMPLEX16__      )  # PEP-3118
 * AddTypeMap(TypeDict, "E"  , __COMPLEX4__       )
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX8__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_Zf, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 38, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":39
 * AddTypeMap(TypeDict, "Ze" , __COMPLEX4__       )
 * AddTypeMap(TypeDict, "Zf" , __COMPLEX8__       )  # PEP-3118
 * AddTypeMap(TypeDict, "Zd" , __COMPLEX16__      )  # PEP-3118             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "E"  , __COMPLEX4__       )
 * AddTypeMap(TypeDict, "F"  , __COMPLEX8__       )  # NumPy
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX16__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_Zd, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 39, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":40
 * AddTypeMap(TypeDict, "Zf" , __COMPLEX8__       )  # PEP-3118
 * AddTypeMap(TypeDict, "Zd" , __COMPLEX16__      )  # PEP-3118
 * AddTypeMap(TypeDict, "E"  , __COMPLEX4__       )             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "F"  , __COMPLEX8__       )  # NumPy
 * AddTypeMap(TypeDict, "D"  , __COMPLEX16__      )  # NumPy
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX4__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_E, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 40, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":41
 * AddTypeMap(TypeDict, "Zd" , __COMPLEX16__      )  # PEP-3118
 * AddTypeMap(TypeDict, "E"  , __COMPLEX4__       )
 * AddTypeMap(TypeDict, "F"  , __COMPLEX8__       )  # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "D"  , __COMPLEX16__      )  # NumPy
 * # complex floating (C++)
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX8__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_F, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 41, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":42
 * AddTypeMap(TypeDict, "E"  , __COMPLEX4__       )
 * AddTypeMap(TypeDict, "F"  , __COMPLEX8__       )  # NumPy
 * AddTypeMap(TypeDict, "D"  , __COMPLEX16__      )  # NumPy             # <<<<<<<<<<<<<<
 * # complex floating (C++)
 * AddTypeMap(TypeDict, "Zf" , __CXX_FLOAT_COMPLEX__       )  # PEP-3118
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX16__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_D, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 42, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":44
 * 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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_FLOAT_COMPLEX__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_Zf, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 44, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":45
 * # 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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_DOUBLE_COMPLEX__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_Zd, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 45, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":46
 * 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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_LONG_DOUBLE_COMPLEX__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_Zg, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 46, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":47
 * 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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_FLOAT_COMPLEX__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_F, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 47, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":48
 * 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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_DOUBLE_COMPLEX__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_D, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 48, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":49
 * 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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_LONG_DOUBLE_COMPLEX__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_G, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 49, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":51
 * 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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_FLOAT_COMPLEX__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_Zf, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 51, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":52
 * # 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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_DOUBLE_COMPLEX__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_Zd, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 52, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":53
 * 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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_LONG_DOUBLE_COMPLEX__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_Zg, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 53, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":54
 * 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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_FLOAT_COMPLEX__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_F, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 54, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":55
 * 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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_DOUBLE_COMPLEX__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_D, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 55, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":56
 * AddTypeMap(TypeDict, "F"  , __C_FLOAT_COMPLEX__         )  # NumPy
 * AddTypeMap(TypeDict, "D"  , __C_DOUBLE_COMPLEX__        )  # NumPy
 * AddTypeMap(TypeDict, "G"  , __C_LONG_DOUBLE_COMPLEX__   )  # NumPy             # <<<<<<<<<<<<<<
 * 
 * # integer (F90)
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_LONG_DOUBLE_COMPLEX__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_G, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 56, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":59
 * 
 * # integer (F90)
 * AddTypeMap(TypeDict, "i1"  , __INTEGER1__  )  # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "i2"  , __INTEGER2__  )  # NumPy
 * AddTypeMap(TypeDict, "i4"  , __INTEGER4__  )  # NumPy
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER1__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_i1, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 59, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":60
 * # integer (F90)
 * AddTypeMap(TypeDict, "i1"  , __INTEGER1__  )  # NumPy
 * AddTypeMap(TypeDict, "i2"  , __INTEGER2__  )  # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "i4"  , __INTEGER4__  )  # NumPy
 * AddTypeMap(TypeDict, "i8"  , __INTEGER8__  )  # NumPy
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER2__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_i2, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 60, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":61
 * AddTypeMap(TypeDict, "i1"  , __INTEGER1__  )  # NumPy
 * AddTypeMap(TypeDict, "i2"  , __INTEGER2__  )  # NumPy
 * AddTypeMap(TypeDict, "i4"  , __INTEGER4__  )  # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "i8"  , __INTEGER8__  )  # NumPy
 * AddTypeMap(TypeDict, "i16" , __INTEGER16__ )
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER4__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_i4, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 61, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":62
 * AddTypeMap(TypeDict, "i2"  , __INTEGER2__  )  # NumPy
 * AddTypeMap(TypeDict, "i4"  , __INTEGER4__  )  # NumPy
 * AddTypeMap(TypeDict, "i8"  , __INTEGER8__  )  # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "i16" , __INTEGER16__ )
 * # real floating (F90)
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER8__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_i8, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 62, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":63
 * AddTypeMap(TypeDict, "i4"  , __INTEGER4__  )  # NumPy
 * AddTypeMap(TypeDict, "i8"  , __INTEGER8__  )  # NumPy
 * AddTypeMap(TypeDict, "i16" , __INTEGER16__ )             # <<<<<<<<<<<<<<
 * # real floating (F90)
 * AddTypeMap(TypeDict, "f2"  , __REAL2__     )  # NumPy
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER16__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_i16, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 63, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":65
 * AddTypeMap(TypeDict, "i16" , __INTEGER16__ )
 * # real floating (F90)
 * AddTypeMap(TypeDict, "f2"  , __REAL2__     )  # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "f4"  , __REAL4__     )  # NumPy
 * AddTypeMap(TypeDict, "f8"  , __REAL8__     )  # NumPy
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL2__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_f2, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 65, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":66
 * # real floating (F90)
 * AddTypeMap(TypeDict, "f2"  , __REAL2__     )  # NumPy
 * AddTypeMap(TypeDict, "f4"  , __REAL4__     )  # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "f8"  , __REAL8__     )  # NumPy
 * AddTypeMap(TypeDict, "f16" , __REAL16__    )  # NumPy
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL4__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_f4, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 66, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":67
 * AddTypeMap(TypeDict, "f2"  , __REAL2__     )  # NumPy
 * AddTypeMap(TypeDict, "f4"  , __REAL4__     )  # NumPy
 * AddTypeMap(TypeDict, "f8"  , __REAL8__     )  # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "f16" , __REAL16__    )  # NumPy
 * # complex floating (F90)
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL8__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_f8, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 67, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":68
 * AddTypeMap(TypeDict, "f4"  , __REAL4__     )  # NumPy
 * AddTypeMap(TypeDict, "f8"  , __REAL8__     )  # NumPy
 * AddTypeMap(TypeDict, "f16" , __REAL16__    )  # NumPy             # <<<<<<<<<<<<<<
 * # complex floating (F90)
 * AddTypeMap(TypeDict, "c4"  , __COMPLEX4__  )  # NumPy
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL16__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_f16, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 68, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":70
 * AddTypeMap(TypeDict, "f16" , __REAL16__    )  # NumPy
 * # complex floating (F90)
 * AddTypeMap(TypeDict, "c4"  , __COMPLEX4__  )  # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "c8"  , __COMPLEX8__  )  # NumPy
 * AddTypeMap(TypeDict, "c16" , __COMPLEX16__ )  # NumPy
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX4__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_c4, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 70, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":71
 * # complex floating (F90)
 * AddTypeMap(TypeDict, "c4"  , __COMPLEX4__  )  # NumPy
 * AddTypeMap(TypeDict, "c8"  , __COMPLEX8__  )  # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "c16" , __COMPLEX16__ )  # NumPy
 * AddTypeMap(TypeDict, "c32" , __COMPLEX32__ )  # NumPy
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX8__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_c8, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 71, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":72
 * AddTypeMap(TypeDict, "c4"  , __COMPLEX4__  )  # NumPy
 * AddTypeMap(TypeDict, "c8"  , __COMPLEX8__  )  # NumPy
 * AddTypeMap(TypeDict, "c16" , __COMPLEX16__ )  # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "c32" , __COMPLEX32__ )  # NumPy
 * # boolean (C99/C++)
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX16__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_c16, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 72, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":73
 * AddTypeMap(TypeDict, "c8"  , __COMPLEX8__  )  # NumPy
 * AddTypeMap(TypeDict, "c16" , __COMPLEX16__ )  # NumPy
 * AddTypeMap(TypeDict, "c32" , __COMPLEX32__ )  # NumPy             # <<<<<<<<<<<<<<
 * # boolean (C99/C++)
 * AddTypeMap(TypeDict, "b1" , __CXX_BOOL__ )  # NumPy
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX32__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_c32, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 73, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":75
 * AddTypeMap(TypeDict, "c32" , __COMPLEX32__ )  # NumPy
 * # boolean (C99/C++)
 * AddTypeMap(TypeDict, "b1" , __CXX_BOOL__ )  # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "b1" , __C_BOOL__   )  # NumPy
 * # signed and unsigned integer (C)
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_BOOL__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_b1, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 75, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":76
 * # 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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_BOOL__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_b1, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 76, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":78
 * 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_13 = ((sizeof(char)) == 1);
  if (__pyx_t_13) {

    /* "src/mpi4py/MPI.src/typemap.pxi":79
 * # 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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___SIGNED_CHAR__);
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_i1, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 79, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":80
 * 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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_CHAR__);
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_u1, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 80, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":78
 * 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":81
 *     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_13 = ((sizeof(short)) == 2);
  if (__pyx_t_13) {

    /* "src/mpi4py/MPI.src/typemap.pxi":82
 *     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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___SHORT__);
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_i2, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 82, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":83
 * 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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__);
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_u2, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 83, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":81
 *     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":84
 *     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_13 = ((sizeof(long)) == 4);
  if (__pyx_t_13) {

    /* "src/mpi4py/MPI.src/typemap.pxi":85
 *     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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG__);
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_i4, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 85, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":86
 * 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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__);
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_u4, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 86, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":84
 *     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":87
 *     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_13 = ((sizeof(int)) == 4);
  if (__pyx_t_13) {

    /* "src/mpi4py/MPI.src/typemap.pxi":88
 *     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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT__);
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_i4, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 88, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":89
 * 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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED__);
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_u4, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 89, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":87
 *     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":90
 *     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_13 = ((sizeof(PY_LONG_LONG)) == 8);
  if (__pyx_t_13) {

    /* "src/mpi4py/MPI.src/typemap.pxi":91
 *     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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_LONG__);
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_i8, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 91, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":92
 * 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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG_LONG__);
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_u8, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 92, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":90
 *     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":93
 *     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_13 = ((sizeof(long)) == 8);
  if (__pyx_t_13) {

    /* "src/mpi4py/MPI.src/typemap.pxi":94
 *     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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG__);
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_i8, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 94, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":95
 * 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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__);
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_u8, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 95, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":93
 *     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":97
 *     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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT8_T__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_i1, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 97, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":98
 * # 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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT16_T__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_i2, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 98, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":99
 * 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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT32_T__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_i4, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 99, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":100
 * 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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT64_T__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_i8, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 100, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":102
 * 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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT8_T__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_u1, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 102, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":103
 * # 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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT16_T__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_u2, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 103, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":104
 * 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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT32_T__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_u4, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 104, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":105
 * 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
 * AddTypeMap(TypeDict, "f2" , __FLOAT16_T__ )  # NumPy
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT64_T__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_u8, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 105, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":107
 * AddTypeMap(TypeDict, "u8" , __UINT64_T__ )  # NumPy
 * # real (C) and complex (C99/C++) floating
 * AddTypeMap(TypeDict, "f2" , __FLOAT16_T__ )  # NumPy             # <<<<<<<<<<<<<<
 * if sizeof(float) == 4:
 *     AddTypeMap(TypeDict, "f4"  , __FLOAT__              )  # NumPy
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT16_T__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_f2, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 107, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":108
 * # real (C) and complex (C99/C++) floating
 * AddTypeMap(TypeDict, "f2" , __FLOAT16_T__ )  # NumPy
 * if sizeof(float) == 4:             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "f4"  , __FLOAT__              )  # NumPy
 *     AddTypeMap(TypeDict, "c8"  , __CXX_FLOAT_COMPLEX__  )  # NumPy
*/
  __pyx_t_13 = ((sizeof(float)) == 4);
  if (__pyx_t_13) {

    /* "src/mpi4py/MPI.src/typemap.pxi":109
 * AddTypeMap(TypeDict, "f2" , __FLOAT16_T__ )  # NumPy
 * 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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT__);
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_f4, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 109, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":110
 * 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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_FLOAT_COMPLEX__);
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_c8, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 110, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":111
 *     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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_FLOAT_COMPLEX__);
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_c8, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 111, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":108
 * # real (C) and complex (C99/C++) floating
 * AddTypeMap(TypeDict, "f2" , __FLOAT16_T__ )  # NumPy
 * if sizeof(float) == 4:             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "f4"  , __FLOAT__              )  # NumPy
 *     AddTypeMap(TypeDict, "c8"  , __CXX_FLOAT_COMPLEX__  )  # NumPy
*/
  }

  /* "src/mpi4py/MPI.src/typemap.pxi":112
 *     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_13 = ((sizeof(double)) == 8);
  if (__pyx_t_13) {

    /* "src/mpi4py/MPI.src/typemap.pxi":113
 *     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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE__);
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_f8, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 113, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":114
 * 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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_DOUBLE_COMPLEX__);
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_c16, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 114, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":115
 *     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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_DOUBLE_COMPLEX__);
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_c16, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 115, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":112
 *     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":116
 *     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_13 = ((sizeof(long double)) == 12);
  if (__pyx_t_13) {

    /* "src/mpi4py/MPI.src/typemap.pxi":117
 *     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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_DOUBLE__);
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_f12, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 117, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":118
 * 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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_LONG_DOUBLE_COMPLEX__);
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_c24, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 118, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":119
 *     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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_LONG_DOUBLE_COMPLEX__);
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_c24, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 119, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":116
 *     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":120
 *     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_13 = ((sizeof(long double)) == 16);
  if (__pyx_t_13) {

    /* "src/mpi4py/MPI.src/typemap.pxi":121
 *     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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_DOUBLE__);
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_f16, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 121, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":122
 * 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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_LONG_DOUBLE_COMPLEX__);
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_c32, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 122, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":123
 *     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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_LONG_DOUBLE_COMPLEX__);
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_c32, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 123, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":120
 *     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":126
 * 
 * # 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_13 = ((sizeof(size_t)) == (sizeof(PY_LONG_LONG)));
  if (__pyx_t_13) {

    /* "src/mpi4py/MPI.src/typemap.pxi":127
 * # 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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_LONG__);
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_n, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 127, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":128
 * 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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG_LONG__);
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_N, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 128, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":126
 * 
 * # 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":129
 *     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_13 = ((sizeof(size_t)) == (sizeof(long)));
  if (__pyx_t_13) {

    /* "src/mpi4py/MPI.src/typemap.pxi":130
 *     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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG__);
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_n, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 130, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":131
 * 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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__);
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_N, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 131, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":129
 *     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":132
 *     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_13 = ((sizeof(size_t)) == (sizeof(int)));
  if (__pyx_t_13) {

    /* "src/mpi4py/MPI.src/typemap.pxi":133
 *     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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT__);
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_n, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 133, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":134
 * 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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED__);
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_N, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 134, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":132
 *     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":135
 *     AddTypeMap(TypeDict, "n" , __INT__                )  # ~> 32bit
 *     AddTypeMap(TypeDict, "N" , __UNSIGNED__           )  # ~> 32bit
 * if sizeof(size_t) == sizeof(MPI_Count):             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "n" , __COUNT__              )
 * 
*/
  __pyx_t_13 = ((sizeof(size_t)) == (sizeof(MPI_Count)));
  if (__pyx_t_13) {

    /* "src/mpi4py/MPI.src/typemap.pxi":136
 *     AddTypeMap(TypeDict, "N" , __UNSIGNED__           )  # ~> 32bit
 * if sizeof(size_t) == sizeof(MPI_Count):
 *     AddTypeMap(TypeDict, "n" , __COUNT__              )             # <<<<<<<<<<<<<<
 * 
 * # intptr_t and uintptr_t (C99)
*/
    __pyx_t_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COUNT__);
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_n, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 136, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":135
 *     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":139
 * 
 * # 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_13 = ((sizeof(Py_intptr_t)) == (sizeof(PY_LONG_LONG)));
  if (__pyx_t_13) {

    /* "src/mpi4py/MPI.src/typemap.pxi":140
 * # 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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_LONG__);
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_p, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 140, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":141
 * 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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG_LONG__);
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_P, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 141, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":139
 * 
 * # 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":142
 *     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_13 = ((sizeof(Py_intptr_t)) == (sizeof(long)));
  if (__pyx_t_13) {

    /* "src/mpi4py/MPI.src/typemap.pxi":143
 *     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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG__);
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_p, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 143, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":144
 * 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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__);
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_P, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 144, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":142
 *     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":145
 *     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_13 = ((sizeof(Py_intptr_t)) == (sizeof(int)));
  if (__pyx_t_13) {

    /* "src/mpi4py/MPI.src/typemap.pxi":146
 *     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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT__);
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_p, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 146, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":147
 * 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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED__);
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_P, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 147, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":145
 *     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":148
 *     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_13 = ((sizeof(Py_intptr_t)) == (sizeof(MPI_Aint)));
  if (__pyx_t_13) {

    /* "src/mpi4py/MPI.src/typemap.pxi":149
 *     AddTypeMap(TypeDict, "P" , __UNSIGNED__           )  # ~> NumPy 32bit
 * if sizeof(Py_intptr_t) == sizeof(MPI_Aint):
 *     AddTypeMap(TypeDict, "p" , __AINT__               )  # NumPy             # <<<<<<<<<<<<<<
 * 
 * # character
*/
    __pyx_t_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___AINT__);
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_p, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 149, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":148
 *     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":152
 * 
 * # character
 * AddTypeMap(TypeDict, "c" , __CHAR__ )  # PEP-3118 & NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "a" , __CHAR__ )  # NumPy
 * AddTypeMap(TypeDict, "S" , __CHAR__ )  # NumPy
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CHAR__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_c, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 152, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":153
 * # 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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CHAR__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_a, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 153, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":154
 * 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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CHAR__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_S, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 154, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":155
 * 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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CHAR__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_S1, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 155, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":156
 * 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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CHAR__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_s, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 156, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":157
 * 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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CHAR__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_1s, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 157, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":159
 * 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_13 = ((sizeof(wchar_t)) == 4);
  if (__pyx_t_13) {

    /* "src/mpi4py/MPI.src/typemap.pxi":160
 * # wide character
 * if sizeof(wchar_t) == 4:
 *     AddTypeMap(TypeDict, "U" , __WCHAR__          )  # NumPy             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "U1", __WCHAR__          )  # NumPy
 * # UTF-16/UCS-2
*/
    __pyx_t_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___WCHAR__);
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_U, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 160, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":161
 * 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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___WCHAR__);
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_U1, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 161, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":159
 * 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":163
 *     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_13 = ((sizeof(short)) == 2);
  if (__pyx_t_13) {

    /* "src/mpi4py/MPI.src/typemap.pxi":164
 * # 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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__);
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_u, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 164, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":165
 * 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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__);
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_1u, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 165, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":163
 *     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":167
 *     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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT16_T__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_u, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 167, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":168
 * 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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT16_T__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_1u, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 168, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":169
 *     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_13 = ((sizeof(wchar_t)) == 2);
  if (__pyx_t_13) {

    /* "src/mpi4py/MPI.src/typemap.pxi":170
 *     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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___WCHAR__);
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_u, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 170, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":171
 * 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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___WCHAR__);
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_1u, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 171, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":169
 *     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":173
 *     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_13 = ((sizeof(int)) == 4);
  if (__pyx_t_13) {

    /* "src/mpi4py/MPI.src/typemap.pxi":174
 * # 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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED__);
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_w, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 174, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":175
 * 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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED__);
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_1w, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 175, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":173
 *     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":177
 *     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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT32_T__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_w, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 177, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":178
 * 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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT32_T__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_1w, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 178, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":179
 *     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_13 = ((sizeof(wchar_t)) == 4);
  if (__pyx_t_13) {

    /* "src/mpi4py/MPI.src/typemap.pxi":180
 *     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_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___WCHAR__);
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_w, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 180, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":181
 * 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_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___WCHAR__);
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_1w, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 181, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":179
 *     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":183
 *     AddTypeMap(TypeDict, "1w", __WCHAR__          )  # PEP-3118
 * # datetime
 * AddTypeMap(TypeDict, "M" , __INT64_T__ )  # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "M8", __INT64_T__ )  # NumPy
 * # timedelta
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT64_T__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_M, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 183, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":184
 * # datetime
 * AddTypeMap(TypeDict, "M" , __INT64_T__ )  # NumPy
 * AddTypeMap(TypeDict, "M8", __INT64_T__ )  # NumPy             # <<<<<<<<<<<<<<
 * # timedelta
 * AddTypeMap(TypeDict, "m" , __INT64_T__ )  # NumPy
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT64_T__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_M8, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 184, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":186
 * AddTypeMap(TypeDict, "M8", __INT64_T__ )  # NumPy
 * # timedelta
 * AddTypeMap(TypeDict, "m" , __INT64_T__ )  # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "m8", __INT64_T__ )  # NumPy
 * 
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT64_T__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_m, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 186, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":187
 * # timedelta
 * AddTypeMap(TypeDict, "m" , __INT64_T__ )  # NumPy
 * AddTypeMap(TypeDict, "m8", __INT64_T__ )  # NumPy             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT64_T__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_m8, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 187, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":191
 * # -----------------------------------------------------------------------------
 * 
 * cdef dict CTypeDict = { }             # <<<<<<<<<<<<<<
 * _typedict_c = CTypeDict
 * 
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_CTypeDict);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_CTypeDict, ((PyObject*)__pyx_t_5));
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":192
 * 
 * cdef dict CTypeDict = { }
 * _typedict_c = CTypeDict             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(CTypeDict, "?" , __C_BOOL__ )
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_typedict_c, __pyx_v_6mpi4py_3MPI_CTypeDict) < (0)) __PYX_ERR(37, 192, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/typemap.pxi":194
 * _typedict_c = CTypeDict
 * 
 * AddTypeMap(CTypeDict, "?" , __C_BOOL__ )             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(CTypeDict, "b" , __SIGNED_CHAR__ )
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_BOOL__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k__135, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 194, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":196
 * AddTypeMap(CTypeDict, "?" , __C_BOOL__ )
 * 
 * AddTypeMap(CTypeDict, "b" , __SIGNED_CHAR__ )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "h" , __SHORT__       )
 * AddTypeMap(CTypeDict, "i" , __INT__         )
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___SIGNED_CHAR__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_b, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 196, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":197
 * 
 * AddTypeMap(CTypeDict, "b" , __SIGNED_CHAR__ )
 * AddTypeMap(CTypeDict, "h" , __SHORT__       )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "i" , __INT__         )
 * AddTypeMap(CTypeDict, "l" , __LONG__        )
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___SHORT__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_h, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 197, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":198
 * AddTypeMap(CTypeDict, "b" , __SIGNED_CHAR__ )
 * AddTypeMap(CTypeDict, "h" , __SHORT__       )
 * AddTypeMap(CTypeDict, "i" , __INT__         )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "l" , __LONG__        )
 * AddTypeMap(CTypeDict, "q" , __LONG_LONG__   )
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_i, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 198, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":199
 * AddTypeMap(CTypeDict, "h" , __SHORT__       )
 * AddTypeMap(CTypeDict, "i" , __INT__         )
 * AddTypeMap(CTypeDict, "l" , __LONG__        )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "q" , __LONG_LONG__   )
 * 
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_l, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 199, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":200
 * AddTypeMap(CTypeDict, "i" , __INT__         )
 * AddTypeMap(CTypeDict, "l" , __LONG__        )
 * AddTypeMap(CTypeDict, "q" , __LONG_LONG__   )             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(CTypeDict, "B" , __UNSIGNED_CHAR__      )
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_LONG__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_q, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 200, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":202
 * AddTypeMap(CTypeDict, "q" , __LONG_LONG__   )
 * 
 * AddTypeMap(CTypeDict, "B" , __UNSIGNED_CHAR__      )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "H" , __UNSIGNED_SHORT__     )
 * AddTypeMap(CTypeDict, "I" , __UNSIGNED__           )
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_CHAR__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_B, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 202, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":203
 * 
 * AddTypeMap(CTypeDict, "B" , __UNSIGNED_CHAR__      )
 * AddTypeMap(CTypeDict, "H" , __UNSIGNED_SHORT__     )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "I" , __UNSIGNED__           )
 * AddTypeMap(CTypeDict, "L" , __UNSIGNED_LONG__      )
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_H, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 203, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":204
 * 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_5 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_I, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 204, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":205
 * AddTypeMap(CTypeDict, "H" , __UNSIGNED_SHORT__     )
 * AddTypeMap(CTypeDict, "I" , __UNSIGNED__           )
 * AddTypeMap(CTypeDict, "L" , __UNSIGNED_LONG__      )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "Q" , __UNSIGNED_LONG_LONG__ )
 * 
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_L, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 205, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":206
 * AddTypeMap(CTypeDict, "I" , __UNSIGNED__           )
 * AddTypeMap(CTypeDict, "L" , __UNSIGNED_LONG__      )
 * AddTypeMap(CTypeDict, "Q" , __UNSIGNED_LONG_LONG__ )             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(CTypeDict, "f" , __FLOAT__       )
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG_LONG__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_Q, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 206, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":208
 * AddTypeMap(CTypeDict, "Q" , __UNSIGNED_LONG_LONG__ )
 * 
 * AddTypeMap(CTypeDict, "f" , __FLOAT__       )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "d" , __DOUBLE__      )
 * AddTypeMap(CTypeDict, "g" , __LONG_DOUBLE__ )
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_f, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 208, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":209
 * 
 * AddTypeMap(CTypeDict, "f" , __FLOAT__       )
 * AddTypeMap(CTypeDict, "d" , __DOUBLE__      )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "g" , __LONG_DOUBLE__ )
 * 
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_d, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 209, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":210
 * AddTypeMap(CTypeDict, "f" , __FLOAT__       )
 * AddTypeMap(CTypeDict, "d" , __DOUBLE__      )
 * AddTypeMap(CTypeDict, "g" , __LONG_DOUBLE__ )             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(CTypeDict, "F" , __C_FLOAT_COMPLEX__       )
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_DOUBLE__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_g, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 210, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":212
 * 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_5 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_FLOAT_COMPLEX__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_F, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 212, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":213
 * 
 * AddTypeMap(CTypeDict, "F" , __C_FLOAT_COMPLEX__       )
 * AddTypeMap(CTypeDict, "D" , __C_DOUBLE_COMPLEX__      )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "G" , __C_LONG_DOUBLE_COMPLEX__ )
 * 
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_DOUBLE_COMPLEX__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_D, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 213, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":214
 * 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_5 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_LONG_DOUBLE_COMPLEX__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_G, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 214, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":216
 * AddTypeMap(CTypeDict, "G" , __C_LONG_DOUBLE_COMPLEX__ )
 * 
 * AddTypeMap(CTypeDict, "b1" , __C_BOOL__   )             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(CTypeDict, "i1" , __INT8_T__   )
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_BOOL__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_b1, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 216, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":218
 * AddTypeMap(CTypeDict, "b1" , __C_BOOL__   )
 * 
 * AddTypeMap(CTypeDict, "i1" , __INT8_T__   )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "i2" , __INT16_T__  )
 * AddTypeMap(CTypeDict, "i4" , __INT32_T__  )
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT8_T__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_i1, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 218, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":219
 * 
 * AddTypeMap(CTypeDict, "i1" , __INT8_T__   )
 * AddTypeMap(CTypeDict, "i2" , __INT16_T__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "i4" , __INT32_T__  )
 * AddTypeMap(CTypeDict, "i8" , __INT64_T__  )
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT16_T__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_i2, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 219, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":220
 * AddTypeMap(CTypeDict, "i1" , __INT8_T__   )
 * AddTypeMap(CTypeDict, "i2" , __INT16_T__  )
 * AddTypeMap(CTypeDict, "i4" , __INT32_T__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "i8" , __INT64_T__  )
 * 
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT32_T__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_i4, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 220, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":221
 * AddTypeMap(CTypeDict, "i2" , __INT16_T__  )
 * AddTypeMap(CTypeDict, "i4" , __INT32_T__  )
 * AddTypeMap(CTypeDict, "i8" , __INT64_T__  )             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(CTypeDict, "u1" , __UINT8_T__  )
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT64_T__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_i8, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 221, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":223
 * AddTypeMap(CTypeDict, "i8" , __INT64_T__  )
 * 
 * AddTypeMap(CTypeDict, "u1" , __UINT8_T__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "u2" , __UINT16_T__ )
 * AddTypeMap(CTypeDict, "u4" , __UINT32_T__ )
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT8_T__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_u1, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 223, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":224
 * 
 * AddTypeMap(CTypeDict, "u1" , __UINT8_T__  )
 * AddTypeMap(CTypeDict, "u2" , __UINT16_T__ )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "u4" , __UINT32_T__ )
 * AddTypeMap(CTypeDict, "u8" , __UINT64_T__ )
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT16_T__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_u2, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 224, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":225
 * AddTypeMap(CTypeDict, "u1" , __UINT8_T__  )
 * AddTypeMap(CTypeDict, "u2" , __UINT16_T__ )
 * AddTypeMap(CTypeDict, "u4" , __UINT32_T__ )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "u8" , __UINT64_T__ )
 * 
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT32_T__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_u4, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 225, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":226
 * AddTypeMap(CTypeDict, "u2" , __UINT16_T__ )
 * AddTypeMap(CTypeDict, "u4" , __UINT32_T__ )
 * AddTypeMap(CTypeDict, "u8" , __UINT64_T__ )             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(CTypeDict, "f2" , __FLOAT16_T__ )
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT64_T__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_u8, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 226, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":228
 * AddTypeMap(CTypeDict, "u8" , __UINT64_T__ )
 * 
 * AddTypeMap(CTypeDict, "f2" , __FLOAT16_T__ )             # <<<<<<<<<<<<<<
 * if sizeof(float) == 4:
 *     AddTypeMap(CTypeDict, "f4"  , __FLOAT__            )
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT16_T__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_f2, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 228, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":229
 * 
 * AddTypeMap(CTypeDict, "f2" , __FLOAT16_T__ )
 * if sizeof(float) == 4:             # <<<<<<<<<<<<<<
 *     AddTypeMap(CTypeDict, "f4"  , __FLOAT__            )
 *     AddTypeMap(CTypeDict, "c8"  , __C_FLOAT_COMPLEX__  )
*/
  __pyx_t_13 = ((sizeof(float)) == 4);
  if (__pyx_t_13) {

    /* "src/mpi4py/MPI.src/typemap.pxi":230
 * AddTypeMap(CTypeDict, "f2" , __FLOAT16_T__ )
 * if sizeof(float) == 4:
 *     AddTypeMap(CTypeDict, "f4"  , __FLOAT__            )             # <<<<<<<<<<<<<<
 *     AddTypeMap(CTypeDict, "c8"  , __C_FLOAT_COMPLEX__  )
 * if sizeof(double) == 8:
*/
    __pyx_t_11 = __pyx_v_6mpi4py_3MPI_CTypeDict;
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT__);
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_f4, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 230, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":231
 * if sizeof(float) == 4:
 *     AddTypeMap(CTypeDict, "f4"  , __FLOAT__            )
 *     AddTypeMap(CTypeDict, "c8"  , __C_FLOAT_COMPLEX__  )             # <<<<<<<<<<<<<<
 * if sizeof(double) == 8:
 *     AddTypeMap(CTypeDict, "f8"  , __DOUBLE__           )
*/
    __pyx_t_5 = __pyx_v_6mpi4py_3MPI_CTypeDict;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_FLOAT_COMPLEX__);
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_c8, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 231, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":229
 * 
 * AddTypeMap(CTypeDict, "f2" , __FLOAT16_T__ )
 * if sizeof(float) == 4:             # <<<<<<<<<<<<<<
 *     AddTypeMap(CTypeDict, "f4"  , __FLOAT__            )
 *     AddTypeMap(CTypeDict, "c8"  , __C_FLOAT_COMPLEX__  )
*/
  }

  /* "src/mpi4py/MPI.src/typemap.pxi":232
 *     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_13 = ((sizeof(double)) == 8);
  if (__pyx_t_13) {

    /* "src/mpi4py/MPI.src/typemap.pxi":233
 *     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_11 = __pyx_v_6mpi4py_3MPI_CTypeDict;
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE__);
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_f8, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 233, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":234
 * 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_5 = __pyx_v_6mpi4py_3MPI_CTypeDict;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_DOUBLE_COMPLEX__);
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_c16, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 234, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":232
 *     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":235
 *     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_13 = ((sizeof(long double)) == 12);
  if (__pyx_t_13) {

    /* "src/mpi4py/MPI.src/typemap.pxi":236
 *     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_11 = __pyx_v_6mpi4py_3MPI_CTypeDict;
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_DOUBLE__);
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_f12, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 236, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":237
 * 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_5 = __pyx_v_6mpi4py_3MPI_CTypeDict;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_LONG_DOUBLE_COMPLEX__);
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_c24, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 237, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":235
 *     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":238
 *     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_13 = ((sizeof(long double)) == 16);
  if (__pyx_t_13) {

    /* "src/mpi4py/MPI.src/typemap.pxi":239
 *     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_11 = __pyx_v_6mpi4py_3MPI_CTypeDict;
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_DOUBLE__);
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_f16, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 239, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":240
 * if sizeof(long double) == 16:
 *     AddTypeMap(CTypeDict, "f16" , __LONG_DOUBLE__           )
 *     AddTypeMap(CTypeDict, "c32" , __C_LONG_DOUBLE_COMPLEX__ )             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
    __pyx_t_5 = __pyx_v_6mpi4py_3MPI_CTypeDict;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_LONG_DOUBLE_COMPLEX__);
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_c32, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 240, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":238
 *     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":244
 * # -----------------------------------------------------------------------------
 * 
 * cdef dict FTypeDict = { }             # <<<<<<<<<<<<<<
 * _typedict_f = FTypeDict
 * 
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_11)) __PYX_ERR(37, 244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_FTypeDict);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_FTypeDict, ((PyObject*)__pyx_t_11));
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":245
 * 
 * cdef dict FTypeDict = { }
 * _typedict_f = FTypeDict             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(FTypeDict, "l"   , __LOGICAL__          )
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_typedict_f, __pyx_v_6mpi4py_3MPI_FTypeDict) < (0)) __PYX_ERR(37, 245, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/typemap.pxi":247
 * _typedict_f = FTypeDict
 * 
 * AddTypeMap(FTypeDict, "l"   , __LOGICAL__          )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "i"   , __INTEGER__          )
 * AddTypeMap(FTypeDict, "r"   , __REAL__             )
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_l, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 247, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":248
 * 
 * AddTypeMap(FTypeDict, "l"   , __LOGICAL__          )
 * AddTypeMap(FTypeDict, "i"   , __INTEGER__          )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "r"   , __REAL__             )
 * AddTypeMap(FTypeDict, "s"   , __REAL__             )
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_i, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 248, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":249
 * AddTypeMap(FTypeDict, "l"   , __LOGICAL__          )
 * AddTypeMap(FTypeDict, "i"   , __INTEGER__          )
 * AddTypeMap(FTypeDict, "r"   , __REAL__             )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "s"   , __REAL__             )
 * AddTypeMap(FTypeDict, "d"   , __DOUBLE_PRECISION__ )
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_r, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 249, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":250
 * AddTypeMap(FTypeDict, "i"   , __INTEGER__          )
 * AddTypeMap(FTypeDict, "r"   , __REAL__             )
 * AddTypeMap(FTypeDict, "s"   , __REAL__             )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "d"   , __DOUBLE_PRECISION__ )
 * AddTypeMap(FTypeDict, "c"   , __COMPLEX__          )
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_s, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 250, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":251
 * AddTypeMap(FTypeDict, "r"   , __REAL__             )
 * AddTypeMap(FTypeDict, "s"   , __REAL__             )
 * AddTypeMap(FTypeDict, "d"   , __DOUBLE_PRECISION__ )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "c"   , __COMPLEX__          )
 * AddTypeMap(FTypeDict, "z"   , __DOUBLE_COMPLEX__   )
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_PRECISION__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_d, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 251, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":252
 * AddTypeMap(FTypeDict, "s"   , __REAL__             )
 * AddTypeMap(FTypeDict, "d"   , __DOUBLE_PRECISION__ )
 * AddTypeMap(FTypeDict, "c"   , __COMPLEX__          )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "z"   , __DOUBLE_COMPLEX__   )
 * 
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_c, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 252, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":253
 * AddTypeMap(FTypeDict, "d"   , __DOUBLE_PRECISION__ )
 * AddTypeMap(FTypeDict, "c"   , __COMPLEX__          )
 * AddTypeMap(FTypeDict, "z"   , __DOUBLE_COMPLEX__   )             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(FTypeDict, "l1"  , __LOGICAL1__  )
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_COMPLEX__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_z, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 253, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":255
 * AddTypeMap(FTypeDict, "z"   , __DOUBLE_COMPLEX__   )
 * 
 * AddTypeMap(FTypeDict, "l1"  , __LOGICAL1__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "l2"  , __LOGICAL2__  )
 * AddTypeMap(FTypeDict, "l4"  , __LOGICAL4__  )
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL1__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_l1, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 255, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":256
 * 
 * AddTypeMap(FTypeDict, "l1"  , __LOGICAL1__  )
 * AddTypeMap(FTypeDict, "l2"  , __LOGICAL2__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "l4"  , __LOGICAL4__  )
 * AddTypeMap(FTypeDict, "l8"  , __LOGICAL8__  )
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL2__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_l2, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 256, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":257
 * AddTypeMap(FTypeDict, "l1"  , __LOGICAL1__  )
 * AddTypeMap(FTypeDict, "l2"  , __LOGICAL2__  )
 * AddTypeMap(FTypeDict, "l4"  , __LOGICAL4__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "l8"  , __LOGICAL8__  )
 * AddTypeMap(FTypeDict, "l16" , __LOGICAL16__ )
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL4__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_l4, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 257, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":258
 * AddTypeMap(FTypeDict, "l2"  , __LOGICAL2__  )
 * AddTypeMap(FTypeDict, "l4"  , __LOGICAL4__  )
 * AddTypeMap(FTypeDict, "l8"  , __LOGICAL8__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "l16" , __LOGICAL16__ )
 * 
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL8__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_l8, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 258, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":259
 * AddTypeMap(FTypeDict, "l4"  , __LOGICAL4__  )
 * AddTypeMap(FTypeDict, "l8"  , __LOGICAL8__  )
 * AddTypeMap(FTypeDict, "l16" , __LOGICAL16__ )             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(FTypeDict, "i1"  , __INTEGER1__  )
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL16__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_l16, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 259, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":261
 * AddTypeMap(FTypeDict, "l16" , __LOGICAL16__ )
 * 
 * AddTypeMap(FTypeDict, "i1"  , __INTEGER1__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "i2"  , __INTEGER2__  )
 * AddTypeMap(FTypeDict, "i4"  , __INTEGER4__  )
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER1__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_i1, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 261, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":262
 * 
 * AddTypeMap(FTypeDict, "i1"  , __INTEGER1__  )
 * AddTypeMap(FTypeDict, "i2"  , __INTEGER2__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "i4"  , __INTEGER4__  )
 * AddTypeMap(FTypeDict, "i8"  , __INTEGER8__  )
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER2__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_i2, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 262, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":263
 * AddTypeMap(FTypeDict, "i1"  , __INTEGER1__  )
 * AddTypeMap(FTypeDict, "i2"  , __INTEGER2__  )
 * AddTypeMap(FTypeDict, "i4"  , __INTEGER4__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "i8"  , __INTEGER8__  )
 * AddTypeMap(FTypeDict, "i16" , __INTEGER16__ )
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER4__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_i4, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 263, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":264
 * AddTypeMap(FTypeDict, "i2"  , __INTEGER2__  )
 * AddTypeMap(FTypeDict, "i4"  , __INTEGER4__  )
 * AddTypeMap(FTypeDict, "i8"  , __INTEGER8__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "i16" , __INTEGER16__ )
 * 
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER8__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_i8, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 264, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":265
 * AddTypeMap(FTypeDict, "i4"  , __INTEGER4__  )
 * AddTypeMap(FTypeDict, "i8"  , __INTEGER8__  )
 * AddTypeMap(FTypeDict, "i16" , __INTEGER16__ )             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(FTypeDict, "r2"  , __REAL2__     )
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER16__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_i16, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 265, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":267
 * AddTypeMap(FTypeDict, "i16" , __INTEGER16__ )
 * 
 * AddTypeMap(FTypeDict, "r2"  , __REAL2__     )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "r4"  , __REAL4__     )
 * AddTypeMap(FTypeDict, "r8"  , __REAL8__     )
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL2__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_r2, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 267, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":268
 * 
 * AddTypeMap(FTypeDict, "r2"  , __REAL2__     )
 * AddTypeMap(FTypeDict, "r4"  , __REAL4__     )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "r8"  , __REAL8__     )
 * AddTypeMap(FTypeDict, "r16" , __REAL16__    )
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL4__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_r4, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 268, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":269
 * AddTypeMap(FTypeDict, "r2"  , __REAL2__     )
 * AddTypeMap(FTypeDict, "r4"  , __REAL4__     )
 * AddTypeMap(FTypeDict, "r8"  , __REAL8__     )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "r16" , __REAL16__    )
 * 
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL8__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_r8, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 269, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":270
 * AddTypeMap(FTypeDict, "r4"  , __REAL4__     )
 * AddTypeMap(FTypeDict, "r8"  , __REAL8__     )
 * AddTypeMap(FTypeDict, "r16" , __REAL16__    )             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(FTypeDict, "c4"  , __COMPLEX4__  )
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL16__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_r16, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 270, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":272
 * AddTypeMap(FTypeDict, "r16" , __REAL16__    )
 * 
 * AddTypeMap(FTypeDict, "c4"  , __COMPLEX4__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "c8"  , __COMPLEX8__  )
 * AddTypeMap(FTypeDict, "c16" , __COMPLEX16__ )
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX4__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_c4, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 272, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":273
 * 
 * AddTypeMap(FTypeDict, "c4"  , __COMPLEX4__  )
 * AddTypeMap(FTypeDict, "c8"  , __COMPLEX8__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "c16" , __COMPLEX16__ )
 * AddTypeMap(FTypeDict, "c32" , __COMPLEX32__ )
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX8__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_c8, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 273, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":274
 * AddTypeMap(FTypeDict, "c4"  , __COMPLEX4__  )
 * AddTypeMap(FTypeDict, "c8"  , __COMPLEX8__  )
 * AddTypeMap(FTypeDict, "c16" , __COMPLEX16__ )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "c32" , __COMPLEX32__ )
 * 
*/
  __pyx_t_5 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_11 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX16__);
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_5), __pyx_k_c16, ((struct PyMPIDatatypeObject *)__pyx_t_11)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 274, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":275
 * AddTypeMap(FTypeDict, "c8"  , __COMPLEX8__  )
 * AddTypeMap(FTypeDict, "c16" , __COMPLEX16__ )
 * AddTypeMap(FTypeDict, "c32" , __COMPLEX32__ )             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
*/
  __pyx_t_11 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_5 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX32__);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_11), __pyx_k_c32, ((struct PyMPIDatatypeObject *)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 275, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 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_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(38, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_datatype, __pyx_mstate_global->__pyx_n_u_Datatype) < (0)) __PYX_ERR(38, 3, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_str_None) < (0)) __PYX_ERR(38, 3, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_93_typecode, 0, __pyx_mstate_global->__pyx_n_u_typecode, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[606])); if (unlikely(!__pyx_t_11)) __PYX_ERR(38, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_typecode, __pyx_t_11) < (0)) __PYX_ERR(38, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/typestr.pxi":11
 * 
 * 
 * def _typealign(Datatype datatype: Datatype) -> int | None:             # <<<<<<<<<<<<<<
 *     """
 *     Return MPI datatype alignment.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(38, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_datatype, __pyx_mstate_global->__pyx_n_u_Datatype) < (0)) __PYX_ERR(38, 11, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_int_None) < (0)) __PYX_ERR(38, 11, __pyx_L1_error)
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_95_typealign, 0, __pyx_mstate_global->__pyx_n_u_typealign, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[607])); if (unlikely(!__pyx_t_5)) __PYX_ERR(38, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_typealign, __pyx_t_5) < (0)) __PYX_ERR(38, 11, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typedec.pxi":278
 *     str combiner: str,
 *     dict params: dict[str, Any],
 *     bint free: bool = False,             # <<<<<<<<<<<<<<
 * ) -> Datatype:
 *     """
*/
  __pyx_t_5 = __Pyx_PyBool_FromLong(((int)0)); if (unlikely(!__pyx_t_5)) __PYX_ERR(39, 278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "src/mpi4py/MPI.src/typedec.pxi":274
 * 
 * 
 * def _datatype_create(             # <<<<<<<<<<<<<<
 *     Datatype datatype: Datatype,
 *     str combiner: str,
*/
  __pyx_t_11 = PyTuple_Pack(1, __pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(39, 274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_5)) __PYX_ERR(39, 274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_datatype, __pyx_mstate_global->__pyx_n_u_Datatype) < (0)) __PYX_ERR(39, 274, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_combiner, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(39, 274, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_params, __pyx_mstate_global->__pyx_kp_u_dict_str_Any) < (0)) __PYX_ERR(39, 274, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_free, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(39, 274, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Datatype) < (0)) __PYX_ERR(39, 274, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_97_datatype_create, 0, __pyx_mstate_global->__pyx_n_u_datatype_create, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[608])); if (unlikely(!__pyx_t_3)) __PYX_ERR(39, 274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_11);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_datatype_create, __pyx_t_3) < (0)) __PYX_ERR(39, 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(39, 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_5 = PyTuple_Pack(1, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(39, 286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(39, 286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_datatype, __pyx_mstate_global->__pyx_n_u_Datatype) < (0)) __PYX_ERR(39, 286, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_mark, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(39, 286, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_tuple_Datatype_str_dict_str_Any) < (0)) __PYX_ERR(39, 286, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_99_datatype_decode, 0, __pyx_mstate_global->__pyx_n_u_datatype_decode, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[609])); if (unlikely(!__pyx_t_11)) __PYX_ERR(39, 286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_t_5);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_datatype_decode, __pyx_t_11) < (0)) __PYX_ERR(39, 286, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":341
 * 
 * 
 * def get_vendor() -> tuple[str, tuple[int, int, int]]:             # <<<<<<<<<<<<<<
 *     """
 *     Information about the underlying MPI implementation.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 341, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_tuple_str_tuple_int_int_int) < (0)) __PYX_ERR(36, 341, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_101get_vendor, 0, __pyx_mstate_global->__pyx_n_u_get_vendor, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[610])); if (unlikely(!__pyx_t_3)) __PYX_ERR(36, 341, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_get_vendor, __pyx_t_3) < (0)) __PYX_ERR(36, 341, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":365
 * 
 * 
 * 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(36, 365, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_arg, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(36, 365, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(36, 365, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_103_sizeof, 0, __pyx_mstate_global->__pyx_n_u_sizeof, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[611])); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 365, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_sizeof, __pyx_t_11) < (0)) __PYX_ERR(36, 365, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":384
 * 
 * 
 * def _addressof(arg: Any) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Memory address of the underlying MPI handle.
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 384, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_arg, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(36, 384, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(36, 384, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_105_addressof, 0, __pyx_mstate_global->__pyx_n_u_addressof, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[612])); if (unlikely(!__pyx_t_3)) __PYX_ERR(36, 384, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_addressof, __pyx_t_3) < (0)) __PYX_ERR(36, 384, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":418
 * 
 * 
 * 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(36, 418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_arg, __pyx_mstate_global->__pyx_n_u_Any) < (0)) __PYX_ERR(36, 418, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(36, 418, __pyx_L1_error)
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_107_handleof, 0, __pyx_mstate_global->__pyx_n_u_handleof, NULL, __pyx_mstate_global->__pyx_n_u_mpi4py_MPI, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[613])); if (unlikely(!__pyx_t_11)) __PYX_ERR(36, 418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_11);
  #endif
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_handleof, __pyx_t_11) < (0)) __PYX_ERR(36, 418, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /*--- Wrapped vars code ---*/

  if (__Pyx_RegisterCleanup()) __PYX_ERR(0, 1, __pyx_L1_error)
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  if (__pyx_m) {
    if (__pyx_mstate->__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;
  #else
  return __pyx_m;
  #endif
}
/* #### Code section: pystring_table ### */
/* #### Code section: cached_builtins ### */

static int __Pyx_InitCachedBuiltins(__pyx_mstatetype *__pyx_mstate) {
  CYTHON_UNUSED_VAR(__pyx_mstate);
  __pyx_builtin_staticmethod = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_staticmethod); if (!__pyx_builtin_staticmethod) __PYX_ERR(1, 131, __pyx_L1_error)
  __pyx_builtin_property = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_property); if (!__pyx_builtin_property) __PYX_ERR(2, 86, __pyx_L1_error)
  __pyx_builtin_Ellipsis = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_Ellipsis); if (!__pyx_builtin_Ellipsis) __PYX_ERR(1, 225, __pyx_L1_error)
  __pyx_builtin_NotImplemented = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_NotImplemented); if (!__pyx_builtin_NotImplemented) __PYX_ERR(3, 31, __pyx_L1_error)

  /* Cached unbound methods */
  __pyx_mstate->__pyx_umethod_PyDict_Type_get.type = (PyObject*)&PyDict_Type;
  __pyx_mstate->__pyx_umethod_PyDict_Type_get.method_name = &__pyx_mstate->__pyx_n_u_get;
  __pyx_mstate->__pyx_umethod_PyDict_Type_items.type = (PyObject*)&PyDict_Type;
  __pyx_mstate->__pyx_umethod_PyDict_Type_items.method_name = &__pyx_mstate->__pyx_n_u_items;
  __pyx_mstate->__pyx_umethod_PyDict_Type_pop.type = (PyObject*)&PyDict_Type;
  __pyx_mstate->__pyx_umethod_PyDict_Type_pop.method_name = &__pyx_mstate->__pyx_n_u_pop;
  __pyx_mstate->__pyx_umethod_PyDict_Type_values.type = (PyObject*)&PyDict_Type;
  __pyx_mstate->__pyx_umethod_PyDict_Type_values.method_name = &__pyx_mstate->__pyx_n_u_values;
  __pyx_mstate->__pyx_umethod_PyList_Type__index.type = (PyObject*)(&PyList_Type);
  __pyx_mstate->__pyx_umethod_PyList_Type__index.method_name = &__pyx_mstate->__pyx_n_u_index;
  __pyx_mstate->__pyx_umethod_PyUnicode_Type__lower.type = (PyObject*)(&PyUnicode_Type);
  __pyx_mstate->__pyx_umethod_PyUnicode_Type__lower.method_name = &__pyx_mstate->__pyx_n_u_lower;
  return 0;
  __pyx_L1_error:;
  return -1;
}
/* #### Code section: cached_constants ### */

static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) {
  __Pyx_RefNannyDeclarations
  CYTHON_UNUSED_VAR(__pyx_mstate);
  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);

  /* "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_mstate_global->__pyx_tuple[0] = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_tuple[0])) __PYX_ERR(12, 210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[0]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[0]);
  __pyx_mstate_global->__pyx_tuple[1] = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_tuple[1])) __PYX_ERR(12, 210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[1]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[1]);

  /* "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_mstate_global->__pyx_tuple[2] = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_tuple[2])) __PYX_ERR(12, 213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[2]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[2]);
  __pyx_mstate_global->__pyx_tuple[3] = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_tuple[3])) __PYX_ERR(12, 213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[3]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[3]);

  /* "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_mstate_global->__pyx_tuple[4] = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_tuple[4])) __PYX_ERR(12, 216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[4]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[4]);
  __pyx_mstate_global->__pyx_tuple[5] = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_tuple[5])) __PYX_ERR(12, 216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[5]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[5]);

  /* "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_mstate_global->__pyx_tuple[6] = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_tuple[6])) __PYX_ERR(12, 227, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[6]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[6]);

  /* "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_mstate_global->__pyx_tuple[7] = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_tuple[7])) __PYX_ERR(12, 230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[7]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[7]);

  /* "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_mstate_global->__pyx_tuple[8] = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_tuple[8])) __PYX_ERR(12, 233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[8]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[8]);

  /* "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_mstate_global->__pyx_tuple[9] = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_tuple[9])) __PYX_ERR(12, 245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[9]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[9]);

  /* "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_mstate_global->__pyx_tuple[10] = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_tuple[10])) __PYX_ERR(12, 248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[10]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[10]);

  /* "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_mstate_global->__pyx_tuple[11] = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_tuple[11])) __PYX_ERR(12, 251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[11]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[11]);

  /* "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_mstate_global->__pyx_tuple[12] = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_tuple[12])) __PYX_ERR(12, 321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[12]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[12]);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1026
 *     seq = _py_scan(seq, op)
 *     seq.pop(-1)
 *     seq.insert(0, None)             # <<<<<<<<<<<<<<
 *     return seq
 * 
*/
  __pyx_mstate_global->__pyx_tuple[13] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_int_0, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_tuple[13])) __PYX_ERR(21, 1026, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[13]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[13]);

  /* "src/mpi4py/MPI.src/Comm.pyx":2565
 *         #
 *         if errcodes is not None:
 *             errcodes[:] = [ierrcodes[i] for i in range(maxprocs)]             # <<<<<<<<<<<<<<
 *         #
 *         options_set_errhandler(comm.ob_mpi)
*/
  __pyx_mstate_global->__pyx_slice[0] = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_slice[0])) __PYX_ERR(33, 2565, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_slice[0]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_slice[0]);

  /* "src/mpi4py/MPI.src/Comm.pyx":2695
 *                 return (nneighbors, nneighbors)
 *             if isinstance(self, Distgraphcomm):
 *                 nneighbors = self.Get_dist_neighbors_count()[:2]             # <<<<<<<<<<<<<<
 *                 return nneighbors
 *             raise TypeError("expecting a topology communicator")  # ~> unreachable
*/
  __pyx_mstate_global->__pyx_slice[1] = PySlice_New(Py_None, __pyx_mstate_global->__pyx_int_2, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_slice[1])) __PYX_ERR(33, 2695, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_slice[1]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_slice[1]);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":131
 *         PyMPI_ReleaseBuffer(self.kind, &self.view)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def allocate(
 *         Aint nbytes: int,
*/
  __pyx_mstate_global->__pyx_tuple[14] = PyTuple_Pack(1, Py_False); if (unlikely(!__pyx_mstate_global->__pyx_tuple[14])) __PYX_ERR(1, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[14]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[14]);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":216
 *     # memoryview methods
 * 
 *     def cast(             # <<<<<<<<<<<<<<
 *         self,
 *         format: str,
*/
  __pyx_mstate_global->__pyx_tuple[15] = PyTuple_Pack(1, Py_Ellipsis); if (unlikely(!__pyx_mstate_global->__pyx_tuple[15])) __PYX_ERR(1, 216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[15]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[15]);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":230
 *             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_mstate_global->__pyx_tuple[16] = PyTuple_Pack(1, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_tuple[16])) __PYX_ERR(1, 230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[16]);

  /* "src/mpi4py/MPI.src/Datatype.pyx":720
 *         PyMPI_attr_del(self.ob_mpi, keyval)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_keyval(
 *         cls,
*/
  __pyx_mstate_global->__pyx_tuple[17] = PyTuple_Pack(3, Py_None, Py_None, Py_False); if (unlikely(!__pyx_mstate_global->__pyx_tuple[17])) __PYX_ERR(24, 720, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[17]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[17]);

  /* "src/mpi4py/MPI.src/Request.pyx":555
 *         <void>(<Grequest?>request)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Start(
 *         cls,
*/
  __pyx_mstate_global->__pyx_tuple[18] = PyTuple_Pack(5, Py_None, Py_None, Py_None, Py_None, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_tuple[18])) __PYX_ERR(26, 555, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[18]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[18]);

  /* "src/mpi4py/MPI.src/Group.pyx":69
 *             return self.Get_rank()
 * 
 *     def Translate_ranks(             # <<<<<<<<<<<<<<
 *         self,
 *         ranks: Sequence[int] | None = None,
*/
  __pyx_mstate_global->__pyx_tuple[19] = PyTuple_Pack(2, Py_None, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_tuple[19])) __PYX_ERR(29, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[19]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[19]);

  /* "src/mpi4py/MPI.src/Info.pyx":258
 *         return items
 * 
 *     def update(             # <<<<<<<<<<<<<<
 *         self,
 *         items: Info | Mapping[str, str] | Iterable[tuple[str, str]] = (),
*/
  __pyx_mstate_global->__pyx_tuple[20] = PyTuple_Pack(1, __pyx_mstate_global->__pyx_empty_tuple); if (unlikely(!__pyx_mstate_global->__pyx_tuple[20])) __PYX_ERR(30, 258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[20]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[20]);

  /* "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_mstate_global->__pyx_tuple[21] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_int_0, __pyx_mstate_global->__pyx_int_0); if (unlikely(!__pyx_mstate_global->__pyx_tuple[21])) __PYX_ERR(33, 207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[21]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[21]);

  /* "src/mpi4py/MPI.src/Comm.pyx":408
 *     # ------------------------------------
 * 
 *     def Send(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
*/
  __pyx_mstate_global->__pyx_tuple[22] = PyTuple_Pack(1, __pyx_mstate_global->__pyx_int_0); if (unlikely(!__pyx_mstate_global->__pyx_tuple[22])) __PYX_ERR(33, 408, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[22]);

  /* "src/mpi4py/MPI.src/Comm.pyx":2230
 *         return comm
 * 
 *     def Create_cart(             # <<<<<<<<<<<<<<
 *         self,
 *         dims: Sequence[int],
*/
  __pyx_mstate_global->__pyx_tuple[23] = PyTuple_Pack(2, Py_None, Py_False); if (unlikely(!__pyx_mstate_global->__pyx_tuple[23])) __PYX_ERR(33, 2230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[23]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[23]);
  #if CYTHON_IMMORTAL_CONSTANTS
  {
    PyObject **table = __pyx_mstate->__pyx_tuple;
    for (Py_ssize_t i=0; i<24; ++i) {
      #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
      #if PY_VERSION_HEX < 0x030E0000
      if (_Py_IsOwnedByCurrentThread(table[i]) && Py_REFCNT(table[i]) == 1)
      #else
      if (PyUnstable_Object_IsUniquelyReferenced(table[i]))
      #endif
      {
        Py_SET_REFCNT(table[i], _Py_IMMORTAL_REFCNT_LOCAL);
      }
      #else
      Py_SET_REFCNT(table[i], _Py_IMMORTAL_INITIAL_REFCNT);
      #endif
    }
  }
  #endif
  #if CYTHON_IMMORTAL_CONSTANTS
  {
    PyObject **table = __pyx_mstate->__pyx_slice;
    for (Py_ssize_t i=0; i<2; ++i) {
      #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
      #if PY_VERSION_HEX < 0x030E0000
      if (_Py_IsOwnedByCurrentThread(table[i]) && Py_REFCNT(table[i]) == 1)
      #else
      if (PyUnstable_Object_IsUniquelyReferenced(table[i]))
      #endif
      {
        Py_SET_REFCNT(table[i], _Py_IMMORTAL_REFCNT_LOCAL);
      }
      #else
      Py_SET_REFCNT(table[i], _Py_IMMORTAL_INITIAL_REFCNT);
      #endif
    }
  }
  #endif
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_RefNannyFinishContext();
  return -1;
}
/* #### Code section: init_constants ### */

static int __Pyx_InitConstants(__pyx_mstatetype *__pyx_mstate) {
  CYTHON_UNUSED_VAR(__pyx_mstate);
  {
    const struct { const unsigned int length: 10; } index[] = {{0},{10},{18},{15},{18},{15},{18},{18},{17},{14},{15},{13},{42},{52},{38},{39},{27},{25},{42},{43},{27},{26},{30},{37},{38},{26},{15},{17},{26},{12},{15},{59},{52},{11},{16},{13},{14},{31},{38},{14},{26},{4},{179},{22},{30},{30},{11},{13},{20},{18},{21},{40},{17},{30},{14},{21},{13},{20},{20},{30},{13},{17},{1},{1},{1},{1},{1},{2},{8},{12},{19},{17},{11},{28},{19},{34},{50},{56},{11},{16},{43},{46},{18},{14},{14},{41},{59},{58},{48},{53},{34},{20},{14},{21},{14},{7},{32},{30},{30},{23},{40},{21},{30},{32},{26},{32},{6},{12},{10},{34},{42},{38},{33},{33},{25},{33},{30},{30},{29},{26},{36},{27},{40},{14},{2},{6},{30},{18},{10},{16},{10},{19},{38},{48},{9},{12},{11},{5},{41},{35},{9},{16},{14},{19},{9},{16},{27},{22},{9},{21},{32},{36},{31},{31},{37},{53},{53},{43},{45},{45},{47},{22},{31},{39},{24},{31},{44},{43},{26},{42},{23},{28},{7},{10},{40},{43},{40},{7},{34},{29},{27},{31},{33},{32},{32},{27},{28},{27},{26},{30},{25},{30},{30},{29},{26},{31},{31},{31},{31},{32},{30},{30},{10},{21},{10},{33},{40},{16},{17},{43},{20},{36},{38},{21},{20},{23},{29},{18},{26},{15},{35},{16},{28},{15},{30},{41},{27},{54},{38},{63},{15},{32},{5},{23},{18},{27},{29},{0},{4},{10},{7},{6},{5},{6},{10},{10},{15},{14},{16},{5},{8},{9},{9},{14},{10},{15},{9},{8},{15},{9},{14},{8},{13},{9},{14},{9},{14},{3},{6},{13},{4},{10},{4},{3},{6},{14},{16},{4},{4},{7},{12},{5},{10},{10},{21},{5},{10},{7},{8},{8},{8},{6},{19},{30},{4},{4},{9},{19},{15},{12},{20},{20},{17},{17},{23},{16},{16},{22},{14},{16},{15},{17},{20},{15},{9},{9},{19},{21},{25},{16},{10},{7},{9},{9},{8},{8},{9},{10},{5},{8},{18},{17},{23},{6},{9},{16},{15},{21},{15},{6},{8},{8},{22},{19},{16},{17},{14},{12},{5},{5},{10},{4},{10},{15},{10},{14},{19},{15},{20},{14},{19},{13},{18},{14},{19},{14},{19},{18},{12},{17},{10},{15},{10},{15},{20},{10},{12},{11},{22},{18},{16},{18},{15},{8},{18},{17},{9},{16},{11},{16},{12},{17},{13},{19},{15},{14},{13},{13},{15},{13},{13},{17},{11},{15},{16},{15},{14},{15},{15},{13},{11},{11},{9},{19},{18},{12},{13},{12},{11},{10},{12},{20},{26},{11},{13},{13},{15},{13},{14},{10},{14},{22},{12},{11},{9},{11},{15},{10},{15},{9},{14},{11},{16},{19},{25},{30},{24},{11},{10},{15},{12},{17},{13},{18},{9},{14},{13},{21},{13},{19},{13},{13},{11},{10},{15},{10},{15},{15},{14},{14},{13},{12},{10},{10},{9},{9},{15},{12},{11},{11},{12},{11},{10},{10},{11},{11},{10},{9},{9},{11},{12},{9},{13},{10},{10},{6},{7},{16},{8},{12},{7},{6},{7},{11},{17},{13},{17},{26},{10},{14},{10},{17},{18},{18},{15},{17},{18},{24},{12},{12},{15},{21},{14},{14},{20},{16},{13},{14},{13},{15},{13},{6},{13},{20},{8},{16},{17},{20},{15},{10},{6},{14},{10},{16},{3},{8},{15},{26},{22},{27},{27},{24},{24},{30},{23},{23},{29},{22},{23},{22},{24},{22},{20},{12},{13},{20},{17},{21},{21},{19},{17},{17},{24},{24},{19},{13},{22},{27},{18},{17},{17},{15},{24},{19},{15},{13},{13},{17},{19},{16},{13},{15},{14},{6},{11},{6},{13},{10},{10},{13},{38},{32},{3},{13},{15},{12},{16},{13},{7},{10},{9},{7},{10},{12},{8},{10},{8},{14},{9},{8},{8},{15},{14},{8},{15},{15},{9},{8},{12},{14},{14},{10},{13},{6},{10},{12},{12},{8},{12},{10},{12},{16},{6},{9},{11},{8},{16},{15},{23},{9},{8},{13},{11},{11},{14},{16},{14},{13},{14},{12},{8},{11},{11},{8},{9},{7},{12},{12},{8},{11},{23},{25},{19},{7},{8},{10},{15},{21},{15},{15},{21},{18},{15},{16},{9},{25},{24},{26},{18},{16},{16},{16},{18},{18},{17},{16},{16},{16},{18},{17},{21},{20},{22},{4},{6},{11},{11},{11},{8},{9},{5},{9},{9},{9},{9},{6},{9},{8},{16},{7},{7},{15},{5},{8},{13},{5},{5},{12},{4},{20},{10},{22},{11},{14},{18},{20},{19},{14},{13},{17},{24},{13},{20},{13},{10},{14},{13},{17},{17},{11},{15},{14},{18},{18},{9},{16},{9},{13},{19},{17},{12},{16},{22},{20},{17},{23},{21},{16},{9},{16},{18},{19},{13},{13},{13},{9},{10},{14},{20},{18},{13},{17},{23},{21},{18},{24},{22},{17},{15},{9},{9},{15},{12},{9},{10},{8},{5},{9},{12},{11},{15},{4},{11},{8},{5},{11},{10},{6},{11},{7},{12},{3},{20},{12},{15},{14},{11},{9},{13},{8},{15},{13},{12},{10},{9},{7},{8},{18},{24},{12},{12},{14},{9},{15},{14},{16},{10},{10},{9},{20},{8},{19},{8},{13},{19},{9},{12},{10},{13},{10},{12},{19},{18},{13},{8},{16},{15},{8},{10},{10},{14},{14},{15},{7},{8},{12},{15},{15},{15},{11},{8},{9},{9},{18},{23},{29},{18},{8},{17},{14},{17},{5},{13},{30},{16},{9},{10},{10},{14},{14},{10},{18},{16},{16},{21},{11},{16},{10},{10},{16},{13},{10},{11},{16},{8},{14},{7},{5},{7},{13},{8},{9},{3},{7},{7},{7},{6},{7},{8},{9},{8},{8},{8},{7},{8},{2},{6},{10},{11},{10},{9},{10},{10},{8},{6},{6},{4},{14},{7},{13},{7},{8},{7},{11},{22},{4},{19},{20},{18},{19},{19},{4},{11},{15},{11},{8},{9},{8},{14},{15},{8},{15},{10},{9},{9},{9},{15},{12},{8},{10},{9},{8},{12},{9},{10},{11},{11},{4},{11},{9},{28},{26},{25},{15},{9},{12},{9},{16},{18},{17},{21},{27},{36},{27},{22},{22},{26},{16},{21},{19},{17},{15},{14},{19},{15},{24},{16},{14},{6},{5},{9},{8},{12},{12},{5},{7},{15},{21},{6},{12},{14},{12},{14},{8},{8},{10},{14},{5},{8},{9},{5},{9},{17},{7},{6},{6},{10},{9},{13},{13},{4},{14},{4},{12},{14},{11},{7},{8},{9},{8},{8},{8},{4},{11},{15},{8},{9},{3},{4},{4},{8},{11},{3},{6},{18},{16},{12},{12},{26},{15},{13},{18},{17},{17},{15},{12},{3},{6},{11},{11},{20},{9},{12},{14},{10},{12},{14},{11},{9},{15},{16},{11},{8},{12},{14},{8},{9},{8},{11},{6},{11},{11},{7},{10},{5},{7},{14},{13},{13},{12},{18},{12},{12},{18},{15},{14},{13},{13},{12},{12},{13},{6},{5},{5},{18},{23},{19},{24},{17},{22},{18},{23},{18},{23},{8},{4},{14},{6},{7},{7},{7},{13},{2},{9},{7},{17},{15},{13},{7},{7},{13},{10},{7},{8},{4},{9},{6},{9},{4},{4},{13},{18},{9},{8},{8},{6},{12},{16},{12},{16},{4},{6},{11},{12},{11},{10},{8},{17},{15},{20},{21},{14},{17},{5},{10},{12},{3},{20},{12},{4},{6},{5},{5},{5},{7},{12},{7},{5},{4},{11},{10},{10},{4},{8},{14},{12},{7},{11},{17},{15},{12},{18},{16},{11},{4},{9},{6},{11},{12},{14},{20},{25},{19},{16},{18},{17},{19},{7},{14},{12},{18},{22},{22},{23},{12},{15},{15},{16},{12},{15},{15},{16},{18},{14},{12},{12},{18},{15},{18},{22},{22},{23},{12},{12},{15},{15},{16},{13},{12},{15},{15},{16},{7},{6},{4},{15},{4},{5},{10},{8},{8},{8},{12},{5},{9},{11},{10},{11},{16},{12},{7},{8},{8},{8},{7},{6},{8},{10},{7},{3},{4},{9},{7},{12},{8},{13},{4},{11},{4},{4},{9},{8},{16},{7},{21},{23},{25},{20},{21},{16},{20},{22},{16},{20},{21},{21},{21},{12},{22},{18},{12},{12},{18},{15},{12},{13},{3},{13},{8},{13},{12},{14},{9},{8},{8},{8},{10},{7},{8},{12},{5},{6},{5},{14},{5},{10},{5},{10},{5},{8},{6},{16},{19},{16},{17},{14},{19},{20},{19},{16},{17},{14},{19},{17},{19},{11},{11},{15},{3},{4},{6},{15},{15},{17},{13},{6},{17},{17},{17},{14},{4},{7},{7},{8},{8},{28},{29},{27},{28},{28},{27},{32},{28},{33},{26},{31},{27},{32},{27},{32},{27},{26},{15},{8},{8},{8},{7},{9},{7},{13},{8},{13},{12},{13},{18},{14},{10},{5},{6},{10},{6},{15},{14},{1},{11},{6},{7},{5},{13},{8},{17},{13},{10},{19},{17},{18},{17},{9},{8},{12},{8},{11},{15},{4},{7},{7},{8},{3},{14},{12},{19},{10},{19},{20},{12},{10},{18},{21},{17},{15},{10},{9},{16},{9},{13},{15},{19},{8},{15},{7},{18},{12},{18},{13},{12},{12},{8},{12},{8},{7},{15},{8},{19},{8},{12},{18},{12},{12},{16},{9},{8},{8},{10},{14},{8},{14},{8},{8},{14},{11},{8},{9},{12},{5},{9},{15},{13},{8},{12},{18},{16},{13},{19},{17},{12},{5},{5},{1},{1},{5},{4},{5},{5},{7},{9},{10},{5},{9},{8},{13},{9},{8},{5},{6},{3},{4},{4},{4},{5},{19},{9},{18},{7},{7},{4},{7},{5},{11},{12},{4},{8},{5},{3},{6},{15},{15},{11},{18},{17},{14},{14},{17},{7},{6},{5},{1},{12},{8},{8},{6},{9},{9},{4},{8},{7},{6},{9},{6},{5},{4},{17},{5},{18},{3},{3},{4},{8},{5},{4},{5},{8},{4},{10},{16},{7},{14},{14},{7},{7},{8},{6},{4},{5},{7},{7},{5},{6},{9},{9},{7},{10},{24},{6},{1},{5},{4},{7},{8},{16},{16},{9},{6},{7},{7},{4},{9},{5},{4},{12},{11},{8},{3},{4},{9},{4},{9},{13},{8},{10},{17},{7},{3},{5},{5},{9},{7},{2},{5},{8},{9},{6},{8},{10},{13},{5},{11},{10},{12},{10},{9},{5},{2},{9},{8},{6},{6},{9},{4},{8},{5},{2},{4},{8},{8},{4},{8},{8},{5},{5},{2},{4},{4},{6},{4},{7},{11},{10},{8},{10},{7},{10},{5},{8},{8},{8},{6},{6},{3},{44},{10},{14},{14},{15},{10},{12},{8},{5},{6},{6},{6},{6},{6},{9},{8},{4},{1},{5},{5},{6},{7},{6},{6},{7},{5},{11},{5},{5},{9},{6},{4},{9},{7},{6},{9},{7},{5},{8},{5},{7},{10},{4},{5},{8},{8},{10},{6},{3},{7},{8},{8},{6},{7},{6},{7},{7},{5},{8},{13},{5},{6},{7},{13},{6},{7},{9},{5},{7},{1},{4},{1},{3},{4},{6},{16},{11},{6},{4},{2},{6},{6},{5},{5},{9},{11},{12},{9},{8},{9},{9},{5},{6},{1},{8},{5},{4},{4},{11},{11},{12},{8},{3},{6},{10},{7},{13},{5},{5},{10},{10},{6},{15},{3},{8},{1},{2},{8},{4},{6},{6},{2},{2},{4},{5},{6},{2},{6},{18},{17},{9},{10},{2},{6},{5},{4},{10},{6},{2},{8},{2},{9},{9},{10},{2},{2},{3},{6},{5},{5},{6},{6},{2},{5},{6},{5},{6},{9},{1},{6},{9},{14},{13},{10},{9},{7},{6},{3},{7},{9},{8},{11},{5},{8},{8},{8},{9},{6},{3},{5},{4},{12},{14},{1},{12},{8},{1},{6},{4},{5},{6},{2},{2},{7},{8},{4},{7},{10},{7},{10},{6},{7},{11},{12},{13},{7},{8},{7},{8},{8},{6},{9},{6},{4},{4},{2},{1},{4},{4},{7},{4},{4},{7},{7},{8},{7},{10},{12},{7},{17},{12},{10},{12},{5},{6},{4},{7},{5},{4},{6},{7},{13},{10},{3},{5},{6},{5},{12},{6},{8},{7},{3},{7},{6},{6},{7},{6},{9},{8},{10},{2},{3},{6},{11},{11},{2},{4},{7},{7},{8},{7},{9},{9},{7},{6},{5},{8},{4},{10},{10},{9},{9},{9},{11},{11},{7},{6},{7},{7},{7},{7},{7},{6},{5},{3},{5},{6},{7},{4},{7},{7},{8},{8},{7},{6},{3},{2},{8},{1},{2},{1},{3},{0},{979},{51},{21},{51},{77},{52},{17},{69},{51},{41},{44},{45},{89},{40},{29},{30},{23},{29},{37},{80},{44},{35},{37},{117},{45},{89},{64},{73},{97},{79},{67},{67},{33},{57},{27},{27},{27},{80},{77},{79},{93},{81},{28},{26},{78},{36},{46},{36},{23},{64},{34},{172},{161},{82},{35},{91},{27},{273},{54},{68},{105},{43},{43},{43},{55},{47},{114},{14},{49},{49},{54},{83},{78},{83},{78},{78},{47},{46},{139},{114},{126},{77},{123},{138},{85},{103},{87},{118},{109},{48},{53},{48},{72},{41},{33},{95},{298},{122},{77},{82},{77},{77},{82},{101},{120},{58},{76},{47},{56},{64},{64},{53},{87},{125},{116},{78},{87},{47},{51},{45},{124},{62},{81},{81},{77},{81},{90},{39},{140},{93},{122},{111},{140},{271},{79},{77},{110},{115},{101},{99},{77},{116},{99},{86},{118},{108},{77},{109},{100},{83},{112},{87},{78},{40},{36},{23},{37},{25},{102},{68},{107},{97},{88},{93},{127},{132},{117},{122},{81},{85},{119},{123},{110},{114},{88},{93},{127},{132},{117},{122},{79},{87},{126},{118},{117},{108},{81},{89},{85},{79},{118},{116},{119},{127},{110},{118},{109},{107},{21},{43},{147},{147},{30},{90},{52},{151},{67},{223},{59},{42},{75},{33},{40},{33},{33},{201},{59},{66},{42},{43},{42},{161},{58},{117},{22},{23},{23},{23},{22},{23},{14},{56},{72},{28},{33},{22},{33},{33},{26},{26},{89},{80},{90},{52},{93},{113},{73},{164},{164},{91},{241},{210},{143},{93},{93},{44},{112},{111},{64},{48},{14},{31},{32},{40},{45},{39},{37},{25},{53},{86},{108},{110},{65},{57},{70},{65},{65},{57},{57},{65},{70},{55},{44},{56},{69},{64},{64},{56},{56},{63},{69},{64},{43},{85},{109},{172},{54},{103},{92},{104},{72},{28},{38},{62},{62},{38},{109},{396},{85},{124},{115},{52},{98},{126},{125},{81},{133},{90},{85},{112},{107},{63},{63},{93},{94},{92},{94},{92},{92},{58},{67},{51},{51},{76},{98},{81},{78},{100},{30},{22},{22},{23},{22},{22},{22},{139},{14},{14},{15},{15},{21},{21},{31},{30},{103},{14},{21},{22},{22},{23},{22},{22},{26},{22},{22},{138},{32},{23},{23},{44},{24},{22},{22},{27},{43},{27},{27},{299},{39},{44},{43},{90},{46},{121},{49},{39},{38},{46},{37},{49},{42},{17},{41},{46},{23},{26},{21},{43},{43},{53},{73},{25},{27},{25},{25},{42},{86},{107},{82},{18},{83},{83},{14},{44},{18},{18},{45},{51},{66},{35},{33},{31},{18},{55},{76},{47},{71},{30},{53},{23},{37},{23},{22},{27},{36},{22},{24},{44},{107},{56},{46},{44},{39},{39},{19},{49},{18},{37},{19},{37},{142},{34},{43},{34},{80},{44},{62},{20},{20},{64},{18},{24},{35},{35},{35},{34},{34},{43},{34},{34},{43},{176},{27},{29},{46},{66},{26},{33},{20},{98},{42},{130},{49},{48},{132},{31},{19},{18},{19},{110},{92},{61},{79},{13},{41},{18},{37},{24},{37},{19},{26},{18},{33},{46},{26},{36},{23},{56},{56},{51},{18},{37},{34},{42},{57},{46},{46},{45},{45},{46},{45},{44},{85},{20},{18},{18},{16},{16},{43},{99},{61},{44},{21},{21},{66},{107},{27},{26},{27},{44},{27},{27},{198},{20},{65},{10}};
    #if (CYTHON_COMPRESS_STRINGS) == 3 && __PYX_LIMITED_VERSION_HEX >= 0x030e0000 /* compression: zstd (18609 bytes) */
const char* const cstring = "(\265/\375`\251\366=E\002\372<\205CH\360\352\352\001\314\300v\202\302\301\314\t\n\007S\214\320(\230b\204\306\341\367\222$\221\332\235l99\251\3417\333'\023\265\315\006\315o\032>4\003\203\227$\tqH\366\223'\304`\223O\236x&\333\274x\346\025h\324\250\006\344\003\340\003\\\004\252\252\252\271\266\347\276\330\276\272\272eY\226\345\256\234\315b/Vm%\250/\256\363\264\273\376\362\327\237\250\257\265\257\233\263\215im\307G\266\3478{\333\265<\274\262Z\333\351\302\037\355,\333\242^}\377\347}\355\253^\347\341\355v\252\323w\266]U5\370\333T\\\251\246\276\345A\317\337[\247sUu\227\350\252\241\221\2533'\207f\302D\332\2545\223z\201\221A\255\\3\022\247\204\321V#\255u\342\330\234bL\307d\271\304\362|\2114WxSC3U\264\231YR\030\313W\010#M\225x3AE\272j\316\225\230#\256`\243\215+\024g-1Gt\305\316\004\013X1\232N8\233\205\253\222F\322Z\243\t#U\260Q5\023MU8\013mT\346,T\241pxSs\236\347\311\254y\273\372\276\274F4urjT\243\031\322\302s&\262X\264\232U(\332\314\304\033\362\\\301\304\262fF\326\270H\262\306<ePfH\272X5+XXs\342\320\220\267[W\336\376~\236h\273\373\352\313o\353\032\332ljz\206gx\362\240a\377\034v;\212\206\377mk\341\213\006\213\305\302Vh\212\252\031\215,O\035X\030\246\354\255\005W\322\267ea\260\303\340\333Y\265\306kY\036\026\246\251\301\374\035w\276o9\010\363i\014|\264\2477\237[sj\217\347d\332\252\336\266\247\347\236\020 @_\237v\267\177\357\323\332\351\366\266\247\236\233R\335\034\030\256h\252\324\337T\034\352U\004\251\227\256\276\006\326\025F\371\352\372\027i\232dMn\345`\357ms=\367\306\276WW\0169\341\3534a\243\206\025\344\260\022\256\200\252\255\267)\310A\003Mme1\340\323\265\246\276\375\363\225~c\371\373\341\266\243\352\352\301\367\326=\234\003{z\212\336@\360\306W\033\356\337\330\276\276\007>\317\275\255\355m\371\367l\357\326\256\255\333\376\365\200\353\331~\303\271\374\275\251\351\333~\216\252,\014\262\\\365\375\277l\357\375\275\265o\317\300~\377q7\265\363\300\336ws\375\355;\026\366=\315\365\357r\321`^Ms0\373\266\256\013{5\327\302\336Mw<(w\327\324\357\360\240\255\253\302G=\217\367p\013\337""\324\317\322t\227\305\363\033\356\253<\220\346<\325\263\307\337\227\237<\205\321\363\274\365\\_\273\007\271\333\323_\356\362W={>\212F\310\240\256\\\355+\017\252\272\374\3458\024tQ8\365=\226\347\300\366\277\335m\301\264\263\252\255\247\007\336\356a\020e9\332[\331\366\000\212\362\003\264\230\252\026\301}q\317\3579Z\213\000\266\260\344`\017v\264\202\377,\334\242\354\231\246\034\334Yi\3319A\370\375\366r\323\303\345\316\316\316\332\266\265\357g;(\333a]/mk/}\377\275Z\331yT\027\356\363\030\371\325\227\007\326\310S\367+g\365\235\372\252)\270r\362\337\262,_\001\177\367 \333=w\301\366w\026\204\333\036h\033\301\223\007Y\365\257*\\\003m-\350{\r\366\240\377h\307\320_\020L\315\244\016\304\304\030\310\242jo\355\277\246\256=\005\275\212\373=\025\3709\356\203\375\267\260\223-v\343)\357/\356\237 MO[\024|\333\367\355\025\300\224\333\300\026\226\257\262\343\311r\032c\257\235\016\277f\205Uu\355\354\270\360\177\373\037\277\257pcU\327\345\257\326\306\2168\317m\\\270}['\357\371\212\202\337\355h\217\010Z\254)\313q\357+\262*\016\333\252\336\367\362t:\365Ue\355\344r\255\352\263*h`\307\300Nw{\237\177\276\002\rT\250\320\327\032_W\256\312\265\377\267o\267\341\334\240|\215\261c\r\332\335\322\006\327t\266\205\201\033\300\036\033\006*\333q\274\264{\027\216I\301\274\240R\026M\327\026\347\321\177\362|\216w\267\247*\372z\357\275\255=S\233\367\357o}\356}}\177_\377\256\034\326\355\316Su9\352\252\273\265\367{\255\277\356\351\266nw\275\317q\267u\333\266mk\355\216M\273\313\272-\333\262,\313\262*\217\355\236MY\224=9\313\336\374\331\2760\252\362\274\030\316\334\333y\274v]\373\256\257\265\325\247<\036\036O\337q\177z\036\014\030j\260WO\257\236/(\267U\337\356\262\236U}\017\317\251\252\252\252\252\252\252\252\352\326\324\232\252\342l\255\277\275\240no\273;=\360\rN\235EY\330\333T\364d?oW\233?S\333j\263}\265\307\237\335\367[\332y\251\013\247h\333Qu\327\323s\365_e\3413w\236\377M\323\325\377\025\346\266\356Q\237\242\273\327\243\376\326\337\363<\337vm\3214\207\372\025\355'\253\256\350\313\373\211\366U\265\241\035]S""\024em\347\211\236\355G\321\366\2775\364<\371\367\273\335\363\232\357\254\372U\317_\356\277\255\365;\217\336^\356\272\374do\352\312m\355\351\373\013\212\347\376o?\253\316\340\276\236\\a\315Y\276Fsd\315\302\230X\272T\243\316\3524K\234\033\226&\342\300h\242+\244\311D\030md\321h\274\335\016\306\333\235Z\2675\3132t\251H\234\321t\321^+\030\214\306\2621kh\355\367\377\244;\313\262l\313\276*w/ZY\272\306\327\010k\215\245M9\341\303\3569\343\375\377o7\364\253\034\307\354\261\247\276\233\371?\023g3\251\227\336\333a\231\255\317`\347G\325UO/v\236\037\216\341j\360\351\354\305\276o}\312\333\265\326\266\247wspz\212\255\355\033{\337\025I\222.i\262V$\213E\246\235}\341\337g-o\267\203\221\260\327,F\216\261\031\016l\204\321\302r\206\263\232\225&m\202\252$]*Q\234\251b\341\t\033_\255\020&\272N\261\224PC\236:\263pV3\272\\\230\247m]9\256\331L\352E\006\345\nU\343\315X\322\\\252U\031\272V#\253\252\266\337\327\361\237,\217\273\345\251\337\336\376:\371\324\205\335\326\275\271\355\313\373\212\226\3478\366\221\267\333\221\343y\316\244^dP3\343\rL4a.RE\2326\255\321\206\245yo\336X>\353\236\035\321\227\377\362tj\335\370\357\261m\256\277o\333\276>\007\343>\333{\371\333\321\027ny8\357Y\376\376\267\265\235j\355w\0353\366\022\317\225m\277\372qP\266\307\323{\331?\333Y\365\326k\347,\326]\362\367\361\237#\257\253;\325\267\356\357\336fk\317\336W\321\237\2669\357\266\235\305b\261N\026\213\225\222y\201\351\021\327\227\355+\316s\334\3577]?O\257zW]W\234\031i\206\261\030\255$a\023`43T\301Z\244\213\214\2218\245\250\032oHR\005\323\231\2217\241\213e\262lT\241i\206g\370Z\335\230\245H\223\351\270`\2448\001\026\316B\223\244\311V*r\326\202\2151\0333F\332\250h\261\362%\276\316\3624I\225Y\206\256\222\204\351\210\023N\222E#i'l,s\304\363|\215+X)\272F\326\271\nkLqE\276\312RT\251F\330\214f\2123\326)\316\314\360,g\344Lt\331\314f\342\351\375WW\355W{\352\2624\366\345\261W\357n\273v\357\3020r,G\2258\213\331\304\302Y\353\024a$\254e\272X+\325\350R\351\250D\223V3\316\314\331\214\006\023_\242*t\305\312q\025\232\341\252\006\267\273""\264\343\272wO\357\327\036\324\266cQ\265\307bPS\225\357\037v9\317\237\347W\333o{\351y5%\035\346\2761\021\206~B#&\033\226\263KjTY\357L\005 \005b\000\243\037iDC\213\363\002\221\n6\361h\324\361\023\t\001\3313\020d\2349\024\211\026\200\277\205\344w\207\361H\303e\2042\335&\033B\250D2\225LB\027\277\021\021\r(\232\224q\"\273\002\\)\351\231\325\037\021\207\250$\263Gv\206\036\220V\274 \306B\001\357(\211D>Z8\013\205\254\236\250O\322\310#\014q\020wp\374F(9\200\034\003\323b\252Y\344\014\n\354\000\241\017\221\275\340\367Q2}\3146\215\213\310=\222\201\361\023~@y0\311\n\350\007\032d5&\341\234\320\026\026,\0042:D\t:\"(B\204:Z\245\003\331\241:\001\312/\374\200q\207\025\246\230\346\023\372`\200d\241/\244@GmaV\tg\034\376c\032\343\321\306\305\\\223)\344\017\221\307]\020\301\036!\335A\363\310&\241\317fS\314\260\334,\352\017\274ag\342\375\236,\203l\"\213qEh.S2|\010i\244\3244\364Fr\263\333pq\223n\230\n\221\257\302\326\325=\246\016\254\036yB<R\321\304\035\n\346\226l\273\005\020\365p\023N@.p\364\314\274\0014\227\034\370\240\352\031\332%\344\276Q\220B\233\263\213\311\307\262m\265\014x\203u\330\022b\371\320\351\314\243\371E\271QT\031E\026q\210l\263v\321\321$Z\246g\346a\214\363\303\023\315\031H|*&\310$\025\021\026!D>\013p\203\t\032\003F\014\023\317\300\022h\361\304\004Y\035c\252E5\212\004\321\253\031\3054\2571i#\275XA\245&\236\030\345\247\213y\354\021\213\077\077\220\3741\021\306\250\270%Z\305\022|\256\221\311.q*\223w\261J7\272\241P\217+\334\226P/0\371,\nh\370\310:%\233sZ`\350\220\231\200\217\305\246Y\271Wzj\225Fy\311\334Gb\313\3240\n@\263\n)\254S*b\016U\303\230nS,\253Uh\021\215\316:\274\226\325\035f\325l\242\363\225\330+\250\022\337\310\007\362a\030\271\374LA&\251M5\213\313\270\2304\352d\rS\375br\233\304\036 \031D\266\220Ab\323\007\303\006%\344\366q\217E\275\242\r\224n\001q\214H\003\315\311\310\013\201\033\004\"\306\367m\222-\326\022u\211\305\224\303\237\235\260\313\036\262\031\237\210>(\272E\372\020\360\261\240Ati\226a\2119\320\037Y\374\022\007\210\331\330\024k\370 @\302BL\002\371\"\260\334""\021a\215\252[\350tF\351\021\330\270A\346\017^\313\230\270MR\243@%:\032A\255\243\325\031e\026\315\257\230@\314q\361sq\213\031\200rI\212L$\207\330)\223L\036\311\025\361\306\305\217\333(6Hm\322!m\300#\203n\231\td\210\310\021\267)\026\315'\031\267\202z\200\206\\\213)\342\215\212\356#\363\301\220\3701\321\nP\035\362\210(\026Y\374:8L>\232\035\332\013\352Os\372\304m\017\233\237\314\n|\242\235\3222\372\300\310\r\232c\344\021\211[\347#\232W:b\231\237LbD\306\211w>)\237\001\241\037\224\335R\357\314\035nQ\r\252c\350?\363YE\343\326\260}M\252en\034d\22395\233f\0269$\364C\315-&9D\342F\305\035\022?\n\023\3152\023\210\270e\361\350s!\361\323\325\274\326\241o\263l\036e\tY\027\227$Pt\200\037*\036QL\374<F?\320\007NK\230Q\363\214\374cR,\272\370\205\263M\206\221g\342\357\243q\361\253\260{t\2126\3210\231\200\314\212G\030?\024}3\207\263MH,\n\375L2\210\256 \223H\334al\343s\021\372\361\031f\0160\203!?N\343f\236\234\222Mr\350\027\322\022\264n\026\020\372\021\311 \0227h^\311(Yd\300}1!\242+f0\342\006\311\241x#\364\323\371\270\017g\313\354]=\201^0\177\231\313\031q\315'#\364\003\325\tBn\221\212\210P\010\223\315RC\230O$\356Y\214\327a\344\031\021\321B\222\021-\005z1\226\002\240\357\275\236\357\351Q_\336\313c\003\247jv\352\304Rc\354\325\222\353e\214j\020 \020!_\210d\243#'\0216K\232 \355f\252\216\370\365\231\371\354b6P\"\031\313\252F4?\370\034\362k\3772\014I\r(p\350\352\022\272en-\300\351\350\003\020$Pc\252V-\370\000@.I\314\025~\270\315\303\021\335?\320\217H\246#\2431X\224\235\243O7\006\264\313J\005\212\004\214\273WK\260\350Ihd\2044\010Kn\223\020\244R\253\314,\224\333V\3016\253h\310*\257G\000\305\316fq\362 \303\357\243d<\247\031\270\330\016\204&;\010HL\027R\350\337\204>8\010\210,h\014\001@\0068M2\233\276\n\2673Z@n\256qG\22002J2HD\253\302\302\307*\237/P\301E\010\334p\237\214\017:[%A\275V\247\322]\232\350\320\245p\340\023\007j\0173)N\261B\224< \0361m`\240\311\267\322\347E\024\203b\221\314\276\325\014D>n\021~\323@>4\310&\035\267)\203\263\2544R\273\t7u\016}\200\353H\006\244DT\024(\021\205|L\200zd\221""\204\214\026e\310|\260\315\355\007\007\356\021\223\005\275\242\000u\366G\37520\340\2067\360~/CO<\213o2\n\224Dh\004%\235h\031\270/BV\023t\"\230\025\322-\201\225S\237\230pz\261\343'\241\222JV\267\034.\005\\L-\266I\206\036\350B\205t\363LJP\363I\307]B\362\377\217IL\231ir8\232h\361~B6\014pZ\306\363\331X\231\200\002h\226\025V\r\223\360\346\025\225N\343b\346\031q\266\371\221\321\273\213\020\n\344\030<\234SB\037\31273#*!)\211\374Z(\3733\220E>\324\216\251?\207\014\252\030\301sJ\314\000\231ORp\222C6\312\r\270Da%\267fpd\240\214\354|8\266\314H\313F\3317*\243\223\327\024\002P\037=\235\r\341t\237J\356\022\035\224\225_,\0005\337\230lV\215\262[b<JYm\333\316\207\316>\220j\270\244P\246\223\320'\341\213\220\340\006Mq\352V\262\021\316\027>\216\031\000\036\033pQ)\221B\ndq\370\001\322\332\334f\000s@\363\021b\")\361\240K\332\346c\343\007sr{\310\342Q\200\024\254N\235\334\027L\036\"_\330\001\201\"EN90J\036\245\225\202\017FH\027\320\371(\374\300[D\277\240\272\2661\340\003d\343\300cl\016f\007]\255\241\001\241\2760\203r)6!\250O\033?6\014\t\n\014\272@\007\377\361\007\234\362\301\351\032\232\000\253\026\327\304\004DBT\212\357\226B\203y:\213\322\017\301O\n\301\nL\023\022*\321,\2429\305/B\356\231\224\273\207T(\225D0\374x\324bi\372\311\360\223a\375\341 \3752l\334\017\257c:n\rS\206\022\371C\222\371hl\006*\247\314\227c\347\330Td\266\203\016\006\022\2400EQ\202\260\"\001\311.\237\230c\014\020\300$\003T\257.d@dt\304d\247#X\300\343\316P)u*\227I!\022(2\010\377\201c\001&\213\212\037\356c\361\021\210\344n`1\342A*\031\216?>6~\270\216\r^\223|\204T\224\230t\266\000\220\335\216\343\353\21000M1\210\217n\224\3219\263\013m5\002\323)t\3321\032\321(x\361\025JX\333\3206\263M\215\021j\320\242a\303@\302\306\206\006JB&\214=&.\204>\033\333\346&\305v\251ALP\0346\r\207\314\246\251e\366\204*\3550\315;1I\344\313\200\242\223\005\360\237\323\350&CD\364\312\014\013\207\336\010\021Q\252WZ\241M\300\006\301\240\322H\240\350I\271GD?\215\014_\037\303\032\336\311\252\214I6\001W\313\310\352Q\315\372q*\356\254\r\334\326\251cJ\352V\014""\004\024\271\003\346\315\034dAAW\247@,8`\271C3\253,\223sR@>~! \246\332\243\354\231\032f\205\007\262r\361\316\350\n\026\037\213\tPG4W\310\037\275\270d7\370\221\214\370L\003%\354\254\0022\351\370\225H\2628\247\302\350\036\t\340e\364\304\245\213\233\356r\200\356\263G\206\000\rD0\235\242Y9\231\274\250d\325\253\242T*\032\010\000\000@\021\000\263`\020@` \222\311\304\"\332\264\352\000\344$\215\320G\210e\3260`\210\207 01\010\020j\300\020\000\020@\000\n\030\222\000\323H\370m\321\370\342\n\244\304\2270\254#\204\372^\327\371\305\001\351,<\302\201\021t\303\032%\205|\220+\264\n\376\214t\267x\245\376C\337\361\330\342!S\330\351\004\257\350\273\201\330\356>\237\342}\211T\335\262\316\316>\365]\212\247\270\245\027\3415\255\313at\r\330]\374\373\261[\327\023\320t\031t\237-\234r\313\3537\022C%,F\034\245\345\261\351\331\022\\IA\361\312A\366\256\250\n\366\325]=v.\226Y\357f56K\267\271@\027c\025\315\004\013\200\023\007\n\362\230\271\314@Op\310\246=\302\320ml)\353\t?\266\267\n\213P\200\376M\262zD\365\216\224\267\304\275\246s\010\252\265y]\365Ic\017\"M\2277\332\311\014No\334R=\"\213\350=J\316\r\213\204\320{L\3015Ny\262o\027\271\204\357\205\362u\360\217\267Cj\334\372\336\223\204\203\t\342\254qRI\275u\2436\246!\273\323 \334\017\364\266\345\033\367\247\250;\327\\\262\335\322\213\236wS\231[~1\304\211\2003\024D\002\276Y\326}K\215\342q\247w\253\233\252\257\251\250Gz\322\234\t\007\274\030\210\343iz\256\337|@\205\2471\007\013f\362As\300X\006\315O%\006R\262\347\215=\3453\345\276Q\243\237N\235\223\343S)\257[\231\317{k\230\355\277\335\t\007<\231\300A\207\322\017\323\007\377}$1\257\355;\\\004\016}:YQv\017\307s\356\t\027\373\021\006#\275\r\326\207\0203<\300>\177\3259x?\023\3735\272C\024Q\022\037\355:\244\246\264Gx\027\325\203\237W\266\327\277\201\260\344\032zd /\250\217z\312\241\013,l;ZB\3028\370\2067\335I\2610\204\245\346\270\236\362y\372\361^ I\306\213Fr\253a\026p|\251\006\367\263o[\013\203!\365\315\201\267\215\377\354&\177a\233\370n\316l\275\371\360\205Y\277cG\356\274\021\3109-\317\324(B\371\255sN\333""\330\242\256\315\250z\277F\220\237\374NA\375~\353\332\264\027\r\037\177\277\226\203\260%\212&I\025\335}\312\256\354%{\355\227\323\224\027k\374\307\220\347G\005\035F\262C]\252\216\220\212$0\252\tv3,\364\221<\n^U\370\257n\346M\232B\376\272\317\246\000\364\350\365\003\243x\360\033\217\217\326\335W@G\213nT\032%\241\212MC)\345)\272\321\021\034\004\022\335\016\315\324`\257\226D\353\324z\333&B\306\005\033\275\233\360jYU,\245\323\000%\275D8\242\022% \366\237\034fp\032MMxh7]K\336\\\202\274u\025\207bA\260O\221\r\332\031\250r%*z\244W=\215\033$\207_\347\366\020\300HO,\221\253W{\307\033<\222uo\001\316\327\333\037Z\0366\023\311\036\371\264\\\031\205q\204D}\375\233F\216\003?\310\021\206\301\371\303\361\21573\257\001\230\313u\023\201\277U\333v9\313\213\2361\356\205{\216\350\315\360\265W\342\255D{\256\313}\025]8+\246\035 \014t\331\017\201\177\373W5\355Y\360-[\360\223K7\037{t\351;\317#9I\212\306A`\340\222\303\0141\225\362\245\211\274\267\265\026'v\213\337\253\373E9\327PS\006\353\266t\200^8\010\217k\213[Z\202\200g[\033IA)\214\350\256\276\036\327\242l\202^\025\241\016\326^R\013IIz\345\tu3-\260\300\216\327\264\020\232\350sy\205\213z\241!\033\330\352\233!\3428\307y\352kin\322\026\0206\304S\337E\373\000Z\230\205\213\34262dG\307\203\231Ui\314!S'\005<\330u\237\373\246zgG\326\335\035\227\366\352\326eA\226yAp\305\251\274\255\030\205\tV&\272\231\272\014\335B}2\354\026\006Fm\375\310\006\330\207\312\361\225\205\356\001\207\271\266\216\233\334\211\245!F4\031\375\261\350ft0\214\216rlL\264\207\027I\277\211\231%`8\223\277\304\007\353\3248V\256\203\376\021\216\244\317\370&/o\206c\225_\325\270\r\313\243\017\004?Ds\265\306\266\247X?c\2273Q\336SU\213\276/\204\352\004\221\2724G\274\013\206\307*\232\210O\331F\"\310m\230\335Is\026\3459~z\3501\347\304.\355\372D\244\200\343\210PR*1\216\275F62<\034\001\014\254\275f\204\227\272\027\221\205\305\233\027M\310\316\365\377/w\275+3*\257Zk\037:\034\021pva\000\366\\\344GW\305B\007\370\034UP\017\002\350\362z8\336\223\244W,\233\371\026\022\363\337\244!\254\370l\r:\371C%""\327\256\345\366Pv ?\260\222\315\276\327\225\221\304Zm-Nl\341O\265S\351T6\016\343O\035l\273\304\345}\214\313{\206\034Po\342b0l\357\252\251-\274\225\211\261\2411\306\227\257\t\222\301\222M'\301\344\312\275\270\021\354\262;\036\337\360\351\323\030?a\334S;\260Zt\220\342\354\324\336\005w\267\374\0355X\276\312;pY\255K\311\232\005}\337[^\027)(\034\024\326\356\316$7\321\033\237\2778U\035\240d\262\213\244\241w\330\320\213\315t\244\002\322,w\306\005u\250f\236>+\222\246\350\021\205'\256\367\0317?\225\366\304Uc\344^\262\333NT\030@\264/\202\206x\000v\230\177\354\252\225\027\025O\340[\2410\246\005M\301{\326{\3048\253\230w\370\335n\305\020\326na\370v\220E@\265\027#\307\351\343\335bc\232}\314\236\360\254P\033\302\233\200\206\376\020\004\3658\246\r\211\341\225\252\265<\262\351t\016\270j\014%\tk\237\270W\311\365\327\234\031Bjz4\235\261e\317\315\305\263\271;\203cu\306g\271F\003|\373Zh1\367\3565;\030\026\346{\3144\243\267<3\326&\315\244\203L\271\033\005M\267\256\243\234M\220\216\222\321\220\333+\240\014\215v\006\237\346\204\376\036\217aFB\227/t-{323\311\2122&\tDV\016h/L\002\235c7\037\216\237rJe\325\030\314\263HJ*\005d_(\353\030\333\377\306]<7X\244@\331P\031\330\331\233\243V\033\230\200\350\340\347M\206O<Ke\273\221\230.\275\344\306\257\377\310i\207#\034\266\304\033\223\233\206&\307\355\364\251\264u\366e'J\364\241e\336E\313\177\r\037\315\211\016\360\005\255)\021\033\231h\236$\257\362\311 u\\\322\225,\027\007$^\250)\323\347\341\367p\363\013!d\306\220\215i\"^\305\1774\016\2331\311'\236_\216\2002\336c \235\212F\215hg\222%\263\330\244\250\013\223C\221\352\333\352F\245\365\023\206\376\001coDPm\374\207\337\220\354\021\251\314v\252\360\311\177\342\360@w1\004\006F\335-\rT\241*S\207CN\271l\010;h\313\317\351'}\23431\361\t\250B\250\223\365\020U\323\336\024\n\350\323\272\027L\376\246\201\245RiB\210\214\003\352\271\252\342\270|\240\177&\356\036\236\313m\207\241\346\364\202\303\033%\225\364`\001\271\327\321]\236}V'h;\207\322z\257\222\205\375u%\377X\224\355^\302\362\306\270\327\364\312\217\212\007""\t\343\237C&\362[\317\2118\006S\260\361\203\334\367\020\002#\342\353\3368\013\004\272C=0\262\332kl\2517ps\302\316#\336\273@T\026\224\034\336z\020\352wIP\020\372\270\306\033\256)\322\010\355\232\000\004\235\013D\020\252\004\017r\214\356s\010#\t\321\3279\2211w\3247,\303Ku\017\246\236\003'u&F\302Q\001x\013\016\004\316\254\005\307\375\325\206Dp\337\3767\014FN\026\037\336\321=?\000\t\254\260\360\370\200\367q\343>\3076@\261/\307\363U\217Q\203\344wUX\231\306va\307c4\"f)\331\253\030\\\230P\255\360\341\365\033,2a\253:+\213&s\260\317Z\317\3626\271\377\370\252\r\314D\367P1xz\217Qi\3132\t\013s\200\001\274%\353\332-\250\334\334?\361w\212J\2400R\355\226d\013s\264O\316d\367.\020?l\343\233\000#\250Z\025\364lVe\021\307\350\004!~>\341\334\014N*\340\250\207\"0_\211Z\001\242\231\317.)\025r\352\300P\007\276\276\257\346Li\342#rv\3206;\310\276E\302\2205}\000\201\212\216\323\3713\322\370X\375eE=\033\302\264UpZ\243\0052.\177\001H\005-\232\256I\351\256\324\267\335|\3114n\300z\263\341\217\024\023s\337\305\033\213\033\022\375\364=\253\376\214\231V\203,y\221N:\233\327\376\314\307\355\371\tYm\335\346>UC0v\320\341\023*\376\037M5\306\214\322c\376\332\256\010\000\304\200\":\010\r\206\352\354`d<\003\\\010\016t\016\201@\201k\312\307\303\231HA+\"&\375z\200D\267\350\231C\333\257m%\360{\203}d\354\"\306\247\226\363\334N$\320\232&\261\010X*\036\241\036c-\363Zy`2\003\357\217_BT\231\035\205x5\307\272\205\344\200\3730\023\2059N\0109\036\236\253rqb\006\000fq\034\364\234;\016\333\300k!\304\014w\357\216\352v\301P\300\222\3371\200\214\251r\000\271\224>\031\203\250\210\031\345\007\360M\363\266\341\036]N\251B\217\321q\037\352Q\3771\367\335\003\315A\204\377#h\205\342J\246\014\370\365\352\303sb\336V\223\017\371\022\241\341\214\202\374\3510\276\325\321-\312\300\362\036\014\357\352\227\266\335\240G\326o\222\365\351\003y\204\t2\264./>\304\236\3539\257.\363\221\031\267\213\265\273\331vc\000\224\020\362n\200\344\3728\344\001\351\300\021\n\270\264\205)v+\007@g\t\037\253\260r\312\323\207\201[\037&6\214vA!.\2737\327\350""\343\2041\206\005e\001\370K\024\200:\000\272\262\235o0\035L]-\255\006\264~q~\325\2407\202\312\327\330\227\203\264\375b\315\322K\244~\r\344\307\037\276\225\324*\342?\033\325r\366M\003\206\265O`KG\342O\3563.\2051\271\242\346\257\3404\243\275\372N\224\341\206\350]\005>nJ\223\234?\344\237\245;V<\312#\230\251\271Z\306\341xq\037\212F\252\276\303\301\246\177\010Sc\026E]-?\347\305\277\\\320(s\274W\366C\223\t1\232\346\344\n\377\217Cc\230!\004\264L#\225@QQ\377u\356\360\337+A9T:BhZ\017A'i\247?\260](\300\020\267\004\362\203\376\371\214\224\005\357\213G\265\217\323@\213\243\250\253c\261\331V\020\034f[\324\032\245\226\314]-\2732\03034X\227?k\205\326\217\201\254\021\021\351i`\345(\257\204\261\034\237\017\354W\031\013\017(\375\335K\247\005C\3130\260(\217vAAg\232\034\021S\247+`\200\306\221\017\302W\270\335\214 \336Y\271\233Q\010\r\016!\306\005\246\301\323\010k\t\202\3376@\036\257\3250\246l$\361\r\302\366\365\262\352\352\003&\357%\217\001vb82\016]?c\032\360\354\005\325(nfM\006\030\034\332B@S\213\276\273b\346=\206\002\2146\350S}V\013;\256\370l\352\345\234\310\347,\352\245)\314F\035\215\356)\303\347\375\251F\370]T\022*#\300\013\034<%\314\210.\342|4\225\315\3600\271\022\303\023\017\310\317\263\256\244\007tI\023%_\356i\350\231\331L\301XwRE8Y\024\205\245\302\323>\237\245I\340\357p\2346J\364N\360\031\3269P\2640\332\313\177\232b\362R\277\354\214\324\003U\363c7 \324-\036R]\231\272\201\\\027\3050\276\t\242n2:\017RBl\023{\010O\347\207\374\374\236P\023h\201\226\001\346\306!\232\361I\t\304\364\343\031\316C\276\241!Ox\224\236\351\203\317\271\037\234\365\032\247\020G\2377cvk\300*\001)\255\t\262p\352\310N\345S\320\214\215:b<\010Ez}\273u\202\017\326\261\275\207\314\247\276\373\275\272>0r\200\374\301\225\232\017:\200y\000(\306\003\004L\257h\316\"cd,\314\262\374H\327\035\3769\310\262\254m\026\342\252\217\021\202\360\205\rm\301PBM4nT\010/\253\265\033\371+m<*MF\375\016&\3369\220l\302\037\331\227\345t\021%\333\200\212!?-*\330\366\253\371\014\371\313\211\243\026Z\263Q:G\016c\273\341z\376\274\373\205\335jK"" \022x\230J_\214e\0055JXa2\271\352\021]\330\344\276\305BG\264\362\370\362\346a\363\323\005z\303Y\036\026SY\317\020\0379\315\017f\200\220'\317\26202\236\320\315\334)\362\220\347\r\312\265|\266\226L\2172\313\374\260\272\320\275\325\365X\366\207G\336ZQ\273E=\346t\007\335\300\273\313\r\355\201G\243\003\346Hu\317\307\272\2160\010u&\2205}\020\035\037)\r\212\030\331\245\tH$\212q\222~\n\006\002\237a?\361d\357{A\261\202\322~\212\n\260'\t\350\330\r\342\304\n9\224\275\361$\002\223\302\366<\204w\327v\010\262\305\343\224e\206$$\245\\\347w~\376\301\334\265s\227\255\310\036}(\336\306/3\325%i\033\331\255\377i\372\021\236\255\033\256a\007X\266\251\252\376\022\321\226\200\263\235\317\016\347\200\255\010q\352<\024{\006\316\372\025\322\226\340\327L\373\004\353E\260\370V\272\3673j\261\212\330q\321F\210o\334=\302\2653\321\343\300\361\263YB \332T\347\270\244\353\335\204\306\020\245\325\216l\337\272\301:=\021\026&\233\262\323\267,\254\375\245\241\313\363\275\217m{d\356\266WK;)\325\007Zm\371\375\352iD\206\014s\274\334]XZ\374\363\203\3179\231BX\013\023\2173\215\265\203#\004\255'\207\335\341\300v\010\035x\352]\300\005WMLkj\3144\340Xe\307e\004\315\203\356\323.2\255\236d\257S\332\331b\241Rsr\225)\203\233\314\227r\326\254\215e(A\363\024\323\347\033;d\t\250B\010xok\000\225\010~%P\333@\254\356x\2051\020\211\212\365z\266U`\0066\236cE\367\022\207I\337p\211=\216\202X+5\020I\310V+|\223j\324!\3278\371=\226\202\365S@\036\243G\336\255\225hd\353\246\336N\323\257-r\336\016\371@\271\255\247A\330\216ct\"\262d\205\324O\276\003|:#\226\244^\021dg@\255L\230\316\177\201*\017@\311E\224\034W>^\346\356.\003K\274\002\340R\251\354T\263F\3248]T\0160\000\317=\022T+ .'\230\306;SW\210\2502\010>@'\220\035o\234\311\345\212R\t\276{\353u$K\315\313\253\247g\242\352\020\346V\022%\356\241mY\261\014_`MP\320c\330\027\351/\356\374t\035B\240\271\026n\341\236\2624\335\345#u\022\355(\2574\302\373)\274V\311\267L\313\306\264\022\251\341a\261*?\010\002h\256\261\364\375\354L\207\235\017z\243unAlB\346\230/\017&2\346?\273\304\261\312\366""\233\311#i\027\351G\267{CZ\270'\237\364\326\020O }\306\300I!\000@\221E\314\037y3;\025H\340S\310x\201B'\357&\273\227!H\246SN\245#3K)\213\220\311\250D\261\177\\W\265\267\334'`\326Xy\210z\221\222\362\332#-T\336aO\204o+\203E\020.\024\0345\006\233\010e\341k\017\220Q\245\253\261\365\010zm>\200\314\003.\204\301\316\347F\3119\002\263\272S{\310F\004\316\236\274\346Kf\336t\261<\032<\250!X\033\266\" J;S\030\257k\231:R'F*\3745\231:(`\237?W\222,\212;\210\2343\210\346\3779\232\232\2122kS\n)\335m\0037/\030Y\025c\007\233\214\000\373hg\261\003\016\014\256\212\373-\302\223Zek\216\221\031\271\364\021(\235\324:\321]\337\233Q[\343|\241\037\225y\231\313\320\317\240gF\023\373\230\374s3n\301i\214\231l?p\356\352%\014\323(\r`I~\323#\333yX`\345\353\252\307\252\337k\241\371\305:\022rC\000\005\305\352i\357x#mUc\022\340\np\001\034`D\307\232j\254\234\256\370\264zS(u\322\260\317U\207\227\363c\222\342\270\246q\265\377\227\317<\020\360M\007\274\016<5\366\032X\357\235\276f \335I\260\324J)\002I\340\327\310\214\364,x\301w-\005\0379\352W\230y\315\356\341\013\371\320\007\363n\300\334\2418\203\010\226Yc\326P\020P\320\323D,\370GIcQ\363\244\325\033\212\256r\234\001M\000\213\312:\275\215U(^[\304\366\301\351I\202\032\2158'\213+\2114\213\"\201\2279\315\255\367S\270B\216\204':\340T\237\212k\216\312\342yg\250\"\365\031,\013\002Xo\223\330\342\346ObP\032\007\264{\200O\016\003\021\353\231o\000\\U\243/\227 \3405\263`\355\315\345\330\323\225\311`\271\321;\254\207\336\372L\232\005\273\240G\231\036\310\203\326k\326\272\323B%7>\344\373\351\356f\277\330Z\366m\323in7N\204\322\177\357\362j\362Kc\310\215X5\340\302A\322\355\227\277\364\213\331\243f\323\3469|\027\265\367:'\352\220\261\17734\n\n\356\262\252\263\256\022\007\275\310\350\350C\345:43\323g\255O\232]\000+g7\325\347%\371\370\326\210D\034]\255$\025:\220<\303\340\250d\373+`\177\236-E\262\317.\276?i\360\305J\221\320o\305|\332\245\353Po\270O\0035\t(7\314\351\243tP^.\322\305T\324:\313\204\316\330\374&\322\277\257p\304\346\300+1W\241\036\352\305\315W\244\310\355\233E0\216""\262\2558\3405\221\250!\226?\303\377\357\313\276\\\000`\375u\225\224\037s\237:\311\211\351hm\222)<\360tO\250\374D\035\305%\211\023-@\332wt0n\246'\367]\212\035\211\357\263\370\n|\030\324\347\250\203\255\014w\227v\330\032\336}\2232]\000\035\346\242\311\005h\\Y\311t\230W\3604\211D\236Ul\326\321n\027\237\224\017P\355ct\350\327\322A\365\337\261F\364]\243@\361R\332,\1772?12M87G\3171_\216}\t+c\212\273\342\345x\267\356\200a\354 \205\210\202\301#\003\243\364i\222\335\214Rc\363\225i+v\345\260\215q\217\260\243\030\353\210\236\232~\016\363UpT\204\3445c\315\302\312\257B\035\217\263\373\221\007\006\360\237\304\024\350\233\263\tW~k\313@&}`\261\342\016[4F\374sq\373P8;\352Ae\035Y\025\277i|$#\3418\247<B\033\363\314\307\271\213\217\302\300X_\037P\036\032\374\337\226\333\250\300\022\017\304\341\254\\#\001\306cT\310\362\313\352\344\202?\014\014G\230x\244\265\360\010\307\241\035\227\020?\247\006W\210Y\014\021\313\221\032$\326\237\337\023Z\255\035\340,\030\327\303d\266\027\355x\345\352\206O\265\324/\344\024\333\"j\273\221\022\365D\304\226k\363Ds\016\275\350\351\036\306\347\016)\253~\271\251\305\323V\203\352\262\332;\263\240\213\237,\266\271\"`\020\\Z\003-\353\344\177\231(5Ft#v\213;+\220i>\321\253\034)\037\252Y\220\227\334\014\241\303g\250\323\362w_X8#\251\250\"\305\031\001\265@\304Z\374:\031\343\007\3460\374q\\W\"\374\210\274\314\362)\307$n,\200\242\320\261\021O\230\251\374\234\030\223\266\333\0360\343\317\235\265h\3373:z\264~\311\000\204u\223\367e\241\222\264\254q(\214\327\373)\3510\357\335\253Wq\251/s\206\373\372x\270\255gD\302,\037\235U\004\307\014\246\037\000S\361\240\317\"\211\320u89\n<\340\254\205\233\312\370\330|\363\253\020`$\000P\r\\\260\324mG\352$\335\262\260\030\371\345\356\363\305f\014L6=\331\202\237I\201\2621\315\013\351\006m\nH\3660\211\305Ul.V\273\234\022\007\006\322\364[`\304\271\006\267#\231\031V\216\305\013\221\222\341\330\035\375\303\014:i\222; \235\363\211n\354V1\021p\213.M\246\264\302\227\035 {tOeFT\254\364\255\021S\302U\023\211\270>\342@-\203\311\256\356\311[XR|\022""\255E\262\234\317\360I\023\314\3208f\266\301\342L\320`',F\263\"tN\024\352+\313\254\241\213\252h\356\361\313Q\244\365\222\374\034\312\225\271<*\375u\200\271.<\037\252\235\3276j\211\347\333\322=-w\345\353\351\016\342\036a\271>\325Ru[\237\014\244\375D\351\013 \013Q\366\016\023\212\211A\334~\212\272\253\n\373\362\373\320\207\347x\351Z\372\364\253\206j\346-\313\335\021R`B\"\2551.5K\300\222\035n\227\374[\3314V\310\325B\010\336p\321F\225C\002\200\373YY\303H!!\327\351X\343\256\023\023\262\264.X\013W\375;\352\021\341\240\250\246\236\302e\205\334\323\263!C\363\3434\276\245\313\331\\5\2110\302L,\230\266\270\223\"L\225\327\010\005\203\321\337<\361\371\221y\375\366\242\307\230\030%\022\270\374\232Dg\200Z92\354#\205\304\236\004$<\244'\327\211\275\010\321\246\365W9\232G\022{\023\363>\261\226ks\005\030\316\002\201\004\212W\316_b\000\332\336i]l?2k\357H\260\303BHn\365\235o9\324\035\311\r\350\266\217\177\255\202z\003\200g$\203\252RP\272M\2069\375\033\237YY\273\032q\t\350\337`\207\215\361\343\200O\213\224\220\010\2225\2470\332\311\342\330@\322\367U\304\002B\036<\330\004\025[\007O)\307..\325\351\263\266Tmp\016\216A\310\030\364\360<\341\237\233o\243\243`\022[u\270\227*\266\263\001Y\344\035\243+\206A\017YA\270\205\013R\277\204C\023\261pJe\003=XD\254\024\276\362!wf\211?\222\200\247Tj\010\341EGf~^\342\232\204:\211\306\021\352\201\230^Dk\371\030C?\240\262]\220\362\252d\201_\371\230f\204\301c\310\343p1\\\344\302\037\315\243\010\270\366\0272\241\362/u\036_\245\246\303\370\013\270<\212\337\306+\013\215/\200\010\264\311M\206\022@\276\321i\274=\264h\321\177\244\272\201\230^\006\2148a\005\211\301\235\235\177\207-'\243nIR\032p\337\025\264a\342\000lZam\233|\303\233#\317\377\240/o\027\213=\315B{\210\264\333QH\243u\361\032\252\313U\320+\323Df\3454\211i\225%\031\261\244\253\313\371\313\303!\342\362$L\250\223\320\231\334d#\224ze0\206E\216\023T\314u4g\255\267-*L\032\326D\000\033\000*\247~\343\214\033\354\321&\260\373\370\220b\3445\335`l\242\252\"\255,<\302\305\333\n\205\207\344\252\332\313\320{\031X\005G""\305-\365\233\336n\357B\263;)\263\350&e\371\203\353f/]\341\302F\221H\001\020\360[T\006\263)\226\376\365\001\352\007\317\336\225\007p,\3602\347\017Y\206\246]\"\304\211\\L}\330\302\262\231\240\036\274&\307Q\344\301\362\304j\020\225\276\200\006\027a\254\206\375\233q\006\\]\216\306,.w~v\241\017\205\020\002C(\267\357\300\225\271\267\030\t3T\335\301/\006\273\277%\252Di^h^\262\260\317\032?:6\255\177\210\315\177\226\231\243\306&\3628\327\031H\2171\316\314l$AP\320\366\031\310\261pj\233\336xm\316\037N\026,\344\217\350\3603\371k\206\256bzm\376\274WmKc\221\33754\"(w\000\362\343>\000\276\0100P\301!\016b\276G\304\221\324\274\2357j\337o)\221pCT\354G\227W&k\037&p\353\264\376;=+\3430\3201\373\277W2v\371\353\300\032\264\247\257\247\2074Cu3U\t\n\214\247\201O\n6q\013\260\226\360\350\0010)Q\266L\243\336\304\010\335\370[m\252\313f\3742\314\272\001/^\216\316 \2004\211\017\273\314\274\250\003\247\362\217\203V\260\3671\347\330\331b\360=\254C\346\004#\206q\272\300\266HlLi\014\313P] \352W(\002\314\330\373\315#s7U\306\024<\264\2704\330\340\212\033\rDs\020\315O\004\027>\373T\2363\2315\332\022\330\366\315'E\253\216\026\373\327\347\023C\311_\361\036F\021?s0}T\2272a\345\331\2560\256\221\352\213\370G\266P$c\204\021Lf\326\201`\024\304\305\246\353\202\216\234\215\235\234`kJ\0313\005\026\332\0014&\347\314\016ti\316\232e\202\247l\210\374\271G\0140%k\037\217[\355tVk'\273\255}w`}l\305<g\022\214\270\340\001\310cDR\036\362\256\035\227\006@%\032\\d\005\375 \230\364w\017\264\333Y\3356\312TXkC@u\007\373\212\370\030}\310\226\344\255\351\216ik\010F\351\3741\377:\253\304\t\006\003l_\245\260\263=K\345\323xo\3239\322\270\371\322\354\n7\223\232x\322.\000\316\"Ax\025%\366y\223D\2656\224w>\204$S\337<\301\330CME\2677O\214\352\003\221-F<\234|L\341l\332\366\357\240\240\002\220\265\270\350\255*\253p\020k\376\322\301\002\357\003\014\006!Vp\236k\335\\\355L\341\271d\337\002\032\340\313\356\010|6\326\024\304\251Wk\216\036\300\\\310\014\030\221e\363~Q\223\276Z-\241\272\351\006Q\212\271\037Z\3572\262\200&\220\023\236\203zZ""\030z\216\006\251\371\2518\256uAV\272q\224N[\205\201\210UKV\375\003&-F\207\231\311P\212\277\035\274K\214\270z\304,\205rO\372]|)\027~\371\324f\276\213\352Z|>\021\224\270\324IP\253J\222\007\\%\326X/\344\252\374\316\253\340q\215R\200R>\316RB\257\245\014\240\312\371\276\323\346\355\"\266\032\370\264\221mi\307\236\\}\013\007\"$fn\277\314\306\303\254\207\336A7J\036thn\356\024\027\200\210t\235\025\206\261\277\006N\000\301\241@q\270\361z\266\333\200r:\202\256%T\240\261\335\235\367\205\302\027\331,\033\3268\371^@\325\226\2135\311\010g\344\260\376J\230\310\035\224\235\254\023\364\010;\033\236P=Z=T\306\230Q\027bT\234w%o7L\264\276\3637bB\033^3\323\362d, \025\315%\355\340\250\373\247\013h\326\215\220\026+\214Y\377\022\3770W\344\021\207\272\034D\256\351\302\314n\214\225}\313\372N{V\3537\2725\032\025\005U\212Lo\330\021\313\310\022\251w\305\003\001sfx\323\314\277\025J\002\236\202\247\325\273L\243r\335\024a5\303\2636\206z!&\240\0178i\202\325\206\226^\357\323\006[\316xh8\266\\1\2427Kf\270\026DU\304\r\246l\315\201\201\224\245!\255\253P\034\247\210\340\034Xg\205\035\032\314_\356\035],\216\2322\020\207\017\353V\326\206\035\272\025\334S\336\356n\332\301\377\251JI\212\217?\231<\016\255\221\374\214K\327\375\355\025q\267\225\313\246\217o\371+\241!\307\303\232\007b\331\261\311\006\234\244P\032C+ \214\010\301L\303\327\376\334\275\274\345dgO\3105\275\"2\234\0221\224\234\270o\307B\273\206Z\357R\350\367\002\250%8\232\3422\373\025Lk\035\034\334\367Axg\371\2173z'\207CA\251\254VL4Pa\026)\ng\354 \321\221\004M\326\322\364\304\03034\306\360\251\210\177&r\016#\216~\357\303z\251\025\222\027\346\r\367\254\315.L\246\215\272UW\212\266D\315\304\200[\324\250iW\17764-\247\347\275\376~5y\010\273\373<\004\205\033\357i\372\316\347\013\017\265\006\312'4ozZ\236\035\376(\027\257\343m\2043V6\341\354(\216!:C\377s\344\277\325\372L\306\231\240\177\304)c\232dx\243\270\341\240\266\317\325#6r\302t\031R\246K\245\306\001\276\306h}\274\301>\207\346\200\375\014\300\362G\213\222Pi\254\033\310\336\224-0\262\016\350\273\360l""\276\007\002}`\332\243\374p\006\023\003\377l*\004\262\360W\204\334\3628\273;K^\262u\3208`\002\362\223^\264\275\020\006\330\330{\202+\202\"\346Q\202\320\336\306\030'B\376P\266\202}\252\327\311\230\342RH\373\243\035Zv\210/Pgq\307r\r<\006\307\277\240W\346\237\211z\236\037'\030\001ST%j\177\225\377\244\353\037V\251\211g\376\325\2105\253?\303\262\017\304n\302s\353\337\362\277\010\341W:\000\023\346P\031\330\027#IP\364+\203\277&]\037\202\236\337S\314\021\242\343\340\333O\242\254\324RH\337$L\357\302\017J\342\343\361\313a\346D\275\313\335>\375\022\323!FZT\002\202;\215\347N\211\233\342\227W@\024\200\243\223\373P\030\224\234\335\303\r\033\034\301^\307\001\276~\241\004\276\301{\357Rp`\277\322J\262Z&\020\364\002\345\315\305\270\347\325\231\232p\272f\252\210~\0179d\rlY\r\251\207jc\006\261\204bmrL\234\246\017\022\014\001]\256\027xV\210\271hi\306kA\006`F\0266<\ts\005\361kEt\200V\025^\267\234\036\264\357\260b\267\245Z\273\322\365\227\242\237iU\244b`\010\002\307\250\222\017\245^\241\000%\377]eU\204n\230\033\0169u^\032\201\323\376\004Q\r\0141\315*\220\024?\003\344\254\341;\263\\\305V\311i\307W\233\034\322\277\274\341\004\324\225\227\023=\3520\334\254\000N\035\344\004\254C\377\200\2041G\336\01049\350\345\032{EgN\030\0219\263\317\002\262\242th\020R\241\177AQ\266\261,\253\301\247KD\241\t\203[\260v\203\014#\211\324\301.\340Yp%M\253^F\317a\210\231M]\272\355\3250.\217\016\020\034\255f\207\326\320vu\022\031\303\375II\005\030?\253\037{9\027\016\275<M\302\013@Q$\237\272\020h\311\026\350)\377\254}\232\035\362iM\275\215\205\333\303s\225D\341\004W5\201\025\345\025/\033\304\307}R\361\315\306\024v\002!\265\260l)\223u\212\346\201\350\357\233\005\201J\216\030P\335\242YU(&\311v\242+\264!\304\221\301B\177}\237mD~-<\223\n\206\222l\346\255\326\221\375\261^\333\375\3441\244\226\033h\301\245\033\276 C\357o\351\351\2207\230\306\363\240\006\235\372\257\224\003F%.a\247'\266,az\315\371\001t\222\277W`\245\236F\200zO\022\377\232\224\177Y\220\006\232\033\215\222.\210h\352\273I`Y\"i\215\210|\366\006`\254\023*S\275""\2778z\316\243\253\312<_\305\343\275\227\346\te\3772r\204\221\024q\226e\rC\355e)\245\344Bl\312Q\030\334\355\242`\302\r\001\027\037\365T\300\304m\200\335\240~<\035,\000\364\322O\257\374\016\224\204\276\003\003\242\313\275T\320\364\265>\257\256\227\027@!\226\263\234\227<\253\241+\207\205\320!$\251\314\371\356E\263i\321\020\0030;\035*\337\010a\373q\352\311}\347\273I\007\310\257\245t\331V\265\342\352\244K\277\367\014\t\210\345\371\344\364}b\210\316-\371fQr\361\255\025\017\3742\361\234\203\314\016\351`\316\341CavS(\026Z6\211`\2212\276b\252\357\306D\250$z9\320\r\020\3100xv\371\205\205Ck\224\240\263\036y\334\352j\025\017k\303\360\030\241o\246x\356|r\014\022X\365\006\231d=?\323\326=\212\317d8\357\240\277\265f\302\261,J\241\340T8\306\332\027\336\201G\261nG\245q\016\270\310\315h\310\205\352V\025\260\233\306!\006\362\266\264\227\rb\315D\267\214\315\333\336ia\337\0241\317E\307\334\374@\024R\234v\362\344\016\220\214x\330J.\250\250\347\026y$\321\377\362i\342\210/\375l@\021T|\361\0010\313\020\006(i)\211\263\200\214w\013.\270\275\234\300\232\317*\322\316\2301+\213nfG\222\322\315\357e!\300\204+j\261e\342\027\327U\316\303\234p\272\365\250\352\302\256O\177\321\305\305\355\234\262\205P\360\261\204>\312\r\177Q+\031,\016\256W\334\264\327\301\371\320ZL\221\252\324}\367\360'0\360sl)O\260\312\213:'\302\273i\210\334\2712\205\310\214H9\003\177H \033\217\352\275\330\231\253\014&\242\220M!\232\210~\013d\304\234\236\270VW\263\342\245\304\271.\201[!y\215Z\203Z\217F\360\250\327\201\300\270|\363\375\245\177D\325\257B\223\302\026\305!\033\250\026$\345G\315\251C^\0067\201\337\337`\356\353\005^9\364Q\312\321\245v\212|\302\304\260\030\330\243\361\231\240\022ZR\350\"\301%d\377z\016\332%T\206\245\t\2134<j\311\300\361s\225,\030n\307!\t\320'M\017\026i+#\210\177\032A\251L\325P\320D\361\233\366q\"\345\360\245\2757\322\\\307\376m\320R\\\273^\014-\320?6\221\247m\005\272\343\322\036\376\202/\365]\371b\212\201)\323\031\272u\016\027!\000\177\252\244\300\315D\211M\337\232\251\211V3\360\036\371\261\"\211\321\316!""\344\307ul\227x\277\316\377\211\233\332i\330I:\245\235\010\365(\304\334\373C}X\232E\373G\365qs\335\203@\37318\320\375\010\315\306\2765Xdw\342\264\220\370\014\272\2633\237m\241\331,)\240]\376=\252\376\023(H\253D\335\265\350\226ra_B\262\344\241u#\230\034\270\000\214\377\241\002\240\367\002\225\030B\035\206\034u7\276\330\344C\305\210h\263\0226\013\347\2127\350\271p\321\026\313r-\021\313\301\303\030\356\340N:\354\245\332\354*G\250\303\"\002I2J\300.g\216\300HY\000\371\216\307\022|\262'\032W\020\216\206\321f\211\361S/\222Tb}2\305Ra\223\220\301\251\033\021\225H!0\357\235\201\251(\2201\010wF\365.\257\261\267\217v\203\235\005R\357\t\034\376\r<\000\324\034B\344\222\001\222\033\252W\316\000*\"a\250\223\010&\367\013\016\360\022\212A\037}\362\n\364%\357\214\207\025\335\367\346\270\2420K{\360\314\177\307h@\005\277\367\247\222\347<\"(\337\236;p\245\001\211\204\335\302\027\203\004\257\352\371S\031Ctt\267\220-#\347ry\227\tit\243\241\233\032\256\006\014\010\244\213\023H\355\311p?\223\020\216fQ\010\240\027\336@\2011\336\223\346g\370\222B\3641\364\212\354@D\363C\275?\312\354RS\327)\214\365\202oj\311\346L\300Q\246UT\r\2721Z\021\207\212%Bh\2571q\277\354\322\366xd*\004\267\031\276@eKH!\364\037\310\333![\313%\251\035S\022\025\340\216 \020\335T\361!\341\260BR\216\377\342\316s\374'\3411\363!\022\243\254\275TY\227\276\300\302\224\325\251\340\222\204G\024\352\014#\034&\334^\326\304\303\365\353\351\356\3042\214f_'k\227\017\332\016\342[\241O\3775Jl\021\007\216\200c\363\320\3408w\033e\227\250 \230\212\324n\273\026\245\260\302;\363\036V\362e\315r\223; \352\370\355\177\324\332'\036\310\361\361'\276\316\376\316-\312\003)\301\263\037d\np\307\220\031\327\276h\003c\026\306\323E\214D\316EV\017\276\325\377\253dd\201{\006K|\367\014|\270\235\030\223\254\264\200f\365\016\024,\345\004\317\347\025\327\033\333\204\340\026\337y\005\002\0069\235\004UWp \262[w\275\206\230}\224\304\201\000\236\261\3732\222\304A`\326\220\036\301y\374;\226m\337\311\n\316ZE=<\354\270~\032cc,\022\376\032\206$:\220\313\304\271H\373p""\010\363\201\343\221\363\275\022\376\244//\371\022\357\351\260\322\217\203/\332\223\364\222i3\206d)\22554\266;\315 \"*\205\344 \335_\211\036/\232\310Bo\205d\217\005'\230G\320\250L\025jg\345\3073\312\352IM\335\010\0327\014~F\367\367\342\006\371\347\211\350\371='\212\375\003\266\331\200F\334P\010]FN/]\356\316z\267A\230T\270'\207\036\027>\263\364|\241\0068\202c\306\3059\354\377\264~\335\303\333P\270\255\3620j\004%\220\357O\376\347\367\270\303\200\2362\276\273)S\254DQ\204\376\334\030\313/\224\361d\261\315\367\327\034\322pQQ\262\321\363\002\376b7b|\030\304F\264 \342! \010\373\201P\322M\001\362\232\007\311\005%\016\\\263$\"\301\3247\204\034\261\241\305\"\352\373/\330\366\007c\316\227\"\257\031\231P8\322\003\367)IN)\021\373jz\336\277UI(\265\023\303G\206\207D\322\203\373\204\317\\\037-\302M\314\342\371\030\335\263\333a\270\246Yb\206\017iP&*I\021\334\007\365E\360\3001\002\312Yn\244;\276\266\266\335\342e\200\006\260H\233{\307\325\031\200\304W\242.%>\000\241\365jKP\302jN\361h\235\026\264w0\342z\353\3531\302K\003\324\002n\020\033D\233\334\024DY\206\344@HF\366w\302\254J\347\301\260\031j{\371\\k\033\361gl\310h\032/lnb\022\235c\357\347F\331\204-\370F\334\024CX\3153K\n\257\3324\204L9\r\243\005/\177M\221\270\251u0m)\004a\333\254\360\366\312\321\370\237\347&E\233K\313\210t\341\250\005D1[B\254\3056y\317;q\253eAl\351s\210%v\247\335\246\330\354\222`]0~\245\004OqI\272\300\246\247\213\006+\362\357\232\322j\214\224\3519h\254\340\312\236\330Sb\305\216$\352\324\021\314Ck\344}5&\226?\306\270/\027=\335\226\310\324\237\177D\177&\261\"1#\233\306\037\313\2021\206\016\255b\367r\023\0175\311\273K\242\273\231Lk%UDS\243\326O\003\320\303\356\354\263b\211;\303\316\274\301m\000(wH\322\376\257\033\311S\017\2350\220+\357\233\271\256\211\317K\357\275 \355\355\037\247J\246m\300\014\217\361\022T\030\000\223\\\233L\254\273\256\222\023\357\017\330\234\370j\334E\245\330\356\264F\"\003j\327t\006\352\000WF\214%*\016K`\305\236'\020\00500P)&\344\211U\0338e\013`\306\255~\351\252\324|\250X\327\376\003j\307\236\310""\2604\314\245\347}\331\036:T+\0242\242\242\241\222\216\336\234;\316}E!\022\203\345\363c>\214\312\234\200s\003p\207\034\247\244\220\3210\260\377\326a\201\306\r\246N\3158\310\037\370k\314R$\337\371\t\307j\233j\n\212\334/\000r\007\001\330]\340\361\r(\001yQ\312=\225\352^9.R6\240c\"\021\257wx\030.Gq\024\033\232>ers-\237\344-{O\023\n\357!s\263\240\030\311E\344f\354I\307X\344\024\267|/-\376M\000\265\204\n\305\243\252\024\030m\252\225\257\274a\336O7\376I\203\025\367\354\307\020\224]\217\242,\307\222n\240r\210<\321\266\201:P[C\364\250\377\376\024\0147r!+\n\375\342\357\016/]\201\205+J\372N\nL\201-\351\227\3261\tgS\305\205\330N\236\2140\317Hm\037a\006\236\272bi\273\267E#\365\301*\340\232-\224I\030J\211\211\340\273\262\367\313\200\017R\341\323|\017\273\373\n\345\013\303K\026\315\356\264\346\235\352\206\213\257\017\371\220&5\306\374\312\033\272\271*B^<j\316\325\037NSAd\374\3355{\026v\355\367\317\3650\252\236\324{\234\255\262\031\254\242)V+\226\203\270:\3467[-\333;\356\233bTd\2600W\261\370\213\210\322=}sX_e2p\251t\231\303-4\210\366\327\034\025=j\001{\336\223\201s\201\023\321\364\353C\207\351(\316X3\222\321e\215UJ\223\20500\211O4$\242\304H~\377~\241~D\\<[\302\336Lj\177\036\302P\006GT\026F`\177\326J\227\365V\030\002\270\2376>\326\275\014\031\261\202P\207\213&\310\254v\2220\240\215_\321\024I\355M\232\310\036\"\235\252\247\225>\315\215\014\267}\244/SF\027\002\003\251x\0172\026\346\257}c\211\023}\2030\272H\264]\264!\353\272s\247V\272:!z\365[\244\275\255\365\261\300\317\374\325+\305\020\240W\000\373\254\211\3759N\252\270H\363RmR3\327\221\210\246\356r\361\311-\022\272b\323\205\355\352\322$\035y\373\244\337\205P\366\352\256\2049/H9\265\\\345\255\022\206\"\210\014\271\211x\001E\226)\265\220\330%\"\361E6\022\332\"\326t\252\001y\256A#\224\360H\373\021\025\001\365I\340\211\027\301\307\\\265m\323\327R\343\375\224\342B\227T\372Y u\375\240h`\324\363\230\242Tn`\017.\341\371\004p0\\\325KO\254\214\237\033@\265gk\216\335\024\262p\262\002p\25316z\343pA{\313\251\200~\274&\334\265\253\0060\"h\002,""\325-\025bk\266\031~\"N[\274\246`\273{\307\31090@;\346\210\242\016LU\277^d\221\275\205\022\021f\003\264\315_\261\007[H\004\255^ <3\010\3655!r\351\021\022\276/h\2644\207p+\223-\200W\360:\201\337\217#\262\006\227\016\240o'\203SF\331\362\020o\205mS\311\326,p:\365qy\204\016G\261\307K}>\021\027\222~\367\002\210yz)6\275xX\004\246\225\204\211\236Mg)\025&\302e\252\273\372Z\201\n)L\217\272\203\021\017Q\347a\224\003\301\010\324\354\246n\227G\363\013\2534\347\326\2512\273\344\306\326r\2162W\354#l\364\315\240\300\270k\260;\261\210\322\276Y\231\220Ut\277L\3562\250\257sZW\366Ag\242a\240T\003o\034\r8\310o\3530\372\360\275\352\226\340\333\217a\023E\237\315\236\230\2214\224OJ\004\034\234m\316\236!\354e+\353\322\205\323\330(\225<\232!\202,\255|7p\251c#\246\262l\336\205\027#\342\301\264/\010\353\265tT\330\350\242$\213\206\036\231=\244\353\201O\275E\241\274\001j}\024\261h\310\023\226\031\336\304\256\217\002\324\307\314\330\004/ N\306\014F\211i\211@R\315\375\311)z\255`=\211\233\317\214\20535l|:D\273\007\366\033h\342\021\n\361\237Q\005V\213\351|([>M}p\024\237D\330\255T\343!(\023\361\213\203\263@\232\340\240\320py?\331\314\200\231\013\250\243Z\034\006\032\356\250\226\342;\263\310\356?m`m\025:l\305O\305\037w\203J#\256l\312%[D\21302\014\241\366\233\210/\352l\250\317\217\214\264\211\273;\355\372\036\233\3378O?&\335M\247P\235H\231\266&)\203\016\234H`\271d\014\231\013:\2531w\275>*50\203T\230K#\0016W\323`U\277\333%\247\245\245\324@p5R/\326\250b\243\220\213\301\201@\244\t\212\375\204q\036\265\336\275\006\376Z\016\030\374\231\306\252\001\317\225\371C\3705\350\320\0304\244[\237n\266\237b=\251<7;\274r\n\306\030x&\200_n\035\265\342\031%\322\243#\260R\313q\276$\034\351\331\273\022\351\303\021\366\254H\210\242owPA\256\354\331\013\357l\031\014\366L&\365\3521\224\335\233eRX \373\nd\343\324X\333rS\370\252\037N\202\347:(%4\2274\207LN\224\233\2349\340H\234F\315\013\220&_\207r\246\030\202\374\373\367\036\304\010c\030\360\205\364v\376\n\376#j\201\317\333 \203]\257\2258\352\345*\001\216Jf(\313ptzod\340\327""\245w\302\207b\032\365\247\203\321S\000\010\201N\340\255B\336\324\261\226D}\340\312[\304\372\033B\335\034k\326&\362\201 \325\016\243\017:Db\213h\2578*Oh\265\343\277A\3559`\232\027\035\3777\312\204f]&\233>T\252qR\006Nb\326\332\201\272\013\377\372E\204K\325\016\342p\314\311\0051[\006L\301\255\325\364B\3434\326\256^A?2\2773\013t\370\365-\367\024e\301\344\237V\243i\271]O\245%(\266\247_J\345\376d1L~AJ\351\262r\340|\245\006\306HTe\355\0065t\362\250\302\224\266:B\005\217x\274\023\216)j|\234p\027B\226\345\266 4\34024\\\336\270\262\367\2677ta\033\264O*\302b\354# X'\273\245\317\004CslI\340\3148\tM\250T&VD9x\235J\231\251\347\007\024\244.\200a\327\2051;\330U\036\222]\331)\351\251\204\230\177\177\030$m[\213GU\344\251\334\003\016\371\377G\341\273\304\372\235L?`\000\033H\374\\\377R/\2516\212\326w\371\305\253d5\361Si\351\360\2244\no\347\311OQ\364\237\234Z(\205.\\9\364\334\355\025D\032$\216\363\372\360\305#\222A\350\303M\336\363\"\234\274\336;\213H\023\22023\345Z\022?\321a\225u\201\366\345\372\245\224\330\213\320={H\244\t\347\354ma^\234\337\317\244[9\260T\346rO\377\331\346KJ\311OX\2600L\217o\225y\275\220\356\252\221\226\300\324\366\327\271\325\270\206I\275_&l\372\302i\374\247Pe\343C\343\024d\224\256\035\t9m\271~1R\320\307*b\355\002ma\372\373&\310)J=\251\226]S\257\2617\\\354\002\220B\272/;tgL+\351\035\n\206l\266\225\207ac\300(#\373\244\030\261\211\236\365\200F\2701\017]\226\315\207\r\313\300;GFvM\367.\273X\3062\004\336\350\0232\246&5\305\030\347\235\266\235\257\025<\207^\216u\326\2709\273Ye\376\263\255\010\014;\263/G\361\026t\245>\340\000\270\277)0I\351a.]\253\253\311\314I#2\01348a\232x\313=\225\334\347\342\372m\274\242\026\214gE\360\020\264;\366\240\030@9O\2251\345\346\245Em\206\320`\340M\203U\267{A\3032\370gg\361\245\241\202y\307\264\031\205\314\254\003\261\375H\266\266s\220r\02530S\022[g\260l\274W\r9<\374\264\245\266\373\204\014,f\023\353\244A\311\242H\253b.\274:\026[T\200\205<\231\321aX\211^\337\243\2307E\377n\331\241m\264\361>\2310\322\027.qK\335D=\274\302\026\310n\036\322\3043d""tn\260F$\1779\030@x\nQtG\367[\006\203&`\234\254\250\033h\302\024\r\314~\202&\2406C\245\006k\316\360\026`\212N\315G\233p\000\230\227` \210\264\022\255mZ\226$\306\000@\313di\002H\352\311\034\021\301\330\234\344L\374+5\366!\301v}\204\200\225\346\233\303\356\244w%t\031\242#|\206o\262$n\2629\033\3250\2467\300\260\303\252\334\331\322\017z-=\3372\216C#\345\010\014\270\356\\\330\227#\335\333\nU\005\360\200\027\223\351t\021\352\307\337\025\240\001\246L9%\354\304\031\031\355\006\301\013\215\366D\255%:\274D;O'-\363\210N\212\342\350jP\376\307p\301\0278\210\2308~\023\007#9\207\353\013F\r\016\340\246\226\004\333\007\000\326\274\314\233\307l\025l\023)\030@\312N(\264Ob\310\017a\022*25\274\302\325\244\274%\031]Q\201\275\257\310\313^\254wI\020\375\306g\253\351\222*5qb\361\317-\247Y\362X\031\0179kGLY|\300dH\353\253_\346\220\207\037\241\200\037n\324\221md\363\223<\014\215\230\377\375\234\036&\261\352|\024F\202U\327\227n/\311O\3332\264!\201\325k\354\240\251\243\367\312\013\275\311;5\266\306\332,\275\031]\334f\277\267\013(\211\326\362Xo\205\203Py\344\t\242;\351b\013\211\244\003-\204\257h\330\363\301\277\224\304\002{\203#\323\226qQ\250\267\366\225\373\327~\207\205\037\324\367\206*\221P 9PG\031e\210\022\307\327w\216\351\240\254\345\014R\362\032\224\224\362\234\003E\222L\314\256\020\330f\273\n\241/\200\311\234\357\250&\352\240\332Yzm\234\227Sh|\030\275\034\347\023{BDP\361O\231\\t\246\223\346\342\376\252c\340\357\323\264\370'8#\231q\315\230\366\340\271%\356=\316\366\212\nZB\270\240\313\r\013e\032n\202>J\235u\321P\014\365\340\220\020\243\221\345\270\376\363\304\276\303g\377r\261:\315\307\234,=\254\232\307\342/#\317a\033\020\344\347\027\364\256\202\017n\360\336p\004\035\0325\220\240\304 \2432\376!m&\243\003\211\356/r\035@*\004\2205{\371?\026\335\235\331\315@x\343\336-%\245Q\004,\270a<z\237\341\031\335\333\202D\0276\213\017F\201\351\r\2352b\236\250HDZ\206Z\320i\020\245\000<\310@5\301\033\245\213\342\355\223a\334\267\235\231\362\221v\205l\365\202u\r\273|}m\260\2122\221L\334\337\301\310\002\215Q""\371\243\336\355\t[A{\367\023\350\312H\335\0100\005\003\370,\263I\026\005\274\314\260\217o\270-\014\035$\376\3413w3z\031\027\204\211\r\3574\003:\267l\272\336\356\\g\267w\277\tA\304\276x\210dC?\352e7\021\323Hp\032\177\220E\343e\026]\351\007OvK\033\231\343\374\340\241\324\216\360\262\227e\345r\024\027C\245~#|\256\350\225h\226\344[,\345\357\310\221%P\360\273\332LxH\006\342LrUd\030\026=\007\234\017\010f\363\034\202iS\376\240\272\254j\365z\273\026\252p\252\343\262w\232P\374\033\214\367NyW\303J\322\360J0}\320\307T\020[\003\340Y\006\230m\355\361j\324\360\305g\364\274\"\343\204|\364\366\244\341\371\375V\302\356\265\005C\320\335\202\266j+B(x\004d\335\270\234\236\215g\\1\241\375f\225\256\220\367\037\023\032\272E\250{\303\253\242\266\213\376h\254\027\261\313\203\252\353\302\252Z#\377\277\340\002u+ (\t\271\204\274\310J\023N\332>\232\352<i\361\ty\251\343_%\312\367\362\320\337\001/\3642\334t\365\013\302\337\177=\275Y\010\003\r\313\023S\355\230\000\n\"\324F\274=\227!\205F\240\330\205\311g\203\036\026\354\340i\333\324Au\000{\213f\303+y\026x\311H:4\000\273\325_\207Ey\305\245j\234\001\331\255:\376\245\232\321\255)\231p\022,\037\276\261\343Hn\357\023^n\203\327~\373\006R}R\302\254\361+}\202]\013R8o\313\320\204\267\322\345\367p\021\035o\003=\035\313\205\370\006\322\204\306M\304\247\327\204\311\263;\177\365\251g\316Qc\257\257\021\274jd\033\205\027\364\0233+\355O\255\324\303\220\365\001\265\331G\375xB\222\375\003\270\316\224\250\361_\355\215\020S\264\"|1g\275\034\223i`F\215Z2\326pl\243h5`\254\324m\250EE\321o\2661\3405\276\262W*C\354\236\233\033+\233\216\255\003\207\270\206\367Q\274\3277\206\n\230Ac\325m\261>\276P\316\357?\207K\025\334\214\274^\352\rn\260d\243\022\2672i\243`\0076\024\006\204E\252\000\332\n\360K\252+p\232\014t\320t\307\237\023\340\233~\366\006U\013\255\032\310&\312@\260\217\244\031\343x|\344P\240{(~\305\264\265}A\201yR\3525\031\3063q\344\207\2702]\350\367\350\035\222\365\244n]\366\226\330\374\010\253\207\020\207\242:1T69_~\334f\2236\007\2002\024_\021D\0328\"n\320/\231\316&""\021\265I\227\365(\206\233p\303\274\322\205\030$\252\377\rJ\212\352\363X\314T'\353\263\266/v;\303\276ED\250\273s5I\306\032=\227\301\341\256He[\2628\005(\271\002\377\360]\343~+\037n\375Q\021\251\330\255s\036i\272\233c,\272\377\022;IW\360\037\014`Qr\356\347\266\217\334(\264=\000\250]\214\262\200=pe\311\026|S\0256RS\301\035\205\215\252\347\314\210\210\231\004\256\242\177\233\231OE\355O\305M\0344I0\017\013\034k\323\213\231\032\205;\242\367\201\330)\234Nr6Xq\324\267\244`\2278\316rB\366\342\202'\210\036a\263\202n\225\001\323\323\n#1\320\301J\224\323\1778\270\277P\357/\271G\216];\000\035\356\227\352\033P\247\205\221\177\007\001t_t\320\034\nT4K{z\367\026w\323(7b\252\377\026\027=\274\235\204\247e>\237\223[\220_\234\021\370\324\316d\244\250!\034\221A\224Z@\335\333P\0065\276\331S\305\305pl\344\024\242#\344\201\032\266\314\205\200\020\263\264,.d\252\230\206s\020\253\216b\324\2107\226\001\274\221wD\2542vh\346\276\266V\035\265\020,\022\327\003\004\201\017Y\363\226\355\272\026D\364|P\246\241M\321\260\311>\333\026:\374\264\021\346\317\262\361\222\351\\\361\236f\0034\220\021\030f!\211\361b\245H\323G\374\001";
    PyObject *data = __Pyx_DecompressString(cstring, 18609, 3);
    if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error)
    const char* const bytes = __Pyx_PyBytes_AsString(data);
    #if !CYTHON_ASSUME_SAFE_MACROS
    if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 1, __pyx_L1_error) }
    #endif
    #elif (CYTHON_COMPRESS_STRINGS) == 2 /* compression: bz2 (16772 bytes) */
const char* const cstring = "BZh91AY&SY]yx\231\000!T\377\377\377\377\377\377\377\377\377\377\377\377\377\377\277\377\377\377\300@@@@@@@@@@@@\000@\000`T|}}\3608pN\206A=\275\321\367\001\320\001\352\373\331\327\243\327{\341\216(t\355\037c\215\307\\}}\260\337o\031`|\346\243'\266:D\rd\036\233`\023\245\275\347r\232h\001\337n\200\023\304\372w|\315E\2437\275\027\207^\366\325w\334\347\321\230*\026\311\017\254}\206\r\266\266cQf\325m\266\311\245\355\305\325\2717\030f\263d\276\276\371\366\330\370\217Cv\303\246{;z\275\352\2756m\257\273u\255K\335\317\270}\345\t\323\026U\355\252r\272\317lz\346\265\263v\310v\313\273)\323\273\333w\266W\270\367{\016V\356\356\355f\255\207\325\207n\271\350=\024\001}\334\000\001\274;\236\200\022$ \023&\204i\2410\001\031\023\000@\324b\231\246\202\236\221\246OS#&&F4@\r\250\336\251\3522b=@Jd\t\021\023Q\252\237\251\250yLO\324\206\217'\352S@\375(1\031\036\240\000\000\0007\240\247\355Th\032\0004\000\001 \220\242\"\240\036\241\220\000\000\304\315@\032i\352\006\2314h6\211\221\354L\232\247\355(zD\323=P\332\20022\001&\242@M #A\024{\321\rS\365!\344\324\311\207\252zF\206F\201\220\003&\200\r\001\262\231\000\000\003@\022$&\202QL\217S\324\321\262\207\352M\003C\365&OOT\321\210\3236\212?S\3256\324a\036\247\221\223\321\2116\210I\247\350\232\236$z\217Sz\240\004J\020\0012CJa\252z\246\302\236\246\311\265C\324\006\206\233S\324\r\036\240\000\000\000\000\000\r\000\000\323\342;\000r`\211\"\303\255\201\273ok\003\255!\206*\252\213\005\021X\261a<BC!\000\201\206AC\256\256\302\204\200[\nIH\211\243\000\303\003\010`T\215\250]\024\261\024\220m\024\272*\336\177\344a\024$\0022\002\306 \210((\007\234\344\023\371\317\352U\025UEm\266\341\007!\230\303\313\364\234p\217\362\221\3079\016\t$\270\320)\200\202\211#\022\r >\302\373:\326\266\335\006]\311M=\347,4\346\353)\307\231\020\332E\032\014\242\221\323Ui\314\332\333\311\275\315\020\306\262R\t\254p\230\241(&\003\020\313\010\307\031[2\020\336\252\254\231M\006L\231L5\255&\314\223$\230\376\305\2314J\244nVQI%\304\300\220&\027f\224\263\016kU\244\315j\232\271\232\252\227O\201i""\001D\030\202\244\000\377\361\010\017\376\202\234\240\306*H$\010\243\030B\001 \204\"$\200\241\030\027\245\342\\\241x\270)\213\225\235\362\002\0108\201\2106q\304C\020\372b\215\342\205\342\267\203x\336\336z\220\365 `\246\t\202\3408\006\005\306 \2129\242\006\314\004d\"1\"\003\031\"2# \n\021H\306\000\262(I\026\000\244\213\010\010\220\010)\000\030*\305H\004b\002\300\024\202\300\212\021b\310\002\300P\221\030,\220F,\001V\n\002\254\202\014\005\220DX0\203\024\"\302, \311$AX\260\010A\000\315\2629\003\222\344d\231kms\315\004Z(\260\010\020R,\210\000l\301\000 \230!\240i\000\323\020r\320\221\200\222K\001*\230\t`,\002\365\023a1\317\371\376\207\n\227\241!5]uP\r]CR\357iD]\336C%3\t\024$\004\204$\026\020I\004$\004\273!\310\261\320M\321\000\341\010#\"!\" \220\"\211\"\t\"0\212F\nH\001\222\2603\334b\033\201\243\020a\274\016g)\223\261\324\354\212\242\212\250\302\013\024\026)\021@\204Y\010D\334\3377\326\345\021Q\2204M\0204t\330\270Ce4\326;*\323b;jwl\202\006R$kF\204\024\216\300l\033\007\036\340\253\233\261\002\020\221GU\nB\224\340\\\204\005\320\232\305\325\201 B,\026(\016\240\032\207\005D<\223\227@\321 \300\201\314@\244Q\331\020\204\201\020dQ\331P\321LH\221A\202\262\200j\000\202#\024d\347\022\205$\222 \243s\320\001\236\203\010  \t\000\030\021\027Z\001\0204\026=8h{\372\244KIH\277\223#,\2249H\346$7\031@A\2209\240\216\210\246`\216\210=\220\331\253Y|\272\352\332\372J]sv\335W\"\014\313Kc\214\324\301{\251\256p\272l#\014t\252@%\252\021f\210[2\254\254p\342\362\265\004dF\013L\251\r\024\2453\\x\2144\3101\222\3158mBc$CQE\243\001\262<Y\204k\267\nVf\240\3112\003,\245\222\265F<2RA\222\334+q\3525\271[\245qqwt@\350\230y%\201Y,R\222\211\270i\344\373\375\210\017\225\014\202&\356\323\267AC\233!\220\025\220n\205rt\320\367@\020\314pSB-\000\nA;\301\255\003,\273\305&\265\023iX$Z\267\354XkjBF'T\3357C\225z\211p\036\310\216\307MF\213I\031\010\311\"P\235#\003\315\301\342\257\004\002_9\010f$\205\004A\211N\023\233\253X\266\345\344\000\344^U\345O\003\277\246\177T#\324\356$ \222w!.O2\255\341\314C\240sV\205z\222\2049P""\344y8\016>b\036\303\273\257\005\027\207\200\355\274\356:iN\261I\264d\026Q\335\020\305\245E[\004XW' \274\275\207\253\327\336^9 A!6\240<\305\254$@(\311\301\310C~\016\364\343\314\000T\314\202\\Y\220ZP(\005\016G\224y\345\344t\313\017qz\025c\304S\205\340\300;\267G\316#\236D\033x\234\322\365\352\215J\r\364\276\275N\242\035Pz\243\325\307\337D\344hC\237\246\365:\242\022:\203\350;\230\364\014\210\226\026\223\340\2176\344\016Q\345\027\224\3452\311I\307\204\007\221\016^C\221\036\206\354^\001|+\004(\304\213E\034\355F\222\213\341\311\312r)\311\346\274\307\031\353\023\203\230Fr\201Jr\017!\312\007$\244\017^\234\352Qo\364)\332\313`\241I@\352\275C\251\231\365n\375c\310\n\034\017\001z\004\202\032<j\325\255\007h\301\217\242\213\235i\003q\337\004\n\225>\261\r\223gd/P\rz\342\206\251\350\257\221M\356T\334\204\010\244I\35015qpz\0035\230\363\005\230#^\010\001\341\010\310g\032g\026\032R\205\021\340\247\035\016\235/\370N\210\235\035\304w>\242\203z\364]Rhm\251$%\001\0165#\n\244*O\325\346\027i\346]\347\332\377#\376\275 P\027\321?\356\374\236H\212]k\200P\316\202\361\027\333\366\005\245C\375\260\016I\004\026\333/\004\266\303\237s \332b\365\325\236\207x/F\224A\032@\210\212\311'\375\347:\2064~\217\344\376\362Am\265\376\217\331\237\007\357\323\034?\357\222zQ\027\317\002\177\246\252V\354\314\262\264\270)Mx\317pAy\252\253K\033\"\240w\314\300\304?\2300\245s)\372\370\334\252\335\372\261\233\204\333\003\254]\354\372\navZ\246?\357{\274\301\"q^\231b#\245:\365\233\332\271[\237!>.\010(\312\307T?\334\317G\016\335\265\331\265\252\222(\\\250\356{\0344i{\217\265\377X33\236\032M.O+\016\2564ys\323:\2666\355\247\204\277&eK6c\247;\235\367\025\265/\367\2219\232\252\214\211+\345\224\0322\343&\006\353\"\332\356/\327;\212E?vF\312\341cn\003%\307vZ(\351\226[\322\212\357\210,\343\244\264\255t\264\224\377\263O\333\037\237\355\345[\212\342\230\325T\251D\264Z\342\310\321$m\272\033O\010\013\034A\003~T\203\363&/OI2\024\275Y\303a\355\303\203\324D@8\365\344!X%#E|O\324\275\376\357z\224\244I6A(lc\224}\340D\322A`\0321\305\037?b""\207\321\334)\n\257O\234\n\352\242;\240\356'\310N\227Z\352\324\351d\363\250y\020*\006\233\266\366\242\245\340\252&\244\273\244\307L\333\245\254Zb\333\230\026\344\033cN\356\351\267\246\363d\312\330\336d\203\223!*\"\266:\020,\231\203f[.*4%\203\311\214mReXd\2460\255W\024\315c\216\314\223++\272#\"\304\"E\004\267\245\025\325\227R\356bWPN\305\251\216\310\027\222\350p\277n\016+TT\345\035\203\230J;\215g\311\301N\207\1774\tS\203\223ev\r\205\020\301wj5\331\373\355\316\235\364i;\347&\355\017\212\201\251\301\022\202$\037\001\016Q{\373r\234\242r\001\2323\370bf\321\365\315,V\220\231\365\261}S\314\324j\020\265\000j\r\2455\255a\255\006\264\265\255\000~\026onK\352\273&\2622Y,V\205\241\0024\013v\200\177z1\225\341\250\301%\202H\366\365\374x\243d\037q\365ff \317<\326\235\210H\243\371\347_Wb\211\334\367\035\226\273\374=^\351\372#\360\301\017\270\360}\304;(vA\032\226\316s\220D\203k]\226\201\353*\325\274\013y\010\336A\3173\177RF\267\257\305\344\177\027\305\021U^o\363\236n\036\025\302\201m\330\372\316\010\016\027\035\037\201~M\376\024%\302%\302\221\306\204\030\206+\306w\240\320x\031\302\274\276\373QjV\225\376$\005\212$i\236t<\312\227\273\203%\3519\2763\201sIM\251ICc\345q\022>\306\227G\262\220\310\234\177\214\217\242\371\363\266\323\250\036M\033eRg\327\363\271\322\210Wu\220%L\"\017\0379\270Z\275HG$G9\006\377\364\331\253\355\300>i/\213G>\"\274\343\305/r\370\240D\271\347\373\3134u\363q\034\307\342\343P\277\273o1\274\304\306\003m\245\311\007,\211\017\336f:{\334\267C&KF\241\214\265\020q\243,\244y\tu?\241,\270\022\205\177b\261nf6\026\311%4\322\364@\233RV\245\034\222\022HdnRM\265I\255\203\305\200\322ZkM\022J&\330e\211\025\017\017\305\264\023Kx\324\243t\321AV\324h\251\201F\034\221\336\026\322\333d\216\216P6SWv\2632\213.\231A>\036s\023FL\032;\272\2735\266z\"\356\250?J\347\215\034\214\214\035\256[y\234[z\263[\334,\254M^7\230eb\274o0\313\220qi\"F~d\307\232\035s?d\247\362j\345\256\365\274\357\302\333\325+7\3353\313\342\345\256 \322 X\023R\232\3367u\226:\252&\034\201\305\306\274\314]\347\227\270\350""\344\370\365\240\336\022\032\000\300gQ\240=\030\007\356\2416\026z\244\006?\017\177Y\317\371\301l\325e\344a|\322/\252'\374?\247\355\377\031\372Q\021\307\313\313\350\370|{<\333\244\320>\031\323\325$\002\240 \232@Q$\205\327\347N\371\335@~\355\3718$\234C\350W>T\225\311\225Ms\263\026\242s\322\356ld\323iE\2612\214\305\2224\366\3155\254\345l\0105\253\225\231jl&\315J\017{\335\233F\240ZJ<\244\301\356\320\246\243i@\220m\003\260u=\231\232zb\025\324\026WHli\003CP\010Q\0244\321\032\205\243w\245\241\214m\246\301\213\2145Z\301\240\234\324N\302\260\325\3075\227X\025\205R\224\323\202RRP\023\2113\317\373;\333\304\006\367R\026\376\373\371\220\243ny\357\033\355\214F\317\342\ne\303\302\026\316\321\006\264-\242\r\210\017\3430\320\264(A\207\t\217M\377\354\247\362g\273w\235\377@\177j\005\275\274\220^-\341\013xH\336B5v4\216^\202\320\026\202\303\004#\005\200`\030#\227\200\217J/=\016`v\320`\013\000\275\027\245x\216\274\005\272\037\027\036\202\344\256Ap\005\300\027\002\267\345/W\347\230\035C\364=>\237A\325\341\027\201\036\023\2018C\241\321\343\350\235\003\241\375\202\364E\210F$b\004\030\204,B\301\027\006\220\262\376\306\334\r\213\235\353\270_,P\220\302\216\017\355}\361\212F(1\014D\221\366l\311q\236,\367\256\270\271\\k/\272\357\327\273\356\334\213\256.\263\331@\240\021\270\316U\252\317\rv\024TB(d\031a\240\313\317\253\323\227\373\177\247p~\036\205\321\035?\243\3634M\177\344k\254\303\376\264cm\262\177\267\017\333\205%)\311\310?-\321\372U\355\026O\037\264\305at\025}\264\322\321R\236vDZ\335'\214\031X\276\341\3770\353\210c\254\230\313\217\331\256:6\nd\272\336\215\341\027\317\357\311<\357\312\366\357\334\306\367\227\305\307\225\325\373M}\032\321\321\247\017\322i\315\247\354\273\3733\363\203$\250\323c\001\264\337\336\247\3553A\343<\235\376\227\337\345\241O\232\207\305A\002P\000\030\222\026\220\006\301.#\364s{2\024\331\226Y7\230Ni\006,\035\244j\353L\030dV\024+\035\200V1\336\231i\203X\335\345P\305\024i\203\021\026\336\031\275c\254\213\351>0\321\274\252\363.\030\243\026 \300CB\n\240\205\0026\2523A\317""\024\307\021Q\2156\031]\231\260\311\"\311h\000\206@\226\326\260h\325\332\0043wv=b\217B\020\226J@\245N\271\314m\327\371M\\\332<\t\023:\377?2\002\272\201T\216\246\272\2526\235>kl\256\351\204\273j\355\335\223\3616\357\347\225\363\350s\361\265V\272\344M\371\237_AY+\377\323>\000\344\341[\022\323\346\342\226\376\347\033\373\373i9\302\256u\271\234V\230\322\273\256\222\223!\246\037\331\360\255\315Y\305\027z+\363W>Z\377\256Q\014\266\272\256\252\277=aO\263\371\276\233(\304\277\023\275\230\277\023Z\365\355\330\022t\242\235ybOfr\233\220\306\372C\367m\345\201\215\2666r\317\322\371\376\237l~n\337\236\377\252\313\333\2773\264.\267\276\252\245\356ry9?s\240\325N*N\246KF2\273w\304\315\335\333\366\177qo\037O\272\336\373\356\214\340\223\357\037\324\335\265w?vzJ\323Y\214\234t\255JuG\036[\307\356\312\362\352\375,\232\251:c?\273\337\305\345\225\271\355\353\225\332.\217RWu\030e\347V\341\341\367\334i_\03593\207\353\264\3659\273\272\273&\036\207\255\325\266\323\2716p\352\363|\237\030\017\223\017\216\036\240'\327\260\305\2577\253\273\271\007g\022\354)\\\024\233\016\325A\023\022\244\333\221Y\372k?{\343\374\335w\332R\231\374\335Io\335\273\337\016\210b\2324i\223\230\221\034\3341\313\301\352\357\033}|]\034};yyy\345\021(\256\252\035\026\325+eS\035\261mPT\345,%kU\366\366\313\327V9-\305\235A[\320\316\307\204\240\235;\034\214\332\325\330\227b\016\300G`\227\310\007\312tr\241u5\320\311m\017x\177_\247\260\371\177\365\355V\337\177\207\204\370}\227\366{\314\355\2549\277\215\320QH\205\214\357\314y\246\227\333\237oC3\340\375;\312\334\314\310\017\337\023\355\036w\312\371z~cWY^\337\261=aW\t\367Z\316m\356\007\207\006H\235\321\177\313\206\364\361\266+\277\324\353\223\2146W\235\225\301\216U\316\254\212U'/?\240\225t\236\023\013Y]\227]\250\217G\006\212STWl\366NY7u\222%{\215h\323S\331K\232!\007\210\232\274\033`C\300\351\201b\372S\306\264\341\255\203\300\232D \010\032\177,\n\344\206\322Og\277\220\360\\y7\020{\262\335d\331iy\251\030\341\326\373\";`\354\360\360\356\253\214\237\362x\375\225[\364\330\nR\256\352W\347v?""\240\017\000A\340\274\017\017\000<2\301\367\276f\270\372\216#\307\266\210\247l%\307\3679\325&\021\313I\r+\242t\302\307\204\341\310\364\364\355\343v\236\231t6\316\215\222\363\371\271=\225\325\362K\236N'\022r\244\342WX\273\261O\220\357\276\332\355\352\255\266\327{\273\024\347\276f~\337\247\243?\\\313\257G\344\247\016\227\014\033Jn;;\022BK\261.\305\330\216\303\263\370}|\375O\230\007\004\244\326\245\332\224\3664I\"=\317\325\354\240I\266P\252\021[O_k\337|\017\344\264\024\244>s\276\374\257\272\322w\246\316\217\264\346%\366QktRh\231\242\333o\272\344\236\313\346N\021N\035\035]\032i\341-\267-s\263G\207d0\252\352\367\273\270NI\253\207\222\372\253\217Et\3623\341\344\357\335\327\3579\347\233]5\324\343C.\212\362\241ggd\251\201\327\326\001\326\227Z\016\260\353:\377\243\254\366\036\240k\327(\370\237\232z\364\365?M\241`VO\332\313vy\366-\200\266\001\261-\210\331\263RIk\313T\006\224\245/{\367T{\225s\221\355\367A\346g\243\322nH\300\232/\363\226\212t\342\250\341\265\2728s\212\257@|r\343k6T]\2444\027\3138\210\210\210\210\306\277\313_\323\364\3754-a\274\321\355\177O\352\215B*d6m\311M\206\322\037\003:v\001\360vL)[\202\r\014 H=X\276\267\357\177\033\223\363\271?k\243\362?\215\372\375\261\360~\266V\226\276\2750<\225\362z>-R\232\253?=\370\233^W\217\243\350{\342K(\263?y\356\367R\255wi\366{\211_\234YK\351\205\333\327E\266J\313%[>\016!\313~r\205\016\306X\322\235\237\013\223M\247k\223\332\372\262\245\305R\341\374;\255\225\303\243\206\234\335+\240\274\233vwk\324\036\250\036\240\017PC\324I\352+\344k\313SI&SJ\311\366.w\325\303&l\232\233\356\033ub^\t\005\367\235~\204\035k\267G5\341\022\366\245\246\273 \364E\233\332` \264\266\226\021U\376\366\220V+\030\307:\253\271\273p\302\224~\260\030\304\342q1\027\316\324Wi\341\263\327W\257\327\353\325n\237\\#C0\364\220]<\3436j\215LS\262\222\336\315D\274g\242\2077W\\t\363.T#b\341\353\323\254\370e\032\226\255\355\"\336\274A\261)\325\355u\337\313P\345}\200N\312\270l*\367\307\013\236X\325~\321}\357\277I\037g\325\020\276/\300\370\275\277\nz\262{\271=\374\226OU\367\354""\375Y5&\244\370\0227\350\352\343H6\236._\027*X\225\330\364Q\316 \365\267\033\3221s{}\362\252x\026\327\326z\216\304\007\250\262\306\215\331\276\270\274F\262I\233\033\227bG5]\024o\344\035B\005\003VP\3069Q\004-\273\232\224\336\340z\037m\232`\232&\210\\\216$FJ8\003g\306\330/u\352\346\366\371\320\312\300m\r\224\337\347{_\003\207\336\341\311\303\371\036\204\224\264\t\034\223\204\222\332p\234\"\016\037o\221\"\347\273\206\020C\357\200\350\360\032J<\373\376\372\300\345\227\317w\010]\303\202\204\003i\n\2525\026\r\202\321\313\242\224Nl\367\204\313&\016\301\317\321\005\266e-\026\3065W5f\201\273>\001\026Z\217\235\327n\007>yR0T\314\026\222\212\345aeX\253b\006\014\362\000\270\251\302\374\260\271\345I\034\275\375\364\273qu\\\375\340s\0109\203\345]\333+\210\330x\013A\342\337\353uW\\\242\264x\316\240\001[]3\232Au\203*+-'!q\362AY\342\247\277\013\024\260\226\365\317\332\370\337\020\365{~~\352{>\267g\210R\267s\347p\312\333\213'\022e\273\252-t\244F\377\254H=`\243XY\035\036^nx\216\1777\335\211\325\257\307PH\210\021\264\000b\020-$l\t\242I\2144\313\250\261\345\331r\344\032\030\350\325,7X\353\271\3746X\346\265:\321N\355\270V\325[\210U\030K3*\254\221\244\"\0320J\264Xj\212\252m\221\221H\3126\235\033j&6Y\251\223$\311\212\030\306&\333M\301\206\262\215\335K\231s.\224\"\346\224\2317P\335bk\304\037\221\340\370}\007\302\257\340\0379\371\021TI\305\024\317\332\215\235\337\017\207u\016g\343]\346\001~\210>\016\254B\221\203S\234\341TH\314&\302\224}\353\307\353\371\273E\255\275\374\222\335\356\201\216(!%\010\031\264\201H\212r2qx\252\035\ne\240\253UB\323Q\210\260H-!L\202\220\244h\251\025q\347<\357\264\257cO\245\267\333p\341RI\246\204\276\205k\023X\276\342\366U\037\270\374\255\367\225\311\247\366\246\246fff\346R'I\316~\256\352\251JH\224\253\375o/\234\360,\371q\325(\275\303!\313\313\344\005\335\337\344=&\\\312\356>\236i\323\233\276\025\236\256z\2452^\330\353\266\371\007k*\366\2677\017\265\267\023\234-\317\264%\343\362L\nCE\203\216\320S\n\024\373\254*\016;VU{j\272vA\027\022\252\310R\273v\227\334\366>\327\017""\271\303\356\355\350\345\237c\207S\257\333\320>\226\243\252 \265\354#\034W\215\321\226_\214JN\316\332\211\370\364\322{\346\232\233en\307\233\016M\261g$\324T\364\372\250\325\331\360=]\006\031\013\325\266\236\022\321\304\325\214\2365\350\260\234\347:\326\032o\362k\324P\305\277s\357\357K\324\274;\372\316\204\332l]\0359\256\317\277UMu\216\235r\363\320;g\353es@\351\022\033\252WQw&\374qr\343W\360\373x\252\321\371h\320S\360g]|\203Xu\340\362\217FAZ\356\270*\005X\337b\252\200\352\256\312\216\031y\257\371+\307\346\275Z\312\341_K\345*\3361}\r\035<v\263\265\363\276o\237\263\317G\345\225rsp\346\347m\225u\331\311H\210\352]GP\201u$\036\240]i\037\031\303\375\333\346\370.8\r\307\016\350\251@\337Y\332\274:\027(\227\255\335l\373\260\013\237\263\242uUyQ\221,fTN\342!\031T\310\"\267{\3104\364\362[\350\217K9\234G\037\032G\0328\321\306q\023\344<8\265\257\235\312}\362~N\376\007f\377\212\267.M\251t\353\310Z\321\255\006\265\323\263Qy\206\215x\313\211\301\342\342\361\0225oWmM\3558\254gk\342~J\316\325\313\302z~\217'\266f\331^\351:D\324\236\021B\236\331uUQ&\335E%\242v\272\353\215\024\250\227\257\327\024\237Q\235nN\307\245\351v9\271\271\266\341\301\177H\204.\220K\245t\202\351K\243\220Ir\035\\R9\203\256\215\266\233\025\352\373\301^\213\321\326\260-\261\\_\343\350\224\216\217\034\322*\323Q/\037q\333\250\324\010Z\220\221\250F\241z\236\225\275/D/B\362\347\273\340\364\277S\003\311\204\241B$\222\224\220\r\250\216l)$\022\177\244b!\264\206\320\304\305\244BP\323\302\364\213\361\2114\244\226\037v\256\316\322:nlo\337\017)\322d\331-2\224\311\364\311'\250%\260\032\271\206\241\333\261e\352\314\034$\260O\024\374\355\243\224\250\223\256\n\307*\247I\321\321A,q1M\014\216\264\033z9ax\242\016W\305H8\371\212\331\323O=W\024+\227\343\263\241\330\341\222\262%\206\025\204\335\235\025{i\211\241\353\245\225\343\225\204\313\264vQ\351rtW\230;\262\307\342\252\313\260\243\260\265\260U+\311\350\227\304\314\347\222/\276\310\250\262\342\347\243M=\367\367\3736n~~\210\217\025]\032\014^\n\364\306\315M\270\3414\313N\247N\030\326xUF""\357\274mp\223nva+\345kn{\362/\263l\256/w\025\r\337[D\206\317dC\343\234E\325\\po\360m\207\301\034\013\203\201\306\275x\217N\227\032\215nR\312+\255\327%\246_]\263\342~\273\010\3427A(\2004\025\273\2704W\215g$\260\211M;\251V\034zj\234\270e,\340\245\370\2314\325\264\267\340|>\021\021\360\306\242\224\245%)Jz\203\227\237M\271\324\245\244\205\241\331VFM\207\020\216\337\2528\2766C|\343\0241T\036\021?\315\345\264\350~^\317\367\036\253j\365Dh\177+\273Ou\014\353\256\254\245\021\021eQ\362V\352\232\027\347\343\332\365\356\366\330\377\210\366Z\377\336O\205\350\262\"=[\350\344\317\206\350r\007\303\312fz\237\2338\232j\177UwV\277\022]\023\230\314\274M4\323T\323N\304\232!\n40`:\211\235\252\252\252\252\252\256@\242\212)\251h\242\216\202\010x\246\2412\n\270\353k\356\352Q\327\2343T\234\370\336\315\217t\324\330O\036\nc{H\231\262\271W\n\231\332`\202G\014=\016\320\220\220\253\335e\222Y2&\2346\341\266E\241\2666\307\0246$i\010\2043\231\335\367s\246Ot\305\324\323GFJ\333#\357\33022u\365\256\032Q\256\374\026\333\200\366\224\222'\252\222\224\036\177B\273}\325\372:\314yY\216\206\263\326\251S;\231c|\\V\267r\265\334\215\352\337\007\242\217a|\222/\007\261\022H\344\005\224\034l\2265\231Pk22\251d\312\352ouS\025E\021\247\321\\\2332T\316\212\001\211\252Mw\310\346\031JUU\\\247\216\271XjJe%\r]\256q&e\311\2118,\201\322\241\324*\334u\334\276\240\350mzV\232RwR\265\244\255\014\315\361\265KBZ\326\265\262\n/\021\036&n\241T\027\026PZm\246\202h\320\305JE\365W*\265A1\354\26260t\017`{\217r\344\021\244\277H\263\tl/\331&$\310Uj\210\253\207\353\216\2467\266\321\t6\250W\260lC\277\262\007\245X\252\205j\253\215BO\020\020\211g?\3019\371\270\365W\023\2611\256pie`\231X\010}d\241\232Eb\357\357b\252\252\245t\036cuO\021\346\246\226\251\305JR\306\266\255\263\357\316&}\001\323 \214\035j\"\205J\244\226\200|\250`\031#s\247\333r\223V\206L\266\234g\330gO\263\312\255\326M\032\022\"M@T\377\215\376\235 h\020\2536c~'.pE\302(\303\005\231\000Q-w\006\000-\260|\202+E~\332P\313\003\002\204\201!@\355\031\212\\ \253\017\002\"|\220\320@\003,]""\036<\311\037\033VP\277\305\275\216\252s7\230\252\237\322M1\364\027^\332\337 \202\000\322\2106}U\354oa\363\232K6$d\315\032\0228l\257K\314\005\253\235\257\225\211\200\003\002b\334da|\016\"\215\334j\243\332\t!.\312(H\235\270\313\330\327\257\250|\247\310AH\"E\024\004L\032wnV\345=\271\25402\272\303 \001\007\276\341U\352P\3203L\221\370\276\t\363J\024>:\005}v\245P\n\210\222\210\000\250\003\326B\321\360\367\257\336|8g/+q\273n\263{)!c+\0232\002\334\324\272)\022\244M\261\010\213c\021s\036\246a2\027Y\222\010#\232X\25235Vj(h\227T\314\310k!\201Y\026\262\221\300\006\310\243#\217Y0\014b\305\006\322#\005X[\026H!\264\210\320\330\230\314\245\211\271b\213.K\024\243j$\305\210\215F\323\321)&r\235,jT\201\261W2\205\037\007q\264p\2678<~G,i)\277\357\235E|\255\001\276\t\255A\344\364\250%\362 L$\002\233C\212\307P\215\3356\317\357CL\247\013\242\022>\351qK\254fZb,\203\003\246\274\330jb\307W\237<\311U\027\202\251\313G&\303\335\177=\367?\014\250\263\316\r\0060k\270|\311$r$q\001\306HB\225\032\247p{S\300\024\211\266D(\222\231I\355x\357T6\240S\271>\226\233\031\301\313D[M\261\026$\331\214\245I\316\003\312x&2\335\270\002\310\233Nh,\212\242\261\366\017ab\317[.\206\374\2501T\263\302\302\267S(\003EId\230\305Z\025\302\274\365\024\021\200z\207\275$W\333e\224\321\033\354\266\355o\001`\014bf\364\251pPE\242c\026)M0d\350(\241\210-\311CU\320d\242\351\2642lwk5\312[ulz,\361a\202-\237&R\t\003\276l\234\307Ib\330\r\243\256y\341eU\231A\305\020\243\010\2645x\033p\352i\346\241\356\364\367b\360\256\331\016N\315nfe\220T\307\344\202\232\253\257\305MNv \201x\253\323\366S[\360\37159\261\236Y\033\3354\212>DnR\035i\255E,G\244_\020\314\\\320$\222!\213@\017\304#\322\221V_\n\020\3064\314\006.c\265Qd\031-\032)DV4U \210QE(\252\261\025\240\202\005!r\354\203TQ,B\216Ds\245\246n\372\363\024\270]\322\t\026\222\306\256d\344\304k\020F\333o\232\301\232\252\371\002Z)\201R\263\216\233\340\0307Y]\212&\354e\363\266\244\227v\010\202\357\255\216mB\t\247\013\330\352|\367\234\337\221m\007\225\310\n\333\256\037\217`Dx\305\301\375l\267\361U'\026""\226\251O}g!\020\224\242D\326Q)\306~\312\242t\213\242z\364T\000\252\3362\221\345\265\256\315\023\270T;\316D#\274\021\312$x!y\320g\303\372\270\\l\351\333\327\033b\307\271\205H\25460\350\222n)YR\224D\356\221\035.\274\353r\252\252\230\357E\014XE\004TTQUm\202\302\261\343\273\007\010E\224\213\021\010\305\246\205\252\252\242\233n\020\223M\3672H\337H\241@yM\026W;\277\304}\342-$\206\240;\272\236\262\276\267O=D!}\245}\273\364\300\236\2723\026\364\013\315.\226s\305\227e?9\\bYr\346\272]\026q\337s\266\271}\315\365\342\213,\307\276\223\234\367.o\216\367\235c\350\356\331*\211\345\366\247E\266\267\251\357\317*\026\270\365\317\004w\231\315\247>Y\226\305\240\365\312\023\307,8[J\"\"\240\010\3101\220bf\032\t:h\250gX\342\251\341\002w ZH\225wT\327\236\267\326\247\213R\002\204\020q\tY'D\330\337\013\2118d\233$\33732\303x34Ehj\250\016\224(\"\007B\034t\321\316z\230\252\301UV\010\221W\202\2419\2465\254\362\n$\002\366\267,\3034\206q\3258\305]\030t\316\334\037\201\002tM\232\326HY\231} \321\303\"\212)\"\016\217\223\327\257\025s\036\352\356\013\264o\3338\205@R\023*s\300\312tM*\201\213\031g\214\245\313\323v%J\205\353\013.\302\310\014\2306 `\252\253\0045\350\305\222M\320\370\240\235N|om\362\360\034\260g\333A\317N[\343;\201\277\001\257\204&\370\306\222k\247\317U\021X\252\242*\233m4\215@Y\242\216d\234\005\223\014\344\213&S\245r\206\277rUlR\212\202\304Z\265d\263\031\206\201\356\2545\240{\"\260(-\212\226^\305\303z\307\215\315\336~>>b\324\223m`u\262v\221\0064\324B\230\274\222j\332*\250s\353\345$\343\2422s\351\260\244\246\371W\200\252,\224\031\366i\222\005\345\327g\206\366\2018\351\337\321}2O\004\331\203\"Ad\005Qb,\234\270\370\220\234\002u[\327gs\232\260\334(\241\021\024c{\317\272\253\357\236\254\264\205\216\331\244d\307oCQ\017#\325\206\246*\213\261\025.!B]\3714\262e\036\327<\364V\304G:W9_\232\252\322\200T\353\005\253E\013\250\004{\311\226\225\320W\357J6a(\004gf\024\366\032v\326.\346X\310e\214\206Sd\365g\253HnJ\251\324j\315\025\014\033m\r\215\304\270CA\253?\031HvWJ\375\0237\253\257N\232d\355\273(\343""\306\226\266\235\260\265^\270\036{\234o\306\354q\265\366=\200L\305\201\n\005\376\201^\2168\301{c\260\201=\376\022\200iULZW.\247\030\254\262\\86\013\365\004\333\240Jc\305\227Uk-\245B\325UV\250\241\tL)X\252\"\252\240\n\266\265J*\253E\001-\222\321UJDDF4\254\205%/|1\346*\324\205\\\335\323\010m\274q\325\243=\227i\323\027\326Vs\241o\2067(\302u\226\014\351\343 \r\014\207W\"\2755Hc\206\303>?\003\226\334*P-W@\272\201\034]\341\336.\360\357\016\363\320u\244e\276i\005\243@\273>\000o\272\237\211\t\226\267\333\300\006\361hO\202\322\313o\013\322B\342\230\2011\252\327\017\035\205\324\200w\3075\321\242\2323T\266\324p\260\222\004\256\267D\347i\251\"\225\320R\243\271\337\024\276)0\343\207\214\264&\321\323\305\017\021<C\305\370\037b\327\250\361\353\240+\021\n\350\236\027\261\246\036&\005*\007l\016\355t\272\326,\222[\034\020d8\007*R\0317`D\213y\341\255\260H\332\357{\274Wh\n\364v\021l\014\206\241\235|gD\255\3241\035\237\204\310\271m\177\265\364*\246\0210+\037%\361f\212TA\014E\002\206\205\312\013\210F\321q\010\342\342\342\343\324fT\022\r\017U\026Ye6%\301\024D\260B\304\242\245\n\036\017\266\247Y:\n\025\271/\202\373\245\306\007\313E2\003\032\236\270\n^^_\002\241\204+\026\226\222\225\002\317\"\362\257+\310\254\321\230g\210\205\346Y`\361\344{\333\362\237#[\365\216\202\241\345\037<\302\227\373A\267\023\276\220.\366\027YU\265\315r\271\222\265\311\003j\210\256\303\177\306Z\204\2060*\013\213.\nG\244\237\200\204\034\302\356\017\036\203\301\334\314\343e\363\003\243\356w\225\014\354$\227\355$\342\256\342\304\263\267\240\350\323\267\005\364o\214\035\212\252\367KuZ\354\r7p\216\360\270A\325L\350@\322[Z#\206HcP\016x9\353\t%\206\235\336\034s\327\200\352\237q\367\226EV(\305\327eUUUU[\205\301\200\261\021P\327\035\025\231\212\212E\"\212g^\216\256g-H\220c\"A`\301DEz\030!\220\r4\233\033l\032h\334F\274c\271\352(wq\234\254\304A\177\030z\213c\236\205\335\311\215\252'\230o\336\363\000\002\344<sp\253\\\274yU\302bD\017\"\r`\320\230\306\257s`+E\003s\315\264\241\276\224=\217\021\rq4\021\233C\304\035\226*\311\310C.""\031\005\221M\022\006\330.\320\027h\203\264A\332\227h\035\247?\000\322\026\214#\325\246/\2707&\323\250\207H\252\223z\224\241URB\204\016\363\331:\250\273\366\210\362Vpw\3070\026\271U6#m%&\330\027_=\364\262I\032\215\265.(\255\300\214\233T\nV\201Y(\312\254K\305E\201J\252\204\262\322\204D\255(\020b\2770/\010D\365%|\214Q\366@\300\367:+n\343\210\303~gBv\350\\[]M\241%\003\006\232\242mN#\016\023\r\320,\022D\010\230;\251\316\262\263\240\334\301\230\241\304+V\267\325\306$\251\306<?\037\305\265mL\361\355OV\267EC\213\366!$I\243\212\t-oJ\022xlS^\375ubi+\031\357\377\244](\362\304\244I\r6E\257\020\345\000%\303\334(\004A\022#>\177\220\254`\241Q\004b\" \"\010\221\021\022#!8\027\314uW\013\304Y_\315\375\364H\357\240\034A\\\016\034.E\365\031\021\n.\247\022E-\003-\256\255Ec)\303\002\200\020\350\227\241\031\266\333\t\202\223B\277\020\352\037m\036leAPi\2754\215iJD\251\nkul\020\243B\014\2217=\310\200\331\034\260F\372\"\262xYs\270(+\203T\351\022\310Tc\023m6\247\020\207\201\177\r\223+}u\331A(N\263<\206\302%\035\370a3G\022\005t\2427\342I\n\265\004\027\030.x8Yo\210X\031S\371\304A\365\371\3676!\334\272c\366\n\275eBP\367\337\346\256<\265\3000,:t\nMw\233P\266\371n\311\336\231\032\344\241I\032\"\034\23466\202\010\301V(\242\310\254T`\300R\014\202\221UUEA\246\354\224K\206\032mi\351\313\254\2272\3136\340\212\276Z\252\304+\006u\014\237\035\232\223\023\247\252\023\271\313\273\320\325\207\001u\235t\206Mo\345Q0FHN\232komvU[bb\001\261\020#qh\001O\225\343L\345\340.\324\007\030\330\001\330\307\250@\264\370\036P\233\014N\034\240#d\005\301\255\205\327\334DB%+\336nd\364eK\202\372d\253Tc\0221\246\024\004.Y\"\334\004\205\343M>\221\255\220\005 (\t\212\360\350P\304\314\367\253,@\351\3247'h<\344\336\000\\\337\260Z\256l\305\241\t\020$ ]\324~/a\266\375y\337\264\344y]\\\2230\214\251n\022C\200\023I(p\016\246\306%\245%\024\261\240\244\n`B\251\250`e=0TY\031\\\203,\201\310\310\010\314\2461DUK\351\256g~\247s\305\202\341\304\306\034g]\266=\264\"\302\021R6\362<\237[\362\260\362\016\374\024H\002\346%\251\202c_#A2\255\301\000!""\326\244\010\345\325\347\354\333e~\2569\023\271$\\\322\364\214m\215\264\260j\213\021\005\0279\334\320t\2156\005\317Q\345\236\006i\034\\\234\214\321+q_\3424\357T\013Xl\rM,\265\315\314\346@%\024\034\344.4\022\201\204\355\230EU$\024V,\022\"\002F\010\210\242\241\024\0300\024\005H$\210\204TAdP\210\301`\251\025\022\010\3020QX\366\0322v\202H\007\210\003\244\212\275`\326\020\356=\311L\262\223,\2546\221e4{\303\267\210\227\206\366\342t:6\261\213\363\304\"S\004\316\340\275%\301\003{f T\036X\027Vm\253\000W\353\013\313\030\273,;g\267\201i2H\271\2151\251p\245:5O\256-\356<H\244\202\371\341*4\322\376>7}v\001\274\001\357!\350\016\263||N\273\263\234z\313}\251\354\355\363\275\007\225\253\025`\240\242\305UUUS\313\362\361qI\340JB\232E\310\316\257\024`M,.Ax\306ob\213Z\274\2375\222\353\326K\346\013/l\226\321d\306\320\254 t \005\342\300\360T\211txzR\367\331\342\226\261\224\003:\010\\\2035\364f_\201\211\206\301rfg\010\200ZR\213\260Zc\316\260\027!m\262\2631\314\335\"\214\244es%\004\207:\373\376\354b\357s%)\314\225\re\232w\356+\n\205\320\325\205y\343\0040\024\374D\253\343\327\360%\245/\302\003\001\313\322\235\361c-CO\216\365~\267\002\304\000\214@\n'\334b\003\356\265\242\320\245\243\010\021\r(bG\262\301M\266*\t\"\200)r\211r\001p\277\024\275.\245\004\276\264d-\021\220[H\254\0268\315\260\323#\026\231\261\253\212\356\354z\030\204\254Sl\221\"[\032r\304FT\267\222\307e\335\321P\\\260\373\271\224Y\216SF1\214\264j\213\024\323\265.bR\310\024@\n\310\301JLb\252\302RJe1\2220C\002c\030\007`J\303\n\201\246\244\tY\217N\272j\335Q\210+\023*\006MD#7%b\"m\250\247*I\331v\216\036a\007\335QP\021\221E\222\201A\212\254\214\221I\343\030\026\302\330\244\026J\024\240\240\026\230x\231%\267\030P\253\005\005\211\337TZ\267e\220\013\200\204@\031(\240`\224\351.\206J}:N\006\215\334C\202=Q\345.\003\352Li\276L\002\324'{.\004\216Q\031b\352\035\004q\325$\007X\302\240<y\366ClZ\342\007C\242<\242\3263+\2178&\322B\271W~\371~\004sD\233\224\245p\207\306\3672\364\343\256\366\016\324PX\250\t^\231\311\344\327X\005\024\rt\036C\345\274\351Q""\032\252\025E\030U$\347\226Z\3627\301\307\333Q\203\231\343p\230'\255\330\n\"/\027\335\306\351\277\217\203\307\244\360I\231\255w`\320q\002\351M\212\020^\212\205\013!D#`\200\344\026=a\361\252\254\025U`\244U\314\323\032\006\336\275\310\277s\333;\031\026,8G\270\t\353\241<\030\340\222k^\030\023\000,Q\022_\0065\343\234&S\337\010\221`\260\021\224\002\210S\002g\001'\254U@sC(\260Q\030\010\330\302\204\253;\331@&\370\036\272\210m\262\252Iwu\366\366x\366\257\021\301m\362y\366D\233\001\215\r\272\367=\235\237\327[\262\003a\374\365y\2372\347\352\373\330\235\333\232\177\257\235\272\361r\274v\226\333jcb\223V\255\232_\241\307n\225\277-m\003\304\034\360\030\274\330g\317\232\310\260\035,h\021\273\253;\271\351\316\367O\037(^\372\242\024\255\245\264u8h'\004\367\362\304z\347\223\257T\363\325n\265\244\311PV\306\035G\240\337\236\235\236o=\013'\274\345]r\256\273\016\311J\"+\336wW\327m\355z\245>,\362\314\"85Tp<Z\334N\312\366\3365F6\342\024\025R\330\215\300\313\306\013I\005\247\335,I_\244v\350\276\375T]\317\330\301\321\251A\032\261a\314r\365]\314\364\317Bk\231'El\024)\271\206\254\243d~\266\316g^f\237\243V\211`\215\232\271uj[\314\306\350\252z\310\033Cq\001+q\210\233\263Te\242\005G\300\3537\370\222\n\271\222T\024\2254^\363\330\211\2644\020\344\3715\326\253<\341\220]5\010\032u\274\354\026\022\0302\n_%\322\2054\022 !b\r\007H!}\032\007\030\354\200R9\305\223\324\340T8O\204\021\201!\033cg=\3333K\024\373y\210yE\321\275\"\252\3321jEd\351]\265\005\023\250\321\216:\373Wj\005\332!v\243\316wz(`\n\343V\260Y\260P\264rB\235!p2\2147\232'\\\004-\256jRc\033\005\370QV \036jQ\033\262\226\360\275n\207\225\250\265\235\254\351`'1\334\267\227\035Cd\263\260\031J@l7\223$\367$\245{\322\332\243\207$\230\021R\nJQ\357T+i\363\314Dt\235\256\2353tY7\036\256h\351Q\325\241\r\014\240\206\300I$\241\003\372\327^\234\272\253l\263\240\032\340\002\2001\020K$\006\265\013\000Ga\200\264\"$\026\005+\0106\200\254i1\223\210\001\235;cl\333c\033-\256\201}|Q\344\252\253\367Z\252V\n\252\334\363r;5\364\023@<\035\205\302\027\020d\013\022H\031!""\300\262\031zY\363\316\243]x\353\262W\364\016\364Z\331\\7\002\264\222\220\246\010B\202\244\331\010U\324\014\010\240\013qQ\242FJ\224\002\353\246:S/z\251~*x\251SLJs\"F)\033\240\363\314\361\000\314\214\304\234\341\273\354\226\364\362\305\274\257D\350\340;8X\242`(2<\323\t\200'Z@\274\016\233\036@\361\2706\320\363;/\327\0019\345M\206BF\255\260TB\021q\"!\022\233&9\014\230&}/K\226\3706\272\334\246\345@K\372\3616\353\305T\327\271\340\251M\303WVB\376\355C<p\035\0242\006>$\023S8\243\323\255\216)K&\"\022\251\336\314\307W\257\215\003\240B\331\273yv*\255\326YP#\345D\345\210\205\027\252\344\205\363\352*>\010!\241\366\302!\302d\346QT\327#`\342\241\225\313\010\002\361\t\007\325\0328\327Z\347\037\033\212[e\201(\252\311\317;\177c\265\007@\200\355\000]\250]\240\216\323\266\245\267\354\323\3426\207\247\312\205\313\022G\2323\316\027\333\222j\344\203Z!\t&z\210Z\"LL\004VA@,=\3006\333\304Q\3441\n\226C\001\310\017)\236u\213\207\276\223(\002\257\357\373\377\203\346\331\340\025\244/\255\3302\006\016\034\001\347\212\310{\377\361w\315P!\356\370\024F\244\210\220\210\223\300x\n\276qY\275\270\250\343\36172A(\234\227y\314\273\022;\021\330\216\304\227_\006-\261\276f\212\035tZ5v\301\272\245\245UheQEP{\222\022\236\256r\233w\354\257\212\220\374\210Z\227\226\326\344\216\253p%0\301\357p\327]\367T\031a}AM\245\323\336\354\201\331N\300\366\036\317\274\231\243\340\3062\033\300\360\354z\\\236y\3549\216[\254{\267JS\302\271P[\301\023\340\010\211\257@\033\231\205\233\353}\035\205\354\201\331\354k|\036\343\220\351O\234)h@k=K\nEHV\222\020\226W\341\240\206\376|\204wP\335wSt\337\223\323\277\237C6\006h@\351\024\007\316\3507\225UNL\240\204\330\t\360\024P\322\316\234\215\t\247\021\006I<#\004\207\322E|\253v\314>\021\363g\326\361\022\023\324*A\021@\207,m8N\371\016>f\\\362\220q\323\210\006\276\"\370\236 x\252\007\210\036\"x\276H\006\221\014LP\007\0251\000\3041q\016\367\014\026\366\242\255\027\002\253\335\323\361.\0139Q\r\336\312\003\367\336\367\375\375\347\336\031f\005\366\035\271f~d\177?\2311K\r\333\316fh\244\r\025\273!J""\026\261 B\253N\261\206\313P\306\301\271QB\005L\265\21215ic\326\310-BD\247\010\265\006\"\224\302\"\341$X\241$\"U\031WQ\270\311Q\255\220Z\324`\221)\t\245\250\245HiK[S\2521T\271n5\002QWGG\345\312\333\022o\347BG\217\306\010cm$\320\227\314\322\020}v\231\021U\"\202\304\376\365\336\210}fKjA+\3543\347}\365N\326\020\223\001\373#\t\024\200\262\013\000X,\005\004i\266\304\233Cb\372\315\217\330hB\222HB\321i/\336\321\334j\037~\312\032\220j2TI\021\241\021\030\013\026\n$$\241\201L\021\"\"\301b\"\262\036'\336\t\363(\236\345@\3620\260\206H\023\336HX\231\224ep&l\002E\2122X\320\204c\005 f~\270\247\336\327\324.\203\275(\367\222\025\0054(RN\031\372\024\340\\\355@\324\365W\323\357\370\026[\021i\256\374\252p4\025\206\020\210i&4\233P\304+\332\224\3423\037GS\361\350\314H\356\254\204i/4\372Z\010?\327>\270\253\332\203DD\016\217\031\0074\245j:\014\002I\212M4\354\201BP\3212\177/\021\375\005\035\243a\t)\t\202\t\317\234Rh<(\225\351+\330/XnP\0337RwP\034\t\031\026\005EG\031Y\242,\213\001\022\010\253\022*\305\200\244\006$\005\210\200\252\002\305\001H(\244\024\202\300Y\010X\303\030\004\205S\nD\030\r\324(\036\262}\321k\245#\237\007H\243~F\227\365\272)c\177\256K\277\036\314\203\341\005\333\202\326C\261\020;n\216\323U \2505\004#\264\231E\030 z\037\003\353\374\037J>^\323\026\303\352\213\374\217o\026g\323\363\\\316\315\366G\320:\236\222\370\265N\0144\324\0305\006\020\002\310\231\203\033``\225g$\004\246\305\030\366\221\377yL\210]_\021\215\021`\340=\2140}AH\344\217\370\354\353\221{<\"\203\347\371\265E\374\346\217\002:\312s*)[\357\377b\326x\250\233*,\265\305\035\222\300\00692\264\026\303\014\r\227\034\277\027\245\206\346Nv\025VTSo}\270\3737\211\224\326\2268\221\325\246\353\266*\230\022\213\234\216\227\007\313\255\337%\310\330\202\310K\375&\036>\254V5\006\313\232.lc\006\233l\037nTV1\211\210%\344!\201\362t\200\273sB\300\201\365I\022cUcj\022hM\n\334$\224\230\312D\n\341J\033c\030\347\363\373\007\367\340O\241\356D|\266\203qD%\241\233\244I\034\210\306\r\245\245\310\227\304\255d\204k\344\244`\204\232E\240\3300\320""\332\356MY>\237\324\333[\032\324)\202\243\001\213\220_\324pMLH\304V^Q\302#\004\317*\220]\334++*\307!H\272mM\230\302N\205'\310\365\376W\213\346z\371\375;\201\274Z\262.\317\227\333\313\230\264g\372.\372Y\256W\371\2026\326\251E\314\312R\343\001bI>\256\354mJ\202\332$\216\220\007\025r$H\004\212\010\327\020/k,>\253\315\230@\016l8\345\275\233\260\227D\260\260\022i\000\222v\354K\030\231\246\263\241\336\246\325\212\034#b\365\376B\017\253\343\177(>\261\320\372\204\313\276\246a\262&\210\327\207\330\341\375\035\2556\210#\301O\007\200V$*\003\005\305\020\3173HP\215\376\345\327\216\361\032\342|Y\331\006&[)\2277\020W=+c\"Y&I(w\223+\213\233\222] \030zB/\363\376\257\017\204?\344\217Z>>\357\230[!|`\021n/\"*<\212u\244f\014\350rV&\332\352\245\346\241t\366\322\354\017\036\273Yz\353\256,z:K\257'N\371\246\324\031\204\213\206\251be\272\032TL\013\204$\300\031cn\004\257\032LsL\000\314\177\326S\257\330\360x\267\236\317\022\251\256s\313\275\317\263\243\225\231\317\354\236\327Chg\227\244}\264\3719\215\310cjF8\214\252\026m\206x~s\317~d7\"\022!\250\n4\243\223\343\306\312H2d\223\230\304W;\200\343\025\241DB\000I4\306\014 \2040\254E\3112\"!\263k\377O~6\367^\331\2162\010\202\264\021F\034*\0029\002\270\340\231\242\311_\242<&\24429\303\311\247\365\274\2711\246hp\254\346\023\026v\332N@]\020\264k;\325\270#\243\217T\016\232\226w1\246\331%\351\240\321\324J\211\212Z\005\200\3304\321\027\010p\2666JgNYv\373!=\306'N\315@\222V!\236Z\301\004\215k\256\234\\?\266\302\225yq\332`\316\244\2321\264#\312\230F\200\353\016\270j\274\330\032a8\2164\223\016\215\0002\325\311\324\010\342\304R<8\234\310\233\014_}\0234?O\277rs\227W+z\t\303\005\220\212AKf\325\020\021\252v\243\026\251\031\342\361%\213\303\345\361\341\354\310i-W\006\343(@i+C\306\037H\341@\270g\035h\267%\376p\311j/\201\263\214\247\372*2\343\212\t\022\210\265K!\276(\217\371 \357\255\267Q\343\240\225u\006(\233\354\235\246\010'Z\223i\004\247\2248\325t\257\301\340^^\236\327\270\036/\372\3154{F\322<\200s\312\177\257i\247\377\275\343\233\302\2778vF\342C\033\002\214\025ed""\352>\375=a\367\271\256dEH\323:\347\236\326\273\357\276\316w\242H\243\344k;E\006&k4\253GU\266\r\2660\210\262\n\243\306\261\345\203\304\367\230\0141\250\026\341)T\362\357\221[\207Z\255\351Qf\336\266\3740\305G\264K}\304,\177\364\361~[\215\310\331j[\265\034\256\023\010\3301\216#\322\324.\370\302\013\234\265\013[}(\037\035u\274F1\232\305\014\026\n\206\275\246x_\226\337f\322,\361\372\204l~Hwwyh\342\3479\313\261\216\300\310\201(u\324\322\246\333\322\235 (\335\225\010\225\337\010\207\t\023\350D\302\377\006\266\037\276\230\345AC\300D7\260\321\227\240\244\330\233\222cc%4+\306\204\241\256C,s21c\314c\334\361n\345\263r\205h\331?{\356\366Y\343\351\342\350}D\0366\t\357\271\271b\362[\362My\024\003\216\314\235\037.\240\341\367\304\357$\211\360\302HAK\212$\177\250J=h\325B\344\244'\210N\255\216\221\311kk\257\273\271\346\2172\016Q\233r\000\250\303!,$\372W _{\277\300?\005\241\370\243\365\017<\305\036\202\027\242dt\206\312\355o\212\305\021\331\333=+|>\205\022P\227o\305\025\337R\026\212E\240\\\235WM\355Do\253\370b\314\363\363GVx|G\217\351\367}G|\306\241\347!\022U\032\237\254\244\235\324\021'\037\324H\317\257\316\004v/\301\341\213\241\207\216~\031\375:`\271\331\320CHN\001\241\024\036#\221\237\037R}\006\214\032\245\023-\245\0234\343N,\303\262n\240\303[\234\213\0317e\0305r>\215\375\215\276\316\\\260K=dogY\244;\274\373\216\326\024\2253\342\3012fvC\221*O\212\"\341\027Z\267kC\024\3144\251b\0213\005!\211*\255\002\256\024m\264y\027fp\304Nb\034\356\214\377\220\253\211&\321i\n\230w\t(\\\213k\305\217?\223\275\360e\355}\236\030a\004\370N\022\250\223\262(\"\344]\204\335c\300\327\010PuQ\003\252\007\010\332\032\005 \304 ;;\221\232\004\226\352\354\314\240\326\275\025vvD\035N>\250+\016\256\323\241\332x|Y9Y\r\304\336\376\251\223;\264\212\333Q\261\320\251\236\362\351w\235R]\250\264\301\203{\302'\342\005W\305\307t\025\005\232\227c\222\306T\016<\263\322]+$\304\212\370\371\256\242\014\264D\235\255&\n\360\375IN\324A~\266LC\231\375M\314m\031^\256\374\262\345\222\261@\367\2133\211>\000l\033\006\230\220\333K\352&""\027{\302\321.\037\342\2015\305\177\247\361\010\361\202F\242:&\273\013(W0\3229B\030\335\033\363\265L\360\005\247\360\306\341\336Q\315\336\265\3351h\224[ztK\240\347]N\210:\3055=$\362\372>2\356\365;\2174!}5Q\0377h\203AbF\330\200\255\224\310{w\323\330\360\305=\027=\035zTu\353J{o\377\237k3\235{\373\354\331\2164l\231Pa\336J$D\020\215%\022\252\261\245\006'0\350\276G\t\031\304\001\323\007\034\364\355\361fz\"9\220\312RF\314\206\";W\036\217\314\234H\245Tx\217\247&x\3257\215\363\203\277\235#\267d\335\335\313E|\357;xTE{\214 \030\332cd\331\343B\200\020\324\222\224\2019R\377+e;\337\263S\354\227\266]*\235(\2210\033\345\313\007K\240\364\356t\355\236\307>P)\325\177\213\353|\037O\353\270\373\037\r\037\004\237_\341\203e\307*>\006B\240\242\221DAP\213\022dhn\303\341\325l\253\242\312\005\205\0143\242[\017\261\211\304\311\305\213}\203cd\340\372X\226\221q\272\314\023\236~\343\273\271\374\361|\357\243\022?\230\273\204_D\341\312\376\203\326\311\327\321\r8\220\304\214\r)\270}\021\270L+\t\n\014\376\022\254x\304\345\310r\226r\243fY\277!(;z3\006vO\031\361\027\222wy\274\332Iy\207\233 j\367M\20629\277FUc\0258\342\245Y\347\271_\016\362\250Rd\014\316\232\225\351;\370kC\206\332\017\364\271\007\221F\035?\217\324}\377o\253\360Y\3765\177R\310\377TW\017\216+\305U*\t\240B%[\013+\372\r\264\3213\223-\223pa-\233\374\r\336\350\362(\030s\311\346\366\217\323\363\257\235\350\252\213\000{}\336{\245\250\263\240\305\210,^\217l^\201u\266\\\306'\301\020N,\211\\\314\036+\356\3053\025M\375\355\246\206\314\271w7\177\014\024\203\375\206\021\361W\361n\361\365*\251\306\352\013P\030W[\370U\317;\303\217\346\234\202\343\003\275\244u\301\271\305\276\357i\372\314~/3\021\344\356h\316\351\315<b>\364\3758]\223*\rE1\202\010\374\031\223\016&\2139}up\245id\255\2103\0339\036\332\371\016\276\324\366\366\2265Uk=\213K\267{1\367\321c\026!\244\356\206\\\213\245P\204\206Y\026V\202\245@n0d\211\305\213\213\343\333\330\331\354\3673\300\354\333\360\037\270\325bmh!\354\312\232\243Q`\207\ne6\325\214\264\266q4\025\3072\333\251\"6\017k\342Q\304""\326\316\301\033]\201T\242cg\262\377\307\304j\316\007FgS^J[\254\326\263\352z|G\314\375\266{\007\314~\030G\317\353\246\306\0378\341\266\337O7\373\263\275\315r\313\\;\177\333?\255\364\177K\373\017\372\237\332\246\n*\033Z\374T\2065bc\216\274\215\001\326\2669\004\245l\376DuY\257\324\037X\353k\246\232k\233:&4\364\221\0135\022\342\274\272E\356\353\372} \273\231\326\327\370J\007N\237\031\3612\005\257\"\333\310E\201\016\364\306~X\272\365e:\275-`\352?\203\233Ja6\350\332\247v\t\nD\3709\201\255\251\251\302D\267\210\351\321M\353i\364\177\207F\036\244\215_ySR\257\301\366\253\022\243\223\260\237\331\263\367\276\367\337\374_g\343\257\354\374.N\251\367W\371\355\374\224\255\\\317\277\376\277\277\365\376/\307)\350\373*?\226\312{\324\367\r\347\246t%\306\336\247C\242\275\330\347\306\237{\321\2133AN~W\373N\177\2357\246\023\367t\375\257ss\333\177\303\023\375\007\361/\347\374\037\203\351\375\377\243\375\037O\325\364\374\347\321\364{7\275\276\033}_\027\217\366:|\253S\342r\345\356\217lJd3\312W\227w\032\355\3569U\2318\362\335J1]d[5IB{\225u\263v\352\262\252\245%h\261Z\224*\231\252f6\323E,\262r\245\020T\354\232\261+y\2239\232mF\355\312V\246vINP\342\022\275wu2\212\247\024\222\275\311`\233\263\36397\314a4\326]\350\316\223\226\363g0\306s'\346\241\037K\314|D\227N\356\247\260\013\334c\030}\001\t\031t\037\306\r\207\031p\\\203_\325\374\277\270}\003\274\375\266\037\265\273\342\366\307\262D\017H\202\036c\371 <\300I\261\t6\000\036b\373\333~\021\266\301\214lm=\020\301\355\347U\244\377\347\374\376\257\360?C\320h?{\346;\377\203\267\363\177\303^\371\245\"\347\333.\365G\345+\371\252fo.\325\225\"g\301h\213\263j\263\t\227\223\231\272ek\324?\307\374\331\216q\337\363\\=]\364\247\261\232dJ\233\261\321\375\003\341TQ$\246\231)U\2221\231o\212\007]E\252\252!E\336\330\252\232\222\205\245\232\245\210\310\310w\240\254\242u\356d\326m\301\264kZM\3057\217Um\222\\\222\205\245l\3225\355\351\027\217rdx\306\240K\033\325i\273Z*u\254*\213\252\252\304UT\355\273\241\322\331\244+$\314\3107\024Re\355)U\225J\335\336I%\215\242\257H""\245\003\333\331\321Vau\376\033\\\345\337*f\252\265)P\212p\256\247\036\032o\tGrB\241I\033\257\245\211\034k3[e\267qB\244\265\303\234%\363a\316n]s\231+\234\231E\314\357.\254\344\336r\333\273y)\335\316j\242\247\227\310\2326r\313\325R\224\256'\267[\270\314Xmh\225\247\216\252h\322\360\254\224m7J\ni\006decc{\203\205\203r\024\032\232NM;Q\203!\005M\301)\333\224Z\202\022\204\246\212\253\204\261\262\266\253 \332\313\303t{R\246.\312\036\2317\006\310\250\270e*\324\325\345\210t\265\272\265\226\346\360\252\251UW[\010\320aXma\214\230\321\023z\213\333II{t\262\233\331A\206'U&\351E,\231\036\271\334\240\263gg%\244m\253\270\242\362\314\274\235\311$\241\331I\311:\251\275\274u\231\227j-\023L\311L(\030\305ov\346\312\230\2707J\222\213B{*\234\363\035<$\306,\022v\252\216>6\362\322\222\244\244e\226!\231\265e\244\352U\273\245.V\255nS1\354\322\305\224\212\274%\306$\205J\206\211\266\204)n\20416\314\245\213Z7Y\031y\2473rE\336%\003\277\372_#\337g\013\311^\006\272e\245\315\351 R\375J\345J\342\321\336\275=y\340\230\241\000\210F\355y<\251\210\3255LG\202\204KQh\241\004J\247Re%n\313\210[#\037\024G\232\021w?\264\373&C\214\345\365\337\256x'\207f\007\363\t\355\013\265\336\"|\370SY*\363),\314\225\216\357\362\375\365j\347x\353\205\335\342s935\234lS\270bFV\244\354\002\326\241h\214Km,\274P\224\t\002Dfa{q;\"\320\271#\014\375\317\n04@\3045\006\331\212\361h\276`\347L\236\243\220\224k\353\024\362\361\276iJn\262n\334\251\030R\252\247T\314\300\272\332\252sWrM\\\335n\255K['*\313od\320@\362i\207\033\314\2759\230\256\324\n&\345M\254\232\305y\\\273\325y-\336L[\270\304\255.\214\332\344\352\314\r\216\032\206\010P\321D>e\272*=\357\254X\272'\243\252\262\370e\235\367\n\214\337\206p\345Y\034[\331\024\344\320\232&sJ\n;\252F\324q-|\252\233\264NQ8Y\317P\366\"\375\3543\276\\\351\322]\314\203\26722\341\321l\025\261\"f\334\332\265QR\262L\274\226\204\254x\242Qci]%%\366\252b\311Ou\205\211 \325ySJ\022\246\264\307J\230\335\314\023\262M\323\020\225\333\254\270\231\227*\220\315{\216\224\353\232J\334)t\333\323 \351w\305\363{\253\332*V""\371dy\021\3445\221+\016\274c\367\366\225\304\230\257zIG'\246\256\275\032\264xsU\357\317\226\263s\243\251\353\005\221\366\210\317Ow\244@\027\301\032\266\237.R\022<iJ\253\334:\021\217l\315\270u\307\257\177x\233i\322\244\262\202\006\263\032\3221\352\234\211\261\322\3746\010\306;\347\206\334m\231\247V\365\324\2716\264\004\014\033%^\0202ty*\r\351\211\221\226\017I\224p\004\251\275k\214\361Y2FhkA2e\323\312\335\222\312\275M\306\233/\307F`j\r/\026\r\024\020Ca\"\350\331\226EP\365\031\331\230P\r\326\032\364\342\007}4\227\267\203\272\305\326=C\304I3\272\253\240x\276\244\362\336\232weVjj`\254Q\215)G\036\223\213\317\247\330\254\204\275\336'\303:<\342R3\270*\274\362\342\r\343\003\204\316\316rZc\331\232J\214\242L\340\224\306\255\253\200\026\262\t\034i$\031bB9\030\232\"\004\\\336\365\316\006\253\354\031\254\3338\306\271\234n\252\227)-\2368\276N\363\235J\311\244\222J\352\004\213\tI!\"\342T\243\222k\353\224\304-\334\2439\026\356h'\217\210\342*\371\231j\356\031\225\000\324\207\026r\216T\311\226\347(\242\242\341\tQ<\224\354\313\2317kB\003~\3059\210\010\264u\327!\253\304uy\021Z3\333'\272\002\361\325\334HX\226\216 \355E\322b5\337[+\035V]L\263!\003\271\356M\267\027\215\345\322]!Eff\262\370\253\205\322\304\200\244D\342x\215Q\377\361w$S\205\t\005\327\227\211\220";
    PyObject *data = __Pyx_DecompressString(cstring, 16772, 2);
    if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error)
    const char* const bytes = __Pyx_PyBytes_AsString(data);
    #if !CYTHON_ASSUME_SAFE_MACROS
    if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 1, __pyx_L1_error) }
    #endif
    #elif (CYTHON_COMPRESS_STRINGS) != 0 /* compression: zlib (19429 bytes) */
const char* const cstring = "x\332\315}I[[G\326\260y\203\023\354`\033l\314\344I\362\354\304q\032Oq\234t\247e\020X1 \220\204\207\244\335z\204t\005\212\205$4\200q\222\356,Yj\251\245\226Zj\251%\313w\251%K~B\377\204\357\0145\335\211!I\277\317\347\307\350\326<\236:S\235\252\n\025\266\002\277\004\346\213\005\353Y-\033/Y\351g\340\215\024\026\362\251\264\031b$x\351J\360\322\236\340\225+\001\004\310\262t\210+\211(\"k\2251}\261Z-\256)/\306M\246\362\371\324r\336\372\361G\016\276\033\220\337\251T5U\335*Yo\357R\302\267\356\2242\305\335@\256P\325\031\301\343\3163Y\\[\023\351B\205\255\267\374\353j\203+\025\225\342\237\314]\217\321j\214wG\034\334\010\317\224\336\r\231\316\345-\357\206\334\273w\317/S\334\252Tr\305\202O\007^\345\n\0077\321\231\310\273\"\231J&\220\035\023\t\303\345\362j\252\220\311+X8\031\200\177\341\367i\253T\205\366\005\322\371T\245r\217\002g\312\305ZI\244z\236\252\254b\371\302\033)d\213\340\234K\225J\271\302\312\217\225*@\000\374`k\"U\253L-\251\326J\360\253\242\336\376\201\254\"\017e\227i\030\360\336\316\3460 \377c\242\\\263\336\316-D\356\251\256\334\006_2R\310Uo\337\tdS0g\231\300\217V\271\\,\007\322\305\214\3654 \243\223\325\325\262\225\312\370\245\202yK\255\310~K\337\002\014\022\264\036V\036\324\236\205\265w\017c\347\213U+P]MU\003\223[\325U\030\314\\%\220\261\362\271eha\325\312oagri\310\201\211\n\201\205\360\302\027\017\237<\014\300t\004\312\326OV\272Z\tTj\3134\003V%P\314\006\226k\271|5W\010\340\374U\356\005\"\331\300V\261\026(X\320\310j1P\202tf\206\352\252U\010T\254*:\002\267R\205B\021f\036\006\"\t\331\241\261\267\002\231\\\031*\311mX\230{:\225\257X\367\242\313X/6\024R\0076\313\271*\016n\024\247]\203\024\200\233\t\230\013\251\352\352l\356\235\205\341q\2369\350\030\374.oU\255J\334\312g\305h\305\255\365\232UHS\302\2676\2173\201Z\300*\004\247\234`\002\276*p\377\232u\346\030:*U\035\240\034&$\252\300\345b1\377\326\356s&\301\005e\3638\023\010\020\266\2051\030\323\212\225?o\337\306\241\247\265\212H\232H\225W\254\252\201\265\277\273\367\366\316\255\267\201T&\223, 4!l\244\213\265B\265\362\243\200""\223\264\205\023Ha\001\n\252\324\326ns\222;\201\277/\247S\225j\262t\277\364\367eF\370bf'\027\226\276H\245\323\210\204`Ju\034B\376\027\305B~+M\360\022H\303\244\007j\025\253\374E\306\312\346\n\000h\305\022B/\200\221L\001Y\020\314\213\305\300Z\nH\236-1\257\034\201`*\207\311Q\2662\2654a\036U\221\314\267\226*\005L'\254G\323\0170\234^M\225S\264\240(\022\252&L\207\313\254\260\"\222\226r\351w\200\267\016\252T\244\206T\271T>\367\001\026\320\337\323@p\322\325\367\311\034.r\323\007u\026\327J\2512\240\007\353}\t\227\024\240\202T\0001\002\324d\345\2555\013\247{\005\312K&\323\265L*\231*\227S[\\\020b\213d\362i@\314\301f\256\272\n+z%E\353\262\2025\337\006T[\262\236\036\230ULm\272X\250\346VjE\000\252#\346\224\313\335?\275\030\025\236P\030\365\312;\030=JW\361\317D\330\n\226e\006p\335\217\222p\334\r\314\026\323\357\336R\030!vD\003v\237X\002:\020\327K&W\301\354\231|)\225~\347\337u\357x\331A\031\233+l\300\344\302\212J\225*5\350P\221\260\237\214]\3131R\257\324J\245bY\005\027jk\200\300\021\035gr0\261H\305+T\201\2304\231\216\306\036#\346\227fg\035\201Uk\3153\013\000j\0060\267_|\255\300\360\005\203\276\001\353\tj\266\326J\325\255\300\246\225[Y\005j\261\\\253B?\013\037\254r\021\010\315J\331\262\254\002\366\327$`\032BMX\235L\225\001c\346\200\n!\\\327\n\271t\252Z,\233)`\340\241uP\003T\276RN\225V}S\256X\005$\301\007\244\252\010\254\210\003Y\002<\376E\036\020\271\231\240Z,\025\363\305\225-\277\022\nH\261a\n+\325\024\024\343\212\240\225\017\275\366L@\360\351[\256\\\322\036\261\346*\315\026\313k@\333u$\014\375\0278\331\210\256\313\200Z\3551jQ\2132\362Va\005(\263w\032\\\370\331|j\305\234/h\226\314\013c\306\331\003\000\002\242\035\214\345\002+i\3064\271B\306z\037X\253U \223E\035^\301\214\345@%\237\003\232A\261E\200\027(\252\234*\254X\267\324Ha=\277\340\n\024\013\220\375\332e\247{bi\245\240*\340MJy\232\320\214d2\255\367U\013\t\223g\2522\024\004,H\306XR\313y\300\n\270\234\030p3\264\024*\334\243\273\354\201\221y\032\270\235_~*F\340g\"v\277\0062E\213+\311\346\260\367\201[\310\320\205\240\215\267dB\314""\372k \2174V\260\\?G\346\023\311\271\320\353_\363\000\335\304\211(\207\3502\371\027\312\202\201 \037Sl[\002\034\t\345pF\200\337\240\374 \023pR\025o\313\200|\0039\234<\357\232\265V,o\005\200\036\027\323D\241\2308 \025\245\036\271\343\335\244d\215\331\325\247\201g\321D\":''\240\"X\n\337hX\373\245\274\216\326H\025\233MX\207\371\017\010Q\211\354\244\202J\000z\300\224P\201\007\202E-\237?Z&\001S\316L\271B\226\010\177\r\023\333\326\330\376I\017j\214w\342\3034B\2035$-\347,ct\314\256\351P\275\326\357#;\363\220\001\336#Z\242\001\350!\300\312\227\004+*\231\232r\236\024w\270\275\362\\\005\260Gz\025\227L\261\234[\201\0173\231\304\321\020*\225\235\256\370\244\005\020\201U\355\237\324\316\244\2321\260\31436>\326\267\014J\251\n \272<\2714\025b\346#\240\370\215\265R\356ai\353^\261\274r\217\235\334\314\203\0313\211\013\227\241\212L\305\234;=\345b\022\271\273\007\027y\227\326\334S\302\267\022\022\025\222\342\216\361<r\nZ\256\225\252U\242x\301tX\231J9\375%w\345K\024g\321\213\232\217{\245\255\367\036QRp\362\211\326\322\276\177\202by\022\030\005\277x)M\373\304\243.\304'\212\324\007>q(\325\371D\341\327'\206\001\333'6\352W\227\020\006}b\205^\306/\226P\277O\344\253\234_\266T\205'\372^\351}\316+\272\232[\303\311\366\211FN\004\022\344}\243\211n\373\345^\253\254\260\310\343\023\217\320\222\261\322\373\304\002\371\241\330\252T\021\261\213\t\024\351\002\220\246\335\225\334\353\323*\t\261\346\372x\300\210,\000\\\312Z\261Ru' \366\004yF\033FC\034h\"\004U\243\244\230F\023\\\255\261\313\022o9\236u\206R\035\300aZ\323G\251=\363E$\277($\367\210\344\020\201\322\240z@\245\222\241H\3279\020\365\037\316*1\317]\203\303\262\005;9\020\031i(VE\010*9Dz\216\225\315UJA\303\253\273i\353\260\231\304\350\212\362{4S\351.<\364\031\206f\203c\235\\\221o\377TB\221\2028#\377(\267S\351\214\016\227k\337T\3734\311\336j\305\237\031^O5\317\335@m\371i\255\360\256P\334$\031k9\007BR\000\304\317\232\005b]\261\234a5&\213-\267\004\357\206\022\201\220\031`\256\003\224\212\243j\005\240\230\305\225\002\020\230\214\021\031\002~64\377&""\031\217.\305&\303\350J\204fB\013\013\363Ks\241e\3000\2414\242o\370\255\001\037\236\252Z\241\364\273$k9C\231L\222\304\304$\251\017\r/\020\003\355c!#\204\242%\262\326I\220t\350\233\311e\263\241|\036\030\214Uh\205t$s\205\\U\3716\264KF\024\323I\340[C\314\263Z\362\233\004)\031\304\002\360\222b\306R\016\231\255Z\0046W~m\201\033\312a\013\336T\016\016.l\205\000\013\245W\3717\311\253\347Yh~\352\331\364l4\224\230x\234L<\213Fg\237Ec\314\n?\213\207\347\247\222\321\227\341\330\363ph\352\331\322\364t8\226\014-AL(\021\231|\366\032\322\275I\204\237\0013\222\203r\370C5=C\375\033\375\260\227\366^\0220\307\332u/\231\024\275K>C.\207~8\265\330\331\261o\360\274\224\233A\254\361\346\337P\rJ\003PIS\331\356 \243\222\311P,1\371<\024\303\277\320d\"\034\233\204\376E\346\241C\223\321\371Ddf)\272\024WAS\241X,\364F{\227\026\224{\372\353\277@\216\271\205\331\360k[\030\200`x\306(\025\303b\341\320\254\nx\036\231\237\n\277\016O\271\002\222\317f\243\223/t\360\313\360d\"\252\013rf\363\3165\037\2323\322\304\302\361\310\017\206?\236\210-M&\264w\351\231\275\203/C\263Ka.Y\207\311f\314%Q\272'G<<;M\216\304\233\205p\362\371\253\344\314Rd\212\352\321AK\363\316@h\r-LW\3528\314\205\360\277\212\306f\247\364\270\342g\342\261p<\270/\034\017\305\367\tL\331Ll)<\2370\347n\t\274\257_'\021\202\361;\025]z6\033Vs\005!\004\344f\300,\024\343L\307\371\265\327\031m/\304\263\010\\\235\226b9'Q\271\220GMSr-U\302/\322J\371\2757cU\223i\214,\247\n\357\354\241E@n\025[P&g\317\210\312\"\025\020_\315e\253\332W[\236\314\343\226X\276X\341\237$2[\310\n\020#M\210\221]\n\033\262\027\261\034\273$\342\262\373h\221\332\2036\034^[\022^\201v\237-\001\241(\233\307\035\275a\367\271\023l\332}F\002\023\331Q\210\300T\246[''\254\245]F\004\"(\355\322\021\316\371\2460\032zr\261D\311n\332\0020\234\256l\034\372\316\332\002\022I!S [AH\252Z-\013\277\2637S\271\n\360\302\005`)\331[+\311o\022i&\2643[\244\220\351|\255b\3139-'\032\035f\2453z\326g\034S>c\314\367\214s\262\021$UK\321\343\350\036\006\031\220\206\336\025\024\217\224O\265\025=\205\324\232\245<8\206""\005]\013-\026\351Ays\322\\\022\250?\245\200HJ\001s$e\203f\355\335P~\003P\321\253\301R\3716\354^\206\271\310\262\001O\221e\005?\221e\0051\221\214\350$:\034\323\022\311:\347%b\266\323\326\310\265R\271\270,Zh8\201)\332\220.\335\005\261\322*\300[Tei\366\260$\351\035E\214nl\20572\014O9%=ek\243\370\316\222\t\315\242\205G4\304(\r\\\272\201\322\007\005\2212F\204\256\002\177%\032RQY\277/\346\n\344\230\323}]\240\314\n\342\026t\204}Q\306d\2151[\372\230\036\237\230\003\021\305\334\303\025\363\033-\257\010\277\222\314p\034;v\252N\306\354\355\216\033\325\307\235\005\304\315!\226\036#Z\226\031\267\027iN@\334k\374\343\346\272\215\273\327m\334\\\232qsi\306\365\304\305KyY!\272p\273]\244Q}\215\333\373j0g\350\265/P\373z\264-Gs\275\351\345\246W[\366~\211\227\177V.\376l\271\270\306\035R\336\234\300&F\2259]D\316Xi9\303\251\3061\247\223j\20052\031\256\255\373Yr\250\274F\277LhS\305\330V\214.\275Z\024m\246\341\023D\005?I\350Y\262\262\231B\024SBr\201\337\032P\r`\027*\223\20260\351a\372\">\310vH\247\332B\024\001\031\3220J\017\210\201I\332\327r\005\200(\364\023\200QA\026\204\210N\270\266\000JriI\350\n\033n\222\307\001Y\340\224\323\324\362\367F\210\330\2721B\300\225\227^\230@A:\234\001\0253\244\302j\255d\251b\311\006\232\3350KX\245\275!\300lv\257X\364\"p\003F\262(\333d\317\340\225^\355\267\331\351:{\312\026\322-\231\035$\314\232\234\245d\245\266l\016?\327\3122\311T(\021\"\336\031y\362\251H|a64\031\236\003N89\271\024\213\301\027\303\320\r\337D,\362l)\021fI\301\360O\276\231\234\215L\032\001S\323\263\t\224yf\214\260\371\350|\030\275\311\231Xh\3419s\270v>W\370@\360\021\256\205Xx2\022\217D\347A^\222j\t\245\231e\300\325^'\3349c\030\000\235\241\006\254xE\t\240\361\212B\350q\206\313I\366\013\347\311t\305\212\371p\004\373\224\265oQ\014\020\316P\001\031\316`\006\021W\250\200\025g\270\243\221\006\037\251\303j%\345F\026\320\346q\266M\362v\266\000\234>X\373\025[ ,u+_4\246\236\002i\343\310\026\204D\304\026\200\275\266\005@\207-\257\234\244?\342\221U\341s\270\263`/b!e\2148z\250\254r\301\350\225-\324\235\333""\036\022w\016A\334\331\213\245B\311\254\223\275\356Z5\341SA\031\0135N\312\213$L{\314\271A\274fO\252h\233-(g\214\031\222 \345\251\026m\331\211\2520t\2300Bb\206M\330\230\312\341/\356\200k\211\003\\UB\250\210\344l\036!\256\002\231(\240\225\006\010\233\225$\355c\035\224\n\201\322\344\221\303\261\330\363\320\374\324,\3528\000\345\2017\032\213'C\317\242\261\204t\307\302\311i@\2132.\026N,\305\346\301\003\251\"\364\231\234\014\307\343\344\232\213N\205\311\021\233\241\017\006c9\311g\241\251\344td6\314\3568\177I\341\205.TQ\360w\376e8\206(\216}K\363\224y*2\027\347o|\201\276K\013ID\324\2610yu\027\320'k\301o2\374\032Pl\\y#\363\311%\256{&\026]\242\314\221\371\351\250\374&_\204\337(\367|\324\364\221\006\207}\320\244yv%\343@,\226\250\370\010\025\0029^\3228%gC\361\304\244\030\014$\017HS\320\215z$\372F\023\311\270r'\347\302s\302\025_\000\202#\335K\223\317U\177\242\324\334h\3429ws!<?\025\231\247Q^\340\271\002\372\020\235\02437\245\374\323!\310\357\364\232\271\027\227\242\211\020:b\241\371\027\364\r\303\\E\347g\337\260gq)\034O\260\363%\014\t\025\025\233\013%C\211Dh\362\271\364\301\314M\003\321KH\377\364l\350e4&}P\364LXzX+\245|o\346'\311\035\215Rf\030\315\227\021\036\2018@\225\000\005T\267\321w!\364\212\002\022!j|\"\272\020\235\215\316PS\023\261\245\371\311P\202\322\311\341^\232\1771\037\345\034K\363\361\245\005\032\252)\023x\314`\034\342PBT\311:\273D4\ns\031\343\326\277\212\314\207\363\371\\\251\222\253\350-Oc\363\023\361\272\341\325h\310\010D\314cz\355Y4\262q\004\002\022\261\355\262\336\317\032^\3021j\017Uo\246\n\025\201\324\276{F\000\256\362\ng\215\274\216I&q\333\006zb\204X\353v\377\212\345\360W\355\376\325\024\310\341\266\020\024U\234!\216\200\274\243\320\274#\276\340\210\007\271\253l\017\201\256\230\001\236\003\3425\030\216\201\310\207\337\243\311(\377R\313\rU\265\241\241\226\212iB8\210RI\243\2516\000\310\361\340\276p<~(\034\230{\232t\243\323\252L\241\367\234v\350?\247\223\204\210\247YU:m\327\230NsA\254\020\236\026\010\212\226\3174\256\231i\244/\323\026\222r\024j\212%\334Y\247\335u""\207\226\215\303P\255\311.\247lA\241L\320\310I\354\313\032\214\237\366U\001j\323\271\352\226\n\301\r\245d1\233\005aA\2059JT*+\345C\032\245<\245b%\207s\343\n\020{;*\034\371\n\345A:,\330\034\025\266\221\2636\311\023A\333d\355J\3020\230\276\252\315\343\2105*\215\240\021\250e8uR\341\255\332}\316x\243\254h\311\342\036. S\315\233W\344\217\311\246\306\314\226JOr\331Z\311\025\354A \333\032\001U\323\355\310_\365,\242\352.\205v\004-w\2003\257\014\266e6z\031\267\254w\312a\217p\002O\334\r(q\0234\342\346\214\307\315\331\215o\025\322\344x\245\246\347\225mv\224\317h\276\016\223m\177eN\341+\347\014\232\001\356b\252\036%\231ch\013qew\216\342+'\260h\"C^$/\354\000\302\"\034\222\244(oN,\004$#\344 \0022\235+\220M:\351\261Y\231\215=4\264\247\354F\200\314\033NJ\205\265i\251\206\234k\326\032\311\266\304j%\303s\013\2117\354D\244\310\272mC\373-\224\335\246\316\033\326)!\222\345\\2[,W\313\204v\263E\031f\272\205\3352y\32564\371\330fV\241'\033f\2222\227\0039\331\266\214L1L\357\032\261\013\330m\261k$>\0257\277\355\307\247\023\362c\273\256\212)\325\331\221\242\"\310\016Rn'\340N\262\255\005B\275#\2400+:V7Q\010.\326\312\244\240\345a\224\337|n\271\234*o\231C\2122\030}\315Ny\364\247\000\263\317q \\\224\304H\202\033\202\311U[\243\320\212\336p0q\270\007>\247\240r\021\017\224@\347d3\260\014\325\\9Gek\255(UN\206\037\321\202$\010\364\245N\223\213\214\256\264\013\301\330\364\025\266\014_\245\310UWS+r\023\304\334\014q\010\323\016\242\343\020\251\311\253\007\027q\325\014\251\372\326R\245\031)\271\3158D8\000-[\210\236\n\357`1)\266Hj\265\2609\226\337{R\247\251\002\342U\000}\345K\253h\034W\262\265\023ZQ\341\361\321\006r\254\226i\205_\226\201\374\024\273\020U\260K\315\246\362\321\244\221/R\220\351\311f\252b\321\271\032\016\211\241\2359\014\265L\301\376\234\312\221\200B+yR\374@\351\025\016\\*\250\374\032\203\262\037Q\250p\251\266i$\252\375\271BU\032\037\336\317\262\213\360\350\363\310\314s\020\231P\336JD'\243\263\322\016\301n\217 \314\020\"S\341\371\204\210\260\305\223\324\031\236\177\311\262(`\314\010\246#\026""\022>\310@\302\007\331G\370<\241_d>\305gB~\037\013\307}\361}(\276O\320B\235JL\222\2063\022\345\255<\275mgl\340\351\275;\2653\247w\354\364f\235\334\247\343-:\336\235\303\3758\373\236\\\304\"\006\332\266+'6\341\344^\234\330\206\023\347\215\321\316\304p\032\323\205@\021\221\020\237\324-w\007m\330\302\270\007\256\020\217D\233hAJV\244\014\347\206\023\0216y\231\tf't\026\277\010\323\344\000 \226_F\216\332GX\221\274q\221\310\354\030x\323y+UfW\261\304)\0212\331!+\320p\251\274\000\201\344^\021\305\222\215$\271T\003J\305\222\374b\2540\223\275\237%\007\3010\271j\245\214\3543\241\257\n\236c5\316\262*\363E\345\270\347\336.\320qN,\355\031\203K^G\314Y\345\025K\255xs\351+\243H\345\270\307Vh\332/MB\214\020\326\252\031\001z\243\306\025\250\367`\366\211R\3333\2564z\010\\Q\336\205z\247\315\031c,bX\002u\372\211c\322\201\212\242\350 \271\362t\200\335\033w\371\034e\306K\251\315\202\303\233\224'ot\270\263\032\362\361\212&\250\221b\226\024\252L\341\312\224\253h\333]\354\250;6\326=\367\331y\213=\002\244\217,\202\200\347A7\236\267\252\222\265#\370\262\202\305\315\320\266;p\032\206\017\213\025\233\361z\037\036\\\014\3530\224\271\002\017\230l\203\334\220\217p\265bS\321\265\003/6\337y\337\235\205=-!*q\320&\027\332DB\334\245g\275\" l\370\215L\315\242\2623\024G\315\343\024\352\030\221\\$\303\257'g\227\342\221\227\354c\035\333lt&2\031\232\025\237\t\371},\034\367\305\367\241\370>Ac+\303\340\312\264\275\002ZA^\371\345\244\261\331\327\360\007c\217\177\330\362\331b\361\035`{\344\324\346B\257\341?\264\006~\245\302\r\r\345\"\3633\030B:\014\303/\365\257\312\r]E\367l\344Y,\024{\223\024za#G\364\331\367@BI\243\212^\324\341iO,\212:\351hL\207\304\303\034\235\234\r\317c\000\027\224\010\315P\000$\016\315\340\256\034eU^\240\273s\221y\370\217\375\200\241N\206\026PuJ\316\311X8\224\010\223\023\346 \234\010'\241y\223\263\3218\207\341\204\220c>:\371<<\371B\270q\023/<\025\226\276\245\204p\305\201\031\220\241\361\245\311\311p\230k\211M\241*V8_\305\310\021G\245,\020\357\020W\2604\037\001?j/\347\311\377*FY\026\"\264\357""\217_\271\033\201n\2557D\037\212\177\370%\376\205\357*\310\026\361+\216A\2403J\021\302\326\034\235\3424\003:_\345\nzg\210\320\265\314(\216Q\360\312W>\\\031\322\263`\306\304\214\010M\te\010R>\345\006\342\247\335\222\376\231!\260\210\2457g\253>gVo\213A\362'\335f\"\242\206l\037C&\240\000 \321\205y\027\203\341\016!\374\342\016\336\360\010r%%\336\303\025\340\235l\303\035\342\235p\323\035\302\t\2131\253Z+\027\304\325\022\221\265\022K\245V&:=\r\213&\312\002{46E\266\274\364\231V\237D,4\037-E\245 \020e\206\036>v\334\013\001\302j\207T\006Q\223\353\2162\313\035e~;j2\333Q\305iG\231\315\216\n\036\033Ud\370G6\227\013\241\311\027\341)\332\336\300\226\202c\n7\027m{\217\356\215H\265\377\270\200l\353\206\225Y@1\277\\\314/\320\271\026\376\275\227\251\255\225*\246;Y,.\013\177\276\230\312TL7\305\025+U\324\333e\266\3707\2116\376\302I'b\r\245\2366\266\222GA\345\367\236j\224\n\220e\232^Y\270-L\326b\210sv\037TOKO\233t-\324\226\241\244U\302\333\013\265j2\271\260\365\036\376\246r\351jr\036F-fe\027kVyK\020CTo\343\337\304c\374\275\217?\017\361\347\t\240x\224&\304\246\021\315\2060\225&*\201{<1\255\237\321\202\233\026\331PK(\265\227v\305\246\251\323\024\312ICG\351Rb:\364\227\246J\322\255\265t*,\r]%\342%e\343\3060lX\266\231@m7K\3632a\3635k\363\260h\213A\273*\350\301cJ\300J\304\200?\336\260L\035\220=\244\230\261l\001\254\t\022H[\036Nc[i\351\303\225*\335Z\327\341\016\341\361u\207\026\266<BQS\"\203\023F\325\3506\312!\257.\000\275f\316W\251\\\325t\0339\311\253s\242\327\314\251\361\212\014I\333:\215\250F\271\215\001\320H\307\014\001T#\275+\256\021Z\361\034\241\025\317\021Z\361\036!\304i\322]5F\253j\037\255\252}\264\252\216\321\"\224(=\233\306\320m\332\207n\323>t\233j\350\310\036\206\315'c\320R\3743\364\250\261R\255Jf\224\332\2262\036\016\277@+(\372\002CD_ \026b\313\226V~\3749\220\007\372A\2561\036\231\231\017O%\361x\210p\352@d&\r\247\351\347B\"s\221Y\314\307\372\217\270P\200\304\205\006$\316*\020>\204!\317^\300W\260\214\304M\305\343\361\2459\224i\224\\#\354;M#Pi\362i3\375\304\355\tc\213\002\017\336""\241\221\247\262\001\225\026\237N\313O\301$\311\223\23763y\031\350\330tS\301\316\3356G\004\211\2122\314fD\"\003\245._\371\rm\213\014\263k\232\315\320\034\335\206\244\375R\235k\013\223\312\\3Pife\240M\315\243\002i\324\330\035\367l\204^\3042\004\227\255r\303\262\325n\271l\315\020X\016\372\304\355\375\254t\323:\211c?\214M\000iu\024'\255\277\220\034\343\206v\336\331D\241k\217\253\256\262\202\\nB\305\225\2269\316\nc\271!\025'\370I\256#!\245\263$l\334Kb\264]\226&\003_m\345Kf\275\332\266\227h\270$\344|tX\034 V\273\022\206_\365\302\010\242\346k\277h\255\016\300F\263\317\224\246E\220}\234t\230\243\242\270\243\242\270\263\242\270\255\"\264\036\250\"\202\3049\227A\n\010d@\305\231\206\300B\236\236\206\211f'L-][\021\257-\343\006 \312xK\317\022\317\311\260ezi~\036\244\265)\341\235[\232MD\026@zco<\034\003\251\n\031\026\031\0002\"\304\276\212\002\216A\243\222I\020\274\343r\263]\007\010\265\252\016\020\"\265\016@\376\010\251\234\240\203\202\376I\272\227(\226\212\310.\313\357=\017%\346~q\033\336\221\304\346\357\023\265_\266M\0257\357\337\024\037\271g\237\370\215\375\342\3743\333{\342-\033\371Go\354\023u@\326\315}\242\354Y\367\2311\367\234\330\367$\226\004e[\022\224mIP\266%\246lK\363S\341\351\010\220\303\245y\340\254C\263 \360#m\013\223]\307\322<\223J\371%\022\253<P\200r#Y\265y\354!Dj\227\346_\205#3\317\023P\036\356\220,\025\220G\345_l<[\\:\354.\301k\310\017/\215\303\216\274\307!\350\360+l\030\227\036\347\355\340W\221y2\006\304/kS\204\335\030\006\220\2415\3644\201\036\035\314\256$j\265\320\330\313\010\342\022\214\200\2517 \262G&\215\020V\213a\000*Jf\321\201\234\n~\343\341\205PL\344\307a\305/\324>\035\201\364\211\310\034t(\236\234\231\215>\013\315\"\307)xR\301\213J\036\364U\256\200\2675\350\203\320\344\023\302\236\351\026\274\004\005\021_\200.\0073@A\216\003\0102\014w\034\310M\374\200v\311C\001F\210\243@\323.\032\003\014\233T\366\312\326\220\245\020;\264\265\020\371\221\242+\007\002\205\366\220\034\344\360\252\024@\265\345\327h\000\320\033\36118N\025\"\232egUd\010\261A\322\203\244X""\272\021\014\321\2152\247\374\312f\240|N\337\032}b\366J\221\363\225_G{\220\013\306o\334hW\334\325\256\270\321\224\270\321\024\223\370\223\037\35179\200@\341\027)\001~y\255i\227l7A]\316d\215\320\207\364\217\276bp5;$}\300\361\360\r\"\367\263\370%\026\210\035L#\311\240DY\2748\314al\2260\322\236\305\264kq\233\2768\255^lf,\036\266..3\027\323\302\345U5\007cQ\315\255A\211)<P\213\346\034\3707\201?\367\205q\207\274\027\255\"\255=\212Y`~W\n\n\017K}\213\374\"`\276S\233\232\022'\223}H\252T\2026\244\312+\360?\r\177\025\370\333\300\277\n_AX\314\242\345B\225\214\024*x!j\031]\251\n\314b\016w\352\000$\253\271\202UA\010\001\010\027[\242\313\251\212\205\177\245j\2316GI\362\347\273{\014g\205M,\305/\362{\30073\353,.z\221\035`o\022\257\321\\\006L,b\251dv\342\314\213\3010Ble\225a\345c\263\330W-\322\275\037\312\207j\036\274\260S\\%\004\037h#%I\247\211\367\257\026a}\274KK\241\226\332\222\024\214!\377&\263\005\305'b\323\322B\223\221\306\025\223\311\247-\344m\323\331\034\024\014\213$\235%/\256\2354`\207$\3538\220+\304-J\364Z\251r:\017c\013\353+\211{K\026v=\235\257\244\3272\360\037>\254\262MSiE4\370\317\027\313\362N\014$\303\244\220\244\2717\\ts#z\021\303\331\356\342L:\357\342\\\253U-q\201\2254\213`k \334\240M\342\0179\240\333\360)[+\304\212\363\035hi\324SR\303*\345\rn\241\270>\224?\300\010\373\335t\231\246\275\327\014\302d\005GP\214\242\274\275&\251\034iy\260GF\320(\250k\257\204\327\312\246@\312\340k\034+\220&\237a\n\220-d`na\031V\252\370\227+\360%\251\350\026\367@&\223x\211\r\376\256\241=\212\270\346\267X\300{\277\360/Y\003n\310\274\004\254\".w\304\234t\325d2\251\\\031k#\207\275\203\200b\032~\240V\2722\010U\254J\317\232\251\225p\3303\233Vf\305\252H\001#\231\264hz\222l\201\014\320\204\035\253h<\254]\320+\222A\014\255\231V\227\231z2r\353x\212\306\366X\357-i\017\0145\275Gke\336\336d\313\036\376\205Z\020\017g\305Z\310\302\210\347\263\031\004l\t\334\370\305\342\360\356E\374KB0}\001!\340\267\222\315\027SU(\246\220L\303_\216\357^D\244\216\177X\276^\317z!\313\243*\032\351\013\204\237Lf+x\371%|\t""\022\222\331Z!\315\277\330\023\370\026`03\202a'\273mXgH\362\034\210\345\336\267D\302+\177\273\347\210\320\352,\273\022\314\256\374r(\275V\310\360\251\220)\226MioE\350\246\211\232\323\317\004\375\336_Ai\272\302f\344\334=\361\001\034,l\311W\0010sx\325p!\267\\\"P\203\342s\274(s\264\362r\264nr\014\3579\202l\r\3229\204\343\034\202lN\202j\216@\rP6\242m\006\254\0347$G\306[\271\265\324{\264H\253\210\023\254\271\002\214\014\306P\371\224\002[\000\311\225)\026\2424\374\253H{\367\\\001\210\004e+\342\275\247X_\201\010I\241*\014\340\3059\273J\256d\225sE\350\013\327U\342\206\220\310\300\277\023\374\271O\033[\360C+3\231\303\275\027A\211\350 m\2163\262\374->b\010*\034\217\354\010$\250-sJ\272\021\223S\374\364\023\264\376\035\240d4\037a\276M\260o\300\211\240\216\272\274%\274\225\324\206\365n\023\307\373\335f\246\222_f\343}\246myk\003\010\001n\222\250\235\022\346\016i\256\331\t\030\036\270\000r\343\262\2277N2\232\0068\316\0277e\362M\204[<\n\000\224\001w\346\361\367'\\4\345wx}0L\2224\261\003\247\234\036p\302\230(7M#0A\314\007\361/\352i\004\035\201\"\221\031&*\224\004\236\232\226\026\202.\260\t5\354\230\270\024pnA\330+AH\271\230\024\327\371\201\247\262\"\3659\205B*I\234 \377\362\345KLM\013\351B\006\306\177\255@\023G\247\031\nV\201\200\302-O\272\304Hm\356\007\2716\213\313?\301\027`\014\301\220\314\215\nX\267JT( 8\027\212\005 Oxq|\241\204\204\034V\263\225Q\332<M\332\013\033\305e(\221//.\342\032+\342\032+\322\262bCY\020o\221o\343\313\020\213\330B\006l5\312%\240\225\251\265\212\342\230\224\203V\256\366\301\204j\256\n\260.\323^\001\374|\317\\\251X\022\346JHJi\034\225\261h\262\004\004\021\345\244$M\004\374@V\200\230r\021\017\343\345\341\273\001\253>C\332I\312H@\016\235)!X!k\0149\267\336\003v+\345\220\254\240{C\334Y\r\024f\275\226\312\363\354\021\373\016\350\270L{l\025\\{\264\376x\021\226\201|\222\255\010$\020\354\023.K\374\203A\301\0173\003\350\"\202/9y\376\n\206\014\0261\0024\302\203i-%\334\274F\312\026\r\274<\355\"0\250\370T\344\005\270|\243$\377\302\364\225i\233\267\014pY.\026\253\345J\005""\327+\3222\261\355\004\0046\213\310@0\236\370\201\311\227\346,\370\205F\253\233\313!Y\231H8\216\214\264\374\254\22096\316\217d\013\345\220\223K0\037\246\036\217n\256\346k.qRH\203Z\314\322\374T\240\245\214\252\304\257\211\267*\025\245\036\255\224\323\204\304\030\207Q\271\370\223\003\206\020\240<\303-\341_K|Kt&H\376X\000\242|\311 \3772K\240\0303\211\024\341+pJe\023\202\371\272A\376E\213\260\222p\",T\323\330\006\261\211#6o\344\246\215\330C\345_\254\001\034\225\325b>#Xp>?Jr\232\224\321p\241i\226\234:M\002\016q\314\204\240\310\005\331\310Al\232r\244\2653+\356]\254\025`(2\374;\301\237\373\374y\300\237\207\374y\304\026\2005\220\211P\230!F\224-\001\305@\340\016\222\330c\022{KrO\211g\311\312\210\331\332\\Eu\302f\256\260Yf\333\246l\341\375\373\312\326\226U\221f*\201\317n/l\211w\">\273s\314\264Z\361\2102\336\027qG\242M\213G0?4\342\016\247g?\334\301\362\021\016wL\324\253\024\261\251\346\021#v\037\274b\370\221\006w\004\010\350\216P\355\276-G\314\025(\307\313\025\241G\313\025\205c\345\n\244\221r\205\3428\271\002\305(\271\302\243\356\374b\204\356\034;\346\214\021#\344\312!\307\307\025\001\343\203a\340\304\201H\316XU\366\311\021\320!\272\353:\014\373\254}\324Y\355\305^j\237\350\236\016\210\032IE\207t\200\350\207\021\300XP\371\241\335\332CM\237\2676\035MW!F\323U\0305]\371\270\351\312KMW>\331t\025\020-\2319E\333U\310\202+$\346\014\220\335\323\001\334=\345\307\356\201\247\333{\255\371]\373v'\370\237\276c'.t\307\377\322\356\331\355;\275\275\\?\335H5\252\315\257[/\332\033\235\305\316\352Njg}\267o\240\336\327\350\351\036\0134O\264\006!\303\361\376\356\247\027\032\023\215\251fO\267w\2541\270\327\307\276O\232\353\255\336Vh\267\017\302\032\301\306\303\306fs\265\225\332\035\0174?j>h\246v\373\372\267\237\327C\335\336K\215\037[=Tq#\270\3337X\037\207\334\317\233\241\346\313\326\304\356\251\241\372t\343jc\276\025l=lmu\240U'v\373\317lW\353O\032\017\032\331fh\267\177\260>\\\2576\2364'\232\337\267R\277\365\354\016\235\337=\3761\266j\250>\261Ke\177\324\232\200V\364\216\324\327\033\275\215Hs\261\271""\322z\323N\265\327w{\373\267#\365\305\356\261\253\315\333-\354\371\361\217w{\317\325'\272\275\343\r\036\210\306\235\346\304n\337x\343v3\330|\330\204\236_i\374\252;\364\240\261\002m|\334\036nW:\320\3603\33537\233\251f\265\365\250\335\323\036\354B}\377j\276m\337\351L\354\365}\272\375p{\243\376\252\001Y/\302\300\364B\347\026w!\364q\375\034t\357Vs\020ro\257w{a\334\260\336\213\215G\315\036\321\365\356\305/Z\213\255\014\226\323\t\357\270\022~\325\274\006\035J\271\306\251s\276\223\332?m\367\342\275V\252Um\177\335\tu\226v\202\224\030\206\357\354\271\335\223\203\365A1\206\027\033\0238$O`F\260h\360\360`|\325\n\356\365\236\332^\334\266`\220O\014\324?\256/7\316\300t\177\332\376\n\206\002c\272\247\257\301\330\365b\037\007\353\301\3561\312\247\212$\010j\\\240q\020\331O\303\330Ak\2576\357\264\260\275\247\317s#\357\266B\255D{\254s\275\223rG\302\320\354\366\017\324O4\206\032\213\262\243F\034\014[\3203\023\215\347\303\216\036\234\361\306\240\307\260,\212\021\274\301\363\210\t/7 0\000\263\003\263\367M}\005|\375P\304^\377\331\372\325\372\\s\260y\275\231k\255\267\365\344}\331Z\347\026^\206\321\351\021\345M\264/uRXZ\320\230\346\307\355\024\247\034m\216\321P\333f\017\033\210\013\262;p\225`q\013a\314/\311u\034\327f\246u\247=\321\016q\242c\260\020\272\267\377\276\203\353\354\370p\375\037\000r\275\237\374\366s=\010\363\327\207\023P`\230\204\264\365\217\352\367\353\213{\024\232F@\337\355=[\277\r\360\376\2709\322\352iA\306\223\333W\267\243\264HgZ4\307\023\333a\230\345k\365D\343|\303\202\225\030\242@\\\331o\261\021{X,\202~\250\221 X\357\236\271\r%\215\264{\333\341\316p\247\272\363\350\177\001s\\\355^\275/\207\371\"`\013\310q\215W\335\265\346S\2303\202\347\237\251\035\2038\2458\005\217\352\237tG\356\266\246\332'q\005\3422{_\257t\307U\010\215\217Y\360uQ\224X/\317\021\203\234\332N\324\307\032:?8a\"N6\274\362\2175zt{<\n\301\306y\025t\036\360L\357\225\356\225\373\355 \027s\006;\206\030\366Lc\035\020B\204;8\\_\005\204\373kk\272\035lC\007/5~hV\010\030DU\2630lC\200\275~\332\351\331\031\332\201\371\272L""\370y\302l\351\255\316\345\235u\325\326+8\216\\,\244kN6\377\325^\004Hc@\201Y\220\353\347M3\335\032l\335l\023\214n\324\027\353\260\334\202\335\340\203\366\204\302\314P\027\346[\203\231\017\303\024\334$`\220\340\373\020 \215\212\032\306\n\021A\336Drp\224\"\276j\257{\025\001\235z\320~\334\271\264\223R\213\2701\007m\275\336\312\265\337\343\032\276\325\275\365\264s{\207\006\366js\274\365\200\0260\201>\365\362\016\324!z\371\032\326\305jKb\306\207\355\350\016\265\355\014&\373L\340\316\223;Ag\024\343\365\257\333\337#\022\262G\335\"\"\027i\377\200-!\342\307\310\376%`\005\350\303\020\314\340\272D\365\223\365\rD\037\247\2673\365\317\033\213@\276\236!\025\034\250\367\326\247\000\033\016\"A\234\251O\324C\030v\034\001f\264\321c#\036\260\322we\241{\220:\\?_O\325a\324\316\326\257\327\337\301\200\006\331\231\001@\234@\347-Z\277\334[A\324\3725lJ:\232\201|\003\303\365<`\026(\377zs\n1U?,q\\\204rv&\332\203\355\240\n\246iy\324^\304\200\027@X\217C\177$E\257/Q\365\340\371\036ZW\203UO\304\356I\375A\235P\334)H\373S\3538C\374\247\333\337\312\205\202\274F\r\321\220(\374\037;\203\3779y\354\304\245\306\013\034\302\023\333\227\240\264\017\270\274\330\271\211\025\222s\317@\335\270\022_A\033`\274\000\246S\315\367\010\n\310\336<n\r\267\326\355\020\364y;\321\031\324qgiJ\001N\006\033\327\0339$F\327\273\327\001-\363Z:\335L\311\005[n\0165\337\000\220\255#\2672\n\311o\013H\356\033m\010\276\t\373\230\001,\365u;\324\226d$\320\r<ng;\323\004\251\242\031\263\270\002\007\001s|\336L\264\006\221X\005\275\2115\014?\003\361`\343\006.\017*\021V\327W\300\230\275\334\231\260u\314,\361\330xw\374\363\326\023Z\203\307\373\267\377\n\2006\202\253j\244\376K\363IK\257\314\213\rZ.\253z\306\230FC\342&\323\225z?\341\3571D\022\335c\327D\356\343\230[Q\204\027D\345\030\371\313\024L3\345\310t\007\200z\322\370\255\002\017\266\005xl\220\021\371G\000\036+\032R\262\215\231&qN_\001]\001*{\256\376\024\"a4&\021\336\207\352/\032\357\251.\0352M\234\311\304\236+\304#\r\014\337\277\304\014=i\273\332:\246(iP\220\364\367\355\365\316\211\235""\301\035A$\304r\264\265\364\004\266\361\001\256Bv\020o\200\216\324\236Y1'\353\016\023\352\265e\260\247\333\267\201z0\217\320@{\211z\002\221o\300\t\354\366#1\371\205\231e\373\014\332\240\337E\2566\010Pm\261/\001a\017\"\375Z\004\036y\021H\313Pk\251}\003\332(Y U\364\031\007\303\322=F\354&6\254\357\267\017\300U\334\250\023\264\377\253\021o\366\2218q\002X\364z\270\301|\304\225\306\007({\321\031\270\345\225\3223\260J,\206#p\023\332\022t\006n\340zr\006\376\002$c\375P\025yf\257\021\256\365J\271\007\343\231\003\304\nK\365v\367\366\023\234\\\037\376\243{\021\230\n\211\033n\"kJ\314\006\345\372\270\223\335\ta\276+\215w\255s\300J/\272\021\312y\300u5\342\262\007\235\374\304\245\306?\021\203q\001\253\310\240\343\342\030nTX\036j\365\310\245;\261;8\332\370\270\261\334\354\207\216\017\014\325#\004i\301=\016E\274\227\342\340W0\3238\016\216\212\000'`%7\233\377h\237c\214y\332$\311=\235\361\235\003\222J\022\035BJ\274\177RI\262\027\221\215RI\373@\006\005jsj;\264\275T\017\212\244 \303\300\014\235\300\354H\317B\335SA\026\326\210C\372-\264{\375/\355\276N\217\311y\254k\336\nF|\022\244\201>\001\365\277\205\376\363\361\261s\177\201\024\203H\250\316\241\220}\372*\322^D\006'N\262Dp\262u\215\027\327%\034\254\335\376\341z\256\36131f6*w\241\361\267\026!\216\257\200\330~\325$\301y\260N\264\376\337\270\346D\277\010\2553\333<\361[h\357\324iQ\317\305\356\205\317i\245\313B\237vL\030j\216\002y\014\356\233A\311+\366\014#\243\273\376y\276\356\014J\031\207\231\277Qd*\374r\365\341J\372\310V\000\016\231\253\200\333\235`\347+\226`?4\006\305P\357\035\252<\203\252\312N\334\006\326\373\253\216\263\264\3036P\261\301\177R\003Uy\0075\360P\245)y\371\200\322P\347q\207@\377#\226\263\036\200\240\377\250\361\0212\225\014q\344\000\271\027~\030\254\207v\317j(&,u\256\376W\250c\034\0320\215\214#\212\223\331F\210\233z\366\334\356ydf\207\200)e\027d\034\026\031\231\346'I\270\264{@\200\002\201\272}\034\227\262\273w h`\357>\006\366\3676\020\305\0242\300wP3$\373,\024-\306\250Q\325\243\250\251\270\200c38\002\304\346\034\266\211\373q""\245\221b\"\372\025\214\327I\032+\241\027\270\326|\324\"LLM\374\272>\003\202\337\030&p\217\3650p*\357[\037:C\235E\277\316\217\334B\032t\324\021\360!\003\276\375\207\332\007\317\252\332\007\021\223\271\232\260\007h\207dtC\346F\266!\007]X\337\275|\213?@\257\035\205!\032\363\354O\200\033|\002\331\201+\206\333!C\317\267lm_E\356\3203\300\335\017{\325<q~\265:\201\246\021mM\034\272^\t\077\0773\225e\010\272pq\027p\003\324\332\017\265\"\367\204\334Y\037\000\376\225vO{\004(\027P\362\240\207PJ\230\214\226\210,\375v3(\013\035\036\021\205\366q\241\337\341\002u\024+\002\272\301\211\375\252\301\301\341%\353Q\r\214\"\374\037\002t\261{f\010\304N\256P\312[\335\023\027Y\206\332\275t\207x,\033\022\326R\326\017\304\010\364#\273R%\"\343,\326XP\276e\367\005\024\341\223\325\240t\351W\315\327D\225\007\333\267:\203\277\2633~\304\300\267\302P\363U+\344\306\266\215\357\014\375\214h\364\001T\321\221\345I\247\307\233(\372\346Pd\324V\t`\341\361\013\273\200\210e&\000\305\241\372s\350\311\217,\234^PB%\303\006\016\025\300\306\327(\0364\303-5\222H?\354\210\374)i+X#\257\021\271\013\355\017I\214\257\320\353\360\356\020/\312\275>\004\002\326F!\313\370?uRU|\306\242\346\230\350\373G\255\257X\361\205\332b\321T\255kO\200\224\276\321\216+n\n&K\254\365\211\366\345\216\344\273\220;\022\034\350\032L\357<\320^\020~.2z\354\303\365\200?{}\254\323\374\033\216\335\256\335\003\262\017\262]\254\211\0131\032?.\224\032\003(\322XM\225\340_\004\262f\002\334\373 yKi\330\006\020\034\007.7\n-\371\241\321@\256\r\244\240\207\255Z;\334\031\304\025\216\201\337\002\324}d\006\2428\367\001\306\347|\323j\221Ji\260\361\2053\r\006~\016\303e\231\201\330\246\227\250\253\241\231\002\010\204\377\014\035\375\006V!\n6R\177\017\202\333i\300\035\233\2641\242p\315',\262\ru\207PD\373\221\375\032\323\254\233zD\3042\210!a\t\275\256/\372\256\224\375\270\272#qa\376\345\tF\340hL\330!\212;<\017\346_\330\335V\350O\355\253\332`8\260\257\000\004@W\316\241r\2030\362\025\354\227\224:z\034\270\342f\263\300\022\323e\227\340H\214?*\230\356\222\304\216\014Qb""\307\250\344\342\245]\300C\360\013\244\361\217\327\366m\007\306k\244\276\205tr\264q\002\341k\224\266\361\3360\245\223\270  \324\314c\215\343\244\345\005\314qr\3736\357o\2340\244\323V\254\365\276]\006r\331O\312.j\361\320\005{\003o\311\346\350\341V\252+\036\3541\336\003c1v\263\231\222\255\270\365\240\375\2047\n\234\342 \362\344\223\255\nL5$\320\20356\276;:&\252\275\352\265\252p\240o@3hb\r\274\n\203\013\263i\317h\022\376 \253\225\274\371\213C\344\277\323\332'\377\320y\221\363Bw\034%\224\276\363\365\327\200\027\363\000\244OT\031\244\014\352\353\336\376+\202\207\"\320\234\357r\343\0378\357@\226Q\0338\006`\364\260\275n\027z\230\020\377\000e\234$\330w\007\014\324{T\261\006\217\341]\266\007\203Ad\3640\325\360\376H\252\271\311\374\260\261H\017\356\223\307\2225\030\233\203\352u\311,$\321\013b\212\224\241V\0177\316\201\214\337\217\024\354:Q&\223x\242\354\362\035\300\352#RF\314\264\305\246Y\177Cr2\273\227\037\265\337tR\212\326\213\035\006V\361\020\234\376\002\364l\232=\247A\n|\210L\036\020\270'\255\tCG2\215\n\212\366P{Q-\204\307\355U.\326\t\325\230\374\005\320\361EL \223\007\037\243.\306\256\371\2260\204[\023\271\306\006-\370\232\334\317\304a\360V\224#\257\337\333\216t\026;\326\216bDN\237\331\035D\210\346\231\032o\\\354\336\300\335&\210}__\007\324@\213\2307jXc\372=\217\336\323\372\"\324\275\331\374\tz7\326\271\n\270H\260\n_\2438\206xAi\374\245v\374\026\260\343'w\202R_u\014\210\377\177\006\204\232\034\231\255HsQ\250[\221#e\276\n8\313\326+B9\275\375\333\323\200\264\236@\267n\265\006\tE(\374`\350\261\310>c\2541\016c\031\345\005w\002A\340jw\350\236X\307\337wR{\300\243\244\240{\237\300\030\366\237\3228\307\253@D~\336\005\342\276\317u\340\n>\354\014z\024\330\355\035\307\355V\232\213\341\372\333f\320\33478\307{\312\222\357\3140\r3\315J&Iq}\274\263\270\177\353\220\310y\267N\354\362\267\237v\026\375\272{\366)\254\363sHG\316\"5\022\210\013\027\0202\374}\304\026^!\014;\326\376\274#\225\2047\310N\344%\324\366\274\363|'\304\273\327\377D\364&\346\025\001\360\344\261\343\347\201\267\343\351""\304\215\371\307\304A\366\"\024M\0008\"\027\177f\000E\325\201A\246\205\022\000\241b\322$\002[%\230R\266\262`\363\024\022\2749\340{O\257\267\260\367Y\213\204\275'\215o\320\n\301\003oC+\200\340\240\272\335\224\221P7<\310\240?\001Ty\316\330\222%n\345\014\355\027\336!\233\035\030X\273_\213}\207.\334O1u\210z\0141\314\300\302P\363\001\225\177\013p\321\327\354k\235j;\304X[\035\207\357\350\021\252\363\0234\217Z\263g\327\205\010t\211-\213\2367\237\267\236+h@\035\214\000\201\353b\367\177\212\314\007\304\326MJ`{R\021\223`\306b@os\216\267z\205\227\366@\333\353\206\377+\226\n\224\377)\312X\316Z\207\000\033\016\201\314v\216\331\036\262\232\301\035j\350S\246u\0031y{\361\250\201\027\261\355\204\337\247\000i,1\226E\013\213\317\233\257[\213\212\036{\312\377\270<\277nEp\313\327\316\312\332\367\213\327\335\232\014\217\342\266\307\000I#.O\250\305B$\343\220\205yjD\314\006zp+\337t&|\213\367U\207\370\325fk\277\2532\326\212\035\256.\0273t\340\340{,\010\262\374\360\255\317\246y9\334\224\270\025}\230\350\017Wq\001r\277i\344\232U\233E\316\037\230u[\211\036\223Nx\361\317\233\010{u\2561\"\323\201#\217\321Yd\201|\352\331\240]\305\003\207j\003u\316\036\245\3567b\\\364\221\306l\203\0304\264\033Z\357|\"v\t\217\332\227\243\214\032\327\027D\245\326\301Ss\031h\306\tj\336\241\226\341!`\313,\321c\234\034j\334# \224\375\352\361\321x\034\016\252\014\262z\000kBl\364\376d\223\305\303\303\024\351\236\323\357\017$\312~;J\2129\030Ge\201\027s\200&8\243\315\321\326\245v\3126F\003\347\310\030k\025\r\361H\317\270;\200\3737R\201GJ\212Q\335\217\321z\2551\t\364\267\307m\006\300\322jE\352'*\315\240\220e$\327p\021\212\3012N\"\273\370\255\260\244\001F\2255\262\335K(C\365\260\016jH\001\226\264\2375\367`\245\034&\343\204\364\241\3043\224)\335\202YJ\230(\330\363R\245(C\"\323<\275\223\332C\255\261aL\207\373`A\271\223\361\t\364>\014\203?0D\266s\302\354t\217\024\261o\032)\035NFi\341\372\030\360@d.\216\326vd\241&\366\342<\026\3748Yc\014\223y\202\233z@\351\raq\2272\312\360Z\200fA\036\013\320X\030F\2419\022\214H\036t\253\027\017j""\256\033\222\r\244k\253d\035\315\363=\351\206\037\016\214\323\"\277\ts\270O\341\236cd/\367\364\301\345j\224\332=\377\231\217z\304\243p?ra\326\260?\301\360\353\205\377\244\374\361\352\265\321\342\376\235=T\033\016\252~?\352\345\337\371?\006,\356Ji\267\367P]\366\257\331\311b\006H\341\020i\275ig:A/U\242W\367L\025\342\341\n4\224w\266\002\017\326K\372\225\274\277f\322\273\325\007i$\177_\265d\003tP\337\016\247\014\365\255u_u\250_g\275\010\355\357\254\315\020\371\366\353\243\177\215^\020\177\261\276XO7\306\232wZ\217I\tz\370\265\265?z\364)W/\037\227\002Y\255\247C\242Gg\r\373\342\247?\037=\036\242z\332\340:Dg\177\017ztU\277\017\246\372\323\320\343\301\225F=\021\242W\227\367E\217\375\016\333y\344]\277nM)K\302\203:\347@\216\247\017*n\237f\037\001=:\312\336_p\371c\3736\277\253v\003\036\177\037n\336\277\302}\345\247#o\027\375\316J\315\251\374\3438\371\n4\362#\227\356\215v\325\177\037e\366.\360w\354\032:\240\032\005\331\217@&\215\030Z\013s\374\375\231\225#\026z\360\370\356\277D\354e\356\277D\3764\006\342\340Z\265\001\325~#\345\250\372\000\246\305>\327\036\225\222\371\324\237\316+\035X\355\237\274y\354[\263\217I\360\177gm\376\311\233\325~\330\307\001H\373\242\274?\332\305\203+\323\342\337\376P;\250\017j\037;[\247\263\314\247\266y\363o{\026\317i\010\235\307%\022\213\365.\"\237\303\235b\233MR?\360\256\340\300 \232~({\275}\262\341\201\372\357X\233C:\244\021<\006\207g\326\245\271\234+ \320\374\230\324H\270kB\226ht\n\225\366\006\361L_?o&\222:DY\262B\223\240=\270Q\371_jR\217j\327\236\33417Z\242\332&\233\324=\006\314\023\216\262\334b\245\023fh/\330;X\347\255\361\263\337\000\223\177\356\257\235E\327\326.\355\352\322\246\266{k\367&\255\306l;\324~\335y\215\207hqk7\311;g\254\037\273\371M\347\351\316\242\333\034\201N*y\331#\030&\006\303\250\271\373\263\355\014\366\334G\201\243\022.G\200\007\374\000\271\202x\242\335~\260\206\365\221g\020\302\345\214\212#\330| \025\207\275{\016\201\376\021\232\224\267S{v\377jG\210\020\247a\372w\207q\247\220\260%\261\265g1\314\330\317\246\315D\250}\317}\n\222z O""\n\365\017\323QU\nEO^\355\233\013Kze\\\371\001C\367\\Fa\314\267\342\275\017\037\370 \246\336\346\314\341\271XU\n\246\016\222\2169\336\352m\205\333\347q\037s\317q\364\3503\272\372\201\267Pq\352\344IH\273)\351O\000C\027x#r\240~\022\217T\242\002\376\354\271\335\021\3143\242\346\334<\3269R\337h\374\210G\301\000\242\306a\260\370\364-N\265E\347'\272\347\000\232\2727\2360f\370\3247\206p\\w\034M\035\304t\364\363\214*c}\266\322\241\255/#\201\020><R\r\267\326\375\n\3727\014\316\0267\332;\001\264\005\030\307\207M\215p\207Gv\007\321V\215@\303\000\377\021\234\304]4\275\305B\372\350 \352\204\006l:\010\246\215o\237J\257<\326\\kL\243\rL+\250\355S3\214J\316\326\277$\000z\210\032\343\275\276\253\315/\205\241\210\343X\2172\326\273%O\200\217\311\213<\354\253dw\004\247\347$\232\305\256\353\006l\322\221\267\032\235\3412\256C\371\320R\003EZY\3540i\311\351\364\2101V\206\365 \016\033\336v\261\324\272\335\276AW\251\254\354(m\374\r\030\036\266\3647m\244\310t\206\215N&\374S\362\311\311\024\245\354^\372K\273\347pI\001\335\205\014\274\017\377\215y\273\200\006\306\246\035\317(\317\302\270g\370^\037\337\361q\265\376\254\276\334\350%[1\\\316W[\317pe\242\235\001\376\354y\330v*[X\334\016\031\365Ea\216\021\336\347\244\312\007:\035\375\036\346l\272\035\224\006\352F\317F\353\325\306\003\342!\372\020U\363\31792\325\371\214\315\333[l[t\n\221<_i\3621m\027\366\002J\206\262(\364\024\014c\226\316\017f:\301\275~\274W\246G[\034\251\245>@\315\271\207\026\256\316P\272`\247\355\021L\374\207;\230\016t\271\212\376\222\355\376\235\211\tO\250\223\177xx\007\261\206\301\345\006=w\"\010\321\341\200\016\014\326G\032\n\216\002\267\371n\036\027\342j\376\263\375\335N\320\003o\311\2103\242\377g\332\353\036g\005\006\250e\200V\305i\036\037\\\005S\"\272\202\367\006$\304\262\377\265\023\262\355\207\030\331\360\244\343#\3402R~\345\376J{\220Y\211\340lq|\322i\335#\206\321b\217\337Y\267Q\247\3251\036V\327v\307\237\302\022\036@4G;I\000R\313\200\267\330\000\031O7\237\257/z\026|\3702\313\255A\243<u\326\364\250\r\355\006P\005|PKwo\377""\265\363\003_1\342d\217\200\265\3626\327\274\332\374\254\245v\004\373Nm\377@\354P\236\317\265\216\030\036\303\370\324\311\350\340Aeq\243\224\003C\300l\235\037\336\035\301\333E\350\250\211XH~\347MN\235%l\225\001\\Qi\232\347P<\217\235\274\006\2145\216\214\353O\n\273\"\350\251\332\350\266\000>\2451\326\014\036\315\374\026[\256D\001V\331\321\231CM#\211\010\3747%\003\2426\264\277\355\222\016lmd\331\340\377\250\215\016Q\201\312Tm\264\211\013\332\314\363\273Nj\367\\hg\360\017\313\002HG\365\231\355=\274\325k\367\274\336x\017r\353\350\234\375?\273\327@\034\337\353C\272Dt\0201\247\340^7y\017\276%n\207\2327\356m\022)\030\314\325\341\241\207\224\245\206\360\315\014\317G\264\247\3357X\037\252/\032\305\237\307\324\252\320\356\265\007.\223\330\335\201Q\222y\237\003\337\335\217\207\325\343\220\217h\027\335\262\325\352\331\363\275\232\201\347\033\017 \"\367{\036)\203\223\257\273\314,\311%\376\310\023U\362\240lP\366\016\207z\234\2336J\327\035\365_\000&O\254\213\277\262\231\356\005\272\270m\036\246\375\233N\252C7\025\025q\246\307\370n0/\336N\034T\357Q\247B\304g\037\366\016\240\003\3724\212\013\226\372bXQ\020\200\\\342kG\276\006\231\177\021\207w\221\017\335\336\0020\002\037\252\001\372\240/\303\314\006\216\270\354.\210\2159[\277\331\3509\234\371\005\032s\234\337\2479\356\032H\ts\266\3769Q#\343\364\320\271f\310\250\343w\026N\373;\207+|\367\302Ey,\332\264\352\020\226\377\256A\267\323\037B\032\336\364\347\344\366]4G\325d\010\215\035\r2\364?\255\317\333\261\366\207\235\263;$\033.7\372\321\326\343\000zw\370\372\370\326\212\243U'h\016T5 \252\272\354B\212\372\024\317p}E\330\202\231g#\325i\274+\r\343\270\003\240\266\207u\245\345\n\332/r \251\303\245\031\341\253[pRY5\202\247\222/^\022\343pF^\272s\245\373\227\277\357\364\356\2048\236\033\177\372\330\211k\210z\365\251\037q\345\306'\035}eT\020o,t\334-\027\224&T3\200\267>\220\334\251\216,\2179\317D|\316w\216\031F?\014\214\212\\\310\273;\026\215\323o\252\365\250\273j|\203u\"\263+nHr^h\"\256\004\023g\302\334J\020\230.\303.\313\323$\013\317\357\177""\321Y\267)\321\r\243\254Q\272\005d\000\357\264\273\336\022\246?@\024\317\236s]\033\020\350^A\376\376|;\333\361\260\370\320g\335\363t\300<\323&\026\344\306\276&\235\\\227\026\202\274j\243\3634\207\252m\250\036&,\305Tz\206\017\244\331k\223G\370m7J8o\034\360>\270y\204\002\3547\327\250S\217\207\312\353w\312\363\010\325{\237\354<B\001\336\327s\034\241\000\373y\361#d\264_\277r\204\214\336\007P\2176\364~\207N%\0266\n!\325 \261\310\372>\020`\204\333\323|D\371T\343es\302/\233-\007\246\376\244\356\001\235\362l\254\263\221\366\273]<;\350\227U\201\345\201\240u`\t\007\000\206_\376\303B\246_~;`\036>\337A\360\350\235O\313h\007\003\225_\315\367Z\251?8\346_\3523O\266F\354\336\372\222n\376\3639\223k^\320\244\257\363\240\212\276m\256\037\362:\017\252\333\357\270\254\275\375\327\231E\025G8\305\255\210\304t\372_\356\302\006\250\266\273]Nm\277\251\247\304\035\250\314.\234$\243V\240G|\336\014~Y\264t\036<#f\375r\367\362\275\356\275\357\220\347>\322\311\263C\035D#\236\0079bb\362Q\230\331jy\r\2141*\207\275\330\314\017W\214\232\371\335l\337\204\2776\346\023\030\362\217q\353\203\030<FJ\276\325\374\336\032T\351\006\257\372\373\273\340\322\323\370\364aw\344Jc\035*\363\320\336%\231\333\372\324/\342\214\251b4'jH\336\006b\232%\237s)\277\265&\316jM\370\246\362T\221\337\204\025\360\2623\321\231\321\347w\017\225\373\"\335\200\361\230\371\256\316\253\235\003[\310\352\342\r\250\022\373\010\374\225\223\265:\262\262\312@B\027\241\330\353Jw\354\241\261:\215I\317\242\n\3724j\030xOM_\275\242\367\324H<%M\326e!g\034b\213-O'\256\344\261b\010X\243c\332\267\350h\037x\361\276\347\037\304u\037j\023n\204o\225\036f\304\"v\321\316l\327\350\372\314\001\204\3108]\007:0Nz\355q\274\266\2423a\273\376d\230\254\322\224\022\244\312*\014\267\356\237\010\334\271\372\343\306\010\254\226\257\364:\027{x\347\352\217\370\",\333V\036^U{\203.+\264_\3122D{\017'\350\002\\hfO\343\254\274$\032\360{\265\375\010O\030w\322;t\\ \264\3471\027\312lG\036\342?\3408\316\037\270\226\340\010\307r\376\314[\t\216pJ\347w\330y0B3\205\222\006\021\226o""\344.\2561\206\255\027\355jgB\336~\001\013S_\022\342\223\327\255\023\236\223\033z\027\2323\342\206\310\241\216K\005\261'\333d\230aR\341^\253G_e\331\317\024\377\002\201\231\337\266\325\010\237^2N\330\376\237\324\316@x\210\312\307/\354^\272\214\267|\010\264\347}\t\250\026\340\220\005\301\2033\375x\215\344\365\272\273@\336&\374/\356\020z\014\314\223\366\223\316\223\235\t\205\311Y\271\345\332\n\304&\335h\272\344\024>\305%e\335T\363C\333M3\324\232\371o\024\272Os\211\262\\\367(\036\031\275S\250\341%D\330\372\0308\253\017\035\347\025\311G\352\304\177\247*\033ME\035X@3\257\346H9\356#\274!\216.\332\263\367yew\263\274\207\313\356w\322\312\243(\357\353\004\240ps?\377\240\342\235w\010\332\300\303\215\234\217\324t\217\262\377@\313\275\017E\3779-?D\331\007\264\374\010e\317\2624q\310\262\335\253\242\337\365\020\004\035'U\235?x=\355\217\0246\020u\223\260\262w(\273\205_\3501\215\260\260\3139T\026\344\256\2374\037\341\252=\\\026\017fy\265e\001\027v\363\026\314u\256\275\356\333i\301m\036P\340%\272l\277\206\212\035`\to\335\006\231\204\336\353\261a\023\01705\346$\340/\377\272q\211\032\355}\361l@7\322f'\"\273\217W49\006\340 \254}\305\247H9\000S\342\"\366\375\206\300%\000\016lo\342\316\027\3561\033b\233\335\316\303\036\212\006+\213\316P\272\213\247\345\n\246\313\001S\256\320\273\270\031\350\n\305\333\005\331\320a\000\337_P\227\320\215\353[\241\344\355^x\221\277\375!\243=~\237iS\274\317\000\374\366\014\010\201\307!\325\020^\333\026j,\001\003\217\033\220\0038\177\270_\256\302\203\372\025\035\336\305\323&5\027/\341\365\365U\334KW;!U\334k\204\270K\227)\256{\356\032*\022w/_\021^\276\243V\265~\200\256\354\346\013\210O\237q\007z\030\250lv\207o2\205\367\216\326\023\246/l5\257V\334\377V\305}\257\360\021\247\234{\314\313\024U\317\267\360\261\020{\337>H}\235\262\327\221\240s\245\343\016\275\323\374\216\364b\266P\2642\372\256\343\n\0068\213\266'\\\241\237\243\236@X\275\236u4\203\214o\034\351\3576\213x\260\333\021J\306A\3640\306$?\2512\202l >?\325\207|\3115~TDl\206\253\215n\343\335\023T\toP\252~|\215*""\203j\022~L\005\004\373\232\337\365S\274\213\225h\215\265\257\265_\033\027\205\341\010O\213\327\242N\234\332\376\276;|\213/\271\027[q\335\336`s\3208\261\376\200M\034\344>\231\375\311\252AL=\326\n:\217\301+\375\373\220\270\n\201k\346\035=a>\372=\355\322\367\266B\364\244\214\016\177!Cm\251Q\246\232\30279\306a\360\373\273wg\3106\3478\353|2x\221w\367\330u\264\005\300\373\252\364k\017\027\351\376\305>\022\371{\345u\010P6'u\277\2275\341\216\372\222\324N\231N\020\2579{N\033{\307\207\001\\{?\321O7\234\336^\251\307`\006Q\224\320\017\035p\350\007\302\037\316\320-\332n<\\h\225\214@\234\241\233\364\244\2153\224n\031q\205\376\342x\000b\277\332\274K\250\341\313w\336i\325+\0160\302\335O\321\346\"\325\355\275\213\246\346j\207Z\355\273\242\262h\203oG\340\307]\010\326lF\370\237\265\202\346\225N\353\342<\001N\357\\{\2643\250\236\363 \254A\n\230u1\333\001\226)\235\257\355\221n\311\366\344\236\355\354#\311\326\037wR\216g\367\246Z'\361\246s\334\250~O\272\201\333\370\320\0320<\336\267I\252}\340\240\276?\r\000\373\"\233-\036N\037~\010\036\2204\342\374,\220]+n\277@Q4\363\242\373V:\361zI\367\213\277uR\235\332\216~:m\321~\323\033\337x\030\344\267\317\304Mo\370J\334\"j\220\2566\007\335W;\353}|\261}}\271\261\270\307\203\257\336\304\271\200`\301\252\327\367t\177X\217\202\001z\364\345\262a$\200\032\346VH\035F\371\274\201]:\216\330\263\227\365n5\232\314\307\355Au>\245A/\276\275\347\307W\236\262q\360\230\371\216\214id\327c\177A\343\262`\\\272\307x\360\216\217\302\330\"\3263\317e06\023o*\312Q\036\267\277\026b\007\006|:E\002\303 \222\316\313\246\221\346\"\332\346\003`i\205m\367\014\342\343\023\200Z\217\335@\263<l\311\2478!\370\nN\020A\373usQ\335}\255\317\\\254;^\036J\035\234T\276\253\003m\373\242\365\272\275\350wM\252\264K\263om 0p\373\214U\206\333.\356\215\r\004\333\227\000B/Hk*T'\303\215\r\230\275\207\266\332\317\310\035\253)\274\312\336\250\341\214\303\210\302\231\347\266x3.\345\214P\357\240\310\210\323\254\240\362|\313\"h\243S\277\317\214\223\233\216O9:\337\177a*w\224R\367\277Z\2315\032\237\264LS""0\304\025\366\007B\273\347p\323\321|#\364J\343g!\177{<\027::F\247\266)!B\371\022\031fwa\305\245\230{\376\205\037A\345W4Q_\206Z-\277\2074/8\337\301\324Ok\212'1\273\243\267\351\324\311Lg\342\317+\022\rc\277i\257t\026\271\3350\350\203\365\236\372\240\232X\322\027\263\222\370\323\355\373\333q\310\265\202\3149\263\375?!\036Qi\007\310\034\351\347V\320\030\203\237\311\220q]\225.\260\273q\254!\241\257_\022\266C*\261x\366\021\261\304\247\204S\304Y%#-\333\353\207(\213\355m\274164\330\367m<\262 hH\344f+a\332$\006H\351\036\326\211\006\0177\377\335N\355\t\033\342/\370\256g>\022\224m\002\341\345\206\037G\3005/uM\211\027\264\324\260\374\312\235Q=\275!\007\342\212\354\260q\264d\235\246\360\034\300\322q\334\233B\030\033\351\242=\346\036\037N\242\013\352\361\202\243^\371\266\236\260\014\225\375\303gYD\262\363\374x\332\204|\334M\317\014[u\031\213\207\257Ru\315\r,\240\337y\307$\277l\330K\017\003\313\221R\207\371\346\310\300z\202,\326T\233.\021+e<v\251@\321\006\002\364\262\240l\231dF\305E\265\034\354 \304\034\227\353\254\253\007\237\354y\001\325\361[\200\334\016}\212\013\273\342\035\252\201\310\316\341\2537:I\344#\2237[va\247\366\333\351\355\224\240_\364f\342K\034\n\010S%^e\331Z\252\303\005\022s\314\315\205\3067\315\224\242\320A\275\255y\023\337fn}F\317aUv\304\321\272\311z\205\336\261\t\222h\355\367\026\312\t\272gw\246e3\n\353\036\033k\214\240,\213\234\320i\373\303\277\247\244\275\267\327\303\277\262;L\332\r[=A\376\275\021\201`\004\366\355\274\204\250a\030\273\007\006\247\313+\020\005\000Z\203\307x\246]\311\264!\243}\251v\3170\355OA\227\273cwZ#\355\323t\2215sW\022ro\252G\360DOo\342\t`\265\334\377\315M\356\036\0136/\265R\374L\342]\322\017\255c\206G\200rG\032\037A{~j\251\245qrP!}\265\3504\203\2067hN\010\363@\371\236\254z\246\372\256:\200\021l\236\025V\346\243\374\n\004\355 \263\004\335'\237\001q\206xl\271\360)\261\227\364blU\236\016\365\t$\254\343j\262}w\313|\201\324\336^\371fr\237< \215o\213\313\244\246a\254~vP.`\222J\206A\000\370\274\271\310f\263\357\321\336\344|=\201 L\252(\334\315B""\313\346Kd\366sf@\005~\t\313\353-\214$\006\231\013\371\nA\216\302\310\353l\372\352\200<\300\306w\370\351s\002\n\301\010\177!\336A\315\032\317ZwG?\027\017`!G\214\357)#\373\375\r\242\3623\333\225z\260\376\270q\2661\341\n;\007\2028\276\334y\217\201g\234\231\367\2520Q\357;\313\206\314\310\344\354\222VH\261\341\021\262\030q\020\237\017\214\236\261\226\277\t1\0215-\2440\177\2162\241\030m\rm\327\\\260&$\001;@\252w\250)\211\020V\354\357P\243\226%\250\204>Q\221L\342\017#\007@\321I\263%\222\255\317\232\342\323\307\330_gu\362\332\361\220B\337\316\352\274S\234t\210J\004\262\033\014\375\356\352Ta6\240\035o(\225\340\307\254\367!\251\300\026B\324\335\026b\177w\365\023\274\205\235YZ\026\360\214\347^0\360\275\363a\030\361<\005\254V\333\3030\037\243\221\206b\343\316\330\265\271\324\353\233\315,B\255C\253\365#\332\262 F\315v\257?\241g\017\025\347C\3207\335\274\211\232\2016\2232\001\2067\361\305\345#\274H\304g\332{\232\347\233z\251\2576\035\024\224n\226s\305\314\253\367\"\007U?D\345\022\336CF\330\225\356\345/\2251 \032\342\320\031\310\227\364\200\271x\333\364\027\343\365\017\244k\"\305\267\255u\276\221z\334fb\222R0\303\217\335K+w\343U]\033\\\000[\177\3524\376?}\006\231{\346\353\351\245\000\316\263E\32660O'\311\232\347{\200\267^4k5~h<\0219l\221*t\t\311\236\315\003\\|\367\024\256\347\357\201\273\273N\327\242\235\000\374\205\302\337\247xS\347\347 \016\000c\204\255\025'\001\024K*\201\342MkE\302:t\356^k\215\2378\021\311\2576\203.\0325bL\001\276x\024a\261\323\357\021QcK\305\361\236\350)<\314D\357'\341)\2507\014\316\352YQ\274[\201\017\350\333\342\235B\0372/\203\346[\305\335\376+\324\265A\001\242\2606\367\370\355Uq\350\n\337G^g\021G\010u:\244{\206\261\243\246R\001~\253\236LR\201\354\014\000u\007\331\343\200W\027\261m=\335A:\022\177\231\236N\261;\230\212P\007V\360%P\325\000!$]c\301\312c[/\013+\025\331\317\315\216\324\204uG\356\202\354}\262\243\337\270\307\215\"\021B\223\004e\033\322\324\036 \364\037\001D\277o\t\362+\216O\272\004\251~b\336\355\231\005\252;@\024\323\342K?\2367\376\037\365\252""\365o\360\307\352\353\257Q\263\311\235\006a\367k`:\020X$]\345\243*h9\306s\250&L\211Z\270\253\345P\276\337\007\344\364P\276:MD\213\263\t\374\021\021Z\224\t\333\324\032\363\310\212\360NH\217\232\000\t\246A\270\240GFw{!R,\346\376\355\357\350n\203E\243\201\374\014s\260{\354j\363\0132L\006$zJ<L\337\213|:6e\246\251\373d\343\235I\326\347k\273\034\274\363\235\326e\274\336Bk\313p\367\n\01047\n\267\327\317z5\355\007|\203\243{l\0249\317\276v\017G}+i\232\030DBd\227\033\276'\037\270B\034\205a\334\375\366\317GW\275\373\347\223\363\255\370*\223\215\n\321{\034!\322\245#'\032G*i\014\254\344\272\245:i\264\276\356\315=\233:'\231\310\315bJ\254aSvJ\324\301g\271\244\266S4\301\256\355t\311\203\325\316\204S\361%\206)\340Rf\031\246\317\352\332!\377\324\206\331\276N\r\315\337\243\307(\312\300c>\204J\237\266\210M\376\033\254@Au\345N\251\301*9\rZ\357\266\236\t\250\237R\302\263ob\003\325\221Q\332\201\251\017.Z\337\273\343*\37062\033\036Z\346}\236p\033j\320eO\211\372\230|6\331A*\210G\036\264s\342\202>lWa\265M\362\233\334\242\231\003\244(\332B\362@\243\215i\036\261\216L\344\021\0174\341\221\275>b\241\217\367\375\266\261\035\333.\323\216\371\325\306dc\243\031k\256\033jz\234\346\215\346?\332\303\270\033\364\373t\255\363r\237h\004\267\336\371\264\236\023\356\350\262!o\253@e\303<,\345\037{f\264\227(t\334[X\036\373\232\307\350\305X\245\250\247u\350\014\274\306\024W\006z\360\211c\016hPu\215\330\230V\342\234\025\326\271\250H\221\260+4\2700\375p}\032\221f\307)\367\014CX\337N\337\377\366\374\2578\333/(\233x\370[7\326\270\024\275=\204/i\341\320\002\033n\347I\351\242O\035\303\352w\003'\031\344\306\275\313%\220\307\246\342.o!R7\352VDMF\23564\377\274\257\010\0231X\037et\326\007\334!2(k\244\027&f\361\377{\357\311\355;\254\365U\353n\213\266I*\270\355#\307\303\023\375\272\256\305\257\266\034Hxn!\362p\341M26\231\374\177\312\351~\031";
    PyObject *data = __Pyx_DecompressString(cstring, 19429, 1);
    if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error)
    const char* const bytes = __Pyx_PyBytes_AsString(data);
    #if !CYTHON_ASSUME_SAFE_MACROS
    if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 1, __pyx_L1_error) }
    #endif
    #else /* compression: none (63401 bytes) */
const char* const bytes = "Any | NoneBufSpecB | InPlaceBufSpecB | NoneBufSpecV | InPlaceBufSpecV | NoneBufSpecW | InPlaceBufSpec | BufSpecBBufSpec | InPlaceBufSpec | NoneBuffer | BottomBuffer | NoneCallable[[Buffer, Buffer, Datatype], None]Callable[[Buffer, Datatype, int, Buffer, int], None]Callable[[Comm, int, Any], Any] | NoneCallable[[Comm, int, Any], None] | NoneCallable[[Comm, int], None]Callable[[Datatype], int]Callable[[Datatype, int, Any], Any] | NoneCallable[[Datatype, int, Any], None] | NoneCallable[[File, int], None]Callable[..., None] | NoneCallable[[Session, int], None]Callable[[Win, int, Any], Any] | NoneCallable[[Win, int, Any], None] | NoneCallable[[Win, int], None]Datatype | NoneErrhandler | None\n    Exception class.\n    Group | NoneHashable | NoneInfo | Mapping[str, str] | Iterable[tuple[str, str]] | NoneInfo | Mapping[str, str] | Iterable[tuple[str, str]]Info | NoneIterable[Buffer]Literal[True]MPI.Exception(MPI_Init() failed [error code: MPI_Init_thread() failed [error code: Message | NoneMessage Passing Interface.NoneNote that Cython is deliberately stricter than PEP-484 and rejects subclasses of builtin types. If you need to pass subclasses then set the 'annotation_typing' directive to False.Object is not writableOp | Callable[[Any, Any], Any]PathLike[AnyStr] | str | bytesSelf | NoneSequence[Any]Sequence[Any] | NoneSequence[Datatype]Sequence[Info] | InfoSequence[PathLike[AnyStr] | str | bytes]Sequence[Request]Sequence[Sequence[str]] | NoneSequence[bool]Sequence[bool] | NoneSequence[int]Sequence[int] | NoneSequence[str] | NoneSequence[tuple[int, int, int]]Status | NoneTargetSpec | None?.])'] add_note and counts[ and receive count  and sum(counts) @bcast_p2p@buffer is not CPU-accessiblebuffer is read-onlycannot call user-defined operationcannot create too many user-defined error handlerscannot create too many user-defined reduction operationscannot map cannot map code cannot map to character code or type stringcannot pickle user-defined reduction operationcannot serialize"" '@commctx_inter@commctx_intracompare: expecting a single element, got __cuda_array_interface__: buffer with negative size (shape:__cuda_array_interface__: buffer is not contiguous (shape:__cuda_array_interface__: buffer is not writable__cuda_array_interface__: cannot handle masked arrays__cuda_array_interface__: typestr dict[Hashable, Lock]dict[str, Any]dict[str, Any] | Nonedict[str, int]disabledlpack: buffer is not contiguousdlpack: buffer is not writabledlpack: invalid capsule objectdlpack: missing supportdlpack: number of dimensions is negativedlpack: shape is NULLdlpack: shape item is negativedlpack: strides item is negativedlpack: unexpected versionempty weights but nonzero degreeenableerror code: expecting expecting a Cartesian communicatorexpecting a distributed graph communicatorexpecting a general graph communicatorexpecting a sequence of path-likeexpecting a topology communicatorexpecting an MPI instanceexpecting an MPI type or instanceexpecting an intercommunicatorexpecting an intracommunicatorexpecting buffer with format expecting non-NULL addressexpecting non-negative buffer lengthexpecting non-negative sizeflag: expecting int buffer of length oneformat string gc, got index must be integer or sliceindex out of range' instanceint | Any | Noneint | Noneint | Sequence[int] is not a multiple of datatype extent  is not a multiple of required number of blocks isenabled items, got , itemsize: (lb:length {count} does not fit in 'MPI_Aint'length {size} larger than {INT_MAX}list[Any]list[Any] | Nonelist[Prequest]list[Status] | Nonelist[int]list[int] | Nonelist[int] | tuple[int, ...]list[list[int]] | Nonelist[str]list[tuple[str, str]]memory allocation size too largememory allocation with negative sizemessage: BOTTOM requires countsmessage: BOTTOM requires displsmessage: buffer is None but count is message: cannot handle displacement, datatype is nullmessage: cannot handle displacement, datatype extent message: cannot infer count, buffer length message: cannot inf""er count, datatype is nullmessage: cannot infer count, datatype extent message: cannot infer count, number of entries message: displacement message: expecting 2 to 4 itemsmessage: expecting buffer or list/tuplemessage: negative count message: negative displacement mismatch in origin and compare MPI datatypesmismatch in origin and result MPI datatypesmismatch in receive count mismatch in send and receive MPI datatypesmismatch in send count missing CUDA array interfacempi4py.org.mpi4pyorigin: expecting a single element, got  out of bounds, number of datatype entries result: expecting a single element, got , size:slice length does not match bufferslice with step not supportedsrc/mpi4py/MPI.src/Comm.pyxsrc/mpi4py/MPI.src/Datatype.pyxsrc/mpi4py/MPI.src/Errhandler.pyxsrc/mpi4py/MPI.src/ErrorCode.pyxsrc/mpi4py/MPI.src/Exception.pyxsrc/mpi4py/MPI.src/File.pyxsrc/mpi4py/MPI.src/Group.pyxsrc/mpi4py/MPI.src/Info.pyxsrc/mpi4py/MPI.src/MPI.pyxsrc/mpi4py/MPI.src/Message.pyxsrc/mpi4py/MPI.src/Op.pyxsrc/mpi4py/MPI.src/Request.pyxsrc/mpi4py/MPI.src/Session.pyxsrc/mpi4py/MPI.src/Status.pyxsrc/mpi4py/MPI.src/Win.pyxsrc/mpi4py/MPI.src/asbuffer.pxisrc/mpi4py/MPI.src/atimport.pxisrc/mpi4py/MPI.src/commimpl.pxisrc/mpi4py/MPI.src/constant.pxisrc/mpi4py/MPI.src/msgpickle.pxisrc/mpi4py/MPI.src/typedec.pxisrc/mpi4py/MPI.src/typestr.pxistr | Nonestr | tuple[Any, ...], strides:target: expecting 3 items at mosttarget: expecting integral or list/tuple to MPI datatypetuple[Any] | Nonetuple[Any, tuple[Any, ...], dict[str, Any]]tuple[Comm, Request]tuple[Datatype, str, dict[str, Any]]tuple[Intercomm, int, Intracomm, bool]tuple[Intracomm, int]tuple[Self, Request]tuple[bool, Any | None]tuple[bool, list[Any] | None]tuple[buffer, int]tuple[bytes, list[buffer]]tuple[int, Any]tuple[int, Datatype, Datatype, str]tuple[int, bool]tuple[int, bool, Any | None]tuple[int, int]tuple[int, int, int, int, int]tuple[list[int] | None, list[Any] | None]tuple[list[int], list[int]]tuple[list[int], list[int], list[int], lis""t[Datatype]]tuple[list[int], list[int], list[int]]tuple[list[int], list[int], tuple[list[int], list[int]] | None]tuple[str, str]tuple[str, tuple[int, int, int]], ub:unknown combiner value unorderable type ' with non-native byte order with unrecognized byte orderAINTANY_SOURCEANY_TAGAPPNUMAbortAcceptAccumulateAck_failedAdd_error_classAdd_error_codeAdd_error_stringAgreeAint_addAint_diffAllgatherAllgather_initAllgathervAllgatherv_initAlloc_memAllocateAllocate_sharedAllreduceAllreduce_initAlltoallAlltoall_initAlltoallvAlltoallv_initAlltoallwAlltoallw_initAnyAttachAttach_bufferBANDBFLOAT16_TBOOLBORBOTTOMBSEND_OVERHEADBUFFER_AUTOMATICBXORBYTEBarrierBarrier_initBcastBcast_initBottomTypeBottomType.__reduce__BsendBsend_initBufSpecBufSpecBBufSpecVBufSpecWBufferBufferAutomaticTypeBufferAutomaticType.__reduce__CARTCHARCHARACTERCOMBINER_CONTIGUOUSCOMBINER_DARRAYCOMBINER_DUPCOMBINER_F90_COMPLEXCOMBINER_F90_INTEGERCOMBINER_F90_REALCOMBINER_HINDEXEDCOMBINER_HINDEXED_BLOCKCOMBINER_HVECTORCOMBINER_INDEXEDCOMBINER_INDEXED_BLOCKCOMBINER_NAMEDCOMBINER_RESIZEDCOMBINER_STRUCTCOMBINER_SUBARRAYCOMBINER_VALUE_INDEXCOMBINER_VECTORCOMM_NULLCOMM_SELFCOMM_TYPE_HW_GUIDEDCOMM_TYPE_HW_UNGUIDEDCOMM_TYPE_RESOURCE_GUIDEDCOMM_TYPE_SHAREDCOMM_WORLDCOMPLEXCOMPLEX16COMPLEX32COMPLEX4COMPLEX8CONGRUENTCONTIGUOUSCOUNTCXX_BOOLCXX_DOUBLE_COMPLEXCXX_FLOAT_COMPLEXCXX_LONG_DOUBLE_COMPLEXC_BOOLC_COMPLEXC_DOUBLE_COMPLEXC_FLOAT_COMPLEXC_LONG_DOUBLE_COMPLEXCall_errhandlerCancelCart_mapCartcommCartcomm.Get_cart_rankCartcomm.Get_coordsCartcomm.Get_dimCartcomm.Get_topoCartcomm.ShiftCartcomm.SubCloneCloseClose_portCommComm.AbortComm.Ack_failedComm.AgreeComm.AllgatherComm.Allgather_initComm.AllgathervComm.Allgatherv_initComm.AllreduceComm.Allreduce_initComm.AlltoallComm.Alltoall_initComm.AlltoallvComm.Alltoallv_initComm.AlltoallwComm.Alltoallw_initComm.Attach_bufferComm.BarrierComm.Barrier_initComm.BcastComm.Bcast_initComm.BsendComm.Bsend_initComm.Call_errhandlerComm.CloneComm.CompareComm.CreateComm.Create_errhandlerComm.C""reate_keyvalComm.Delete_attrComm.Detach_bufferComm.DisconnectComm.DupComm.Dup_with_infoComm.Flush_bufferComm.FreeComm.Free_keyvalComm.GatherComm.Gather_initComm.GathervComm.Gatherv_initComm.Get_attrComm.Get_errhandlerComm.Get_failedComm.Get_groupComm.Get_infoComm.Get_nameComm.Get_parentComm.Get_rankComm.Get_sizeComm.Get_topologyComm.IagreeComm.IallgatherComm.IallgathervComm.IallreduceComm.IalltoallComm.IalltoallvComm.IalltoallwComm.IbarrierComm.IbcastComm.IbsendComm.IdupComm.Idup_with_infoComm.Iflush_bufferComm.IgatherComm.IgathervComm.ImprobeComm.IprobeComm.IrecvComm.IreduceComm.Ireduce_scatterComm.Ireduce_scatter_blockComm.IrsendComm.Is_interComm.Is_intraComm.Is_revokedComm.IscatterComm.IscattervComm.IsendComm.IsendrecvComm.Isendrecv_replaceComm.IshrinkComm.IssendComm.JoinComm.MprobeComm.Precv_initComm.ProbeComm.Psend_initComm.RecvComm.Recv_initComm.ReduceComm.Reduce_initComm.Reduce_scatterComm.Reduce_scatter_blockComm.Reduce_scatter_block_initComm.Reduce_scatter_initComm.RevokeComm.RsendComm.Rsend_initComm.ScatterComm.Scatter_initComm.ScattervComm.Scatterv_initComm.SendComm.Send_initComm.SendrecvComm.Sendrecv_replaceComm.Set_attrComm.Set_errhandlerComm.Set_infoComm.Set_nameComm.ShrinkComm.SplitComm.Split_typeComm.SsendComm.Ssend_initComm.__reduce__Comm.allgatherComm.allreduceComm.alltoallComm.barrierComm.bcastComm.bsendComm.f2pyComm.freeComm.fromhandleComm.fromintComm.gatherComm.ibsendComm.improbeComm.iprobeComm.irecvComm.isendComm.issendComm.mprobeComm.probeComm.py2fComm.recvComm.reduceComm.scatterComm.sendComm.sendrecvComm.ssendComm.tointCommitCompareCompare_and_swapCompleteCompute_dimsConnectCreateCreate_Create_cartCreate_contiguousCreate_darrayCreate_dist_graphCreate_dist_graph_adjacentCreate_dupCreate_dynamicCreate_envCreate_errhandlerCreate_f90_complexCreate_f90_integerCreate_f90_realCreate_from_groupCreate_from_groupsCreate_from_session_psetCreate_graphCreate_groupCreate_hindexedCreate_hindexed_blockCreate_hvectorCreate_indexedCreate_indexed_blockCreate_in""tercommCreate_keyvalCreate_resizedCreate_structCreate_subarrayCreate_vectorDARRAYDATATYPE_NULLDISPLACEMENT_CURRENTDISP_CURDISTRIBUTE_BLOCKDISTRIBUTE_CYCLICDISTRIBUTE_DFLT_DARGDISTRIBUTE_NONEDIST_GRAPHDOUBLEDOUBLE_COMPLEXDOUBLE_INTDOUBLE_PRECISIONDUPDatatypeDatatype.CommitDatatype.Create_contiguousDatatype.Create_darrayDatatype.Create_f90_complexDatatype.Create_f90_integerDatatype.Create_f90_realDatatype.Create_hindexedDatatype.Create_hindexed_blockDatatype.Create_hvectorDatatype.Create_indexedDatatype.Create_indexed_blockDatatype.Create_keyvalDatatype.Create_resizedDatatype.Create_structDatatype.Create_subarrayDatatype.Create_vectorDatatype.Delete_attrDatatype.DupDatatype.FreeDatatype.Free_keyvalDatatype.Get_attrDatatype.Get_contentsDatatype.Get_envelopeDatatype.Get_extentDatatype.Get_nameDatatype.Get_sizeDatatype.Get_true_extentDatatype.Get_value_indexDatatype.Match_sizeDatatype.PackDatatype.Pack_externalDatatype.Pack_external_sizeDatatype.Pack_sizeDatatype.Set_attrDatatype.Set_nameDatatype.UnpackDatatype.Unpack_externalDatatype.__reduce__Datatype.decodeDatatype.f2pyDatatype.freeDatatype.fromcodeDatatype.fromhandleDatatype.fromintDatatype.py2fDatatype.tocodeDatatype.tointDeleteDelete_attrDetachDetach_bufferDifferenceDisconnectDistgraphcommDistgraphcomm.Get_dist_neighbors_countDistgraphcomm.Get_dist_neighborsDupDup_with_infoERRHANDLER_NULLERRORS_ABORTERRORS_ARE_FATALERRORS_RETURNERR_ABIERR_ACCESSERR_AMODEERR_ARGERR_ASSERTERR_BAD_FILEERR_BASEERR_BUFFERERR_COMMERR_CONVERSIONERR_COUNTERR_DIMSERR_DISPERR_DUP_DATAREPERR_ERRHANDLERERR_FILEERR_FILE_EXISTSERR_FILE_IN_USEERR_GROUPERR_INFOERR_INFO_KEYERR_INFO_NOKEYERR_INFO_VALUEERR_INTERNERR_IN_STATUSERR_IOERR_KEYVALERR_LASTCODEERR_LOCKTYPEERR_NAMEERR_NOT_SAMEERR_NO_MEMERR_NO_SPACEERR_NO_SUCH_FILEERR_OPERR_OTHERERR_PENDINGERR_PORTERR_PROC_ABORTEDERR_PROC_FAILEDERR_PROC_FAILED_PENDINGERR_QUOTAERR_RANKERR_READ_ONLYERR_REQUESTERR_REVOKEDERR_RMA_ATTACHERR_RMA_CONFLICTERR_RMA_FLAVORERR_RMA_RANGEERR_RMA_SHAREDERR_RMA_SYNCERR_ROOTER""R_SERVICEERR_SESSIONERR_SIZEERR_SPAWNERR_TAGERR_TOPOLOGYERR_TRUNCATEERR_TYPEERR_UNKNOWNERR_UNSUPPORTED_DATAREPERR_UNSUPPORTED_OPERATIONERR_VALUE_TOO_LARGEERR_WINEllipsisErrhandlerErrhandler.FreeErrhandler.__reduce__Errhandler.f2pyErrhandler.freeErrhandler.fromhandleErrhandler.fromintErrhandler.py2fErrhandler.tointExceptionException.Get_error_classException.Get_error_codeException.Get_error_stringException.__bool__Exception.__eq__Exception.__ge__Exception.__gt__Exception.__hash__Exception.__init__Exception.__int__Exception.__le__Exception.__lt__Exception.__ne__Exception.__repr__Exception.__str__Exception.error_classException.error_codeException.error_stringExclExscanExscan_initF90_COMPLEXF90_INTEGERF90_REALFILE_NULLFLOATFLOAT16_TFLOAT32_TFLOAT64_TFLOAT_INTF_BOOLF_COMPLEXF_DOUBLEF_DOUBLE_COMPLEXF_ERRORF_FLOATF_FLOAT_COMPLEXF_INTF_SOURCEF_STATUS_SIZEF_TAGFenceFetch_and_opFileFile.Call_errhandlerFile.CloseFile.Create_errhandlerFile.DeleteFile.Get_amodeFile.Get_atomicityFile.Get_byte_offsetFile.Get_errhandlerFile.Get_groupFile.Get_infoFile.Get_positionFile.Get_position_sharedFile.Get_sizeFile.Get_type_extentFile.Get_viewFile.IreadFile.Iread_allFile.Iread_atFile.Iread_at_allFile.Iread_sharedFile.IwriteFile.Iwrite_allFile.Iwrite_atFile.Iwrite_at_allFile.Iwrite_sharedFile.OpenFile.PreallocateFile.ReadFile.Read_allFile.Read_all_beginFile.Read_all_endFile.Read_atFile.Read_at_allFile.Read_at_all_beginFile.Read_at_all_endFile.Read_orderedFile.Read_ordered_beginFile.Read_ordered_endFile.Read_sharedFile.SeekFile.Seek_sharedFile.Set_atomicityFile.Set_errhandlerFile.Set_infoFile.Set_sizeFile.Set_viewFile.SyncFile.WriteFile.Write_allFile.Write_all_beginFile.Write_all_endFile.Write_atFile.Write_at_allFile.Write_at_all_beginFile.Write_at_all_endFile.Write_orderedFile.Write_ordered_beginFile.Write_ordered_endFile.Write_sharedFile.__reduce__File.f2pyFile.freeFile.fromhandleFile.fromintFile.py2fFile.tointFinalizeFlushFlush_allFlush_bufferFlush_localFlush_local_allFreeFree_keyvalFree_memG""RAPHGROUP_EMPTYGROUP_NULLGatherGather_initGathervGatherv_initGetGet_abi_fortran_infoGet_abi_infoGet_abi_versionGet_accumulateGet_addressGet_amodeGet_atomicityGet_attrGet_byte_offsetGet_cart_rankGet_contentsGet_coordsGet_countGet_dimGet_dimsGet_dist_neighborsGet_dist_neighbors_countGet_elementsGet_envelopeGet_errhandlerGet_errorGet_error_classGet_error_codeGet_error_stringGet_extentGet_failedGet_groupGet_hw_resource_infoGet_infoGet_library_versionGet_nameGet_neighborsGet_neighbors_countGet_nkeysGet_nth_psetGet_nthkeyGet_num_psetsGet_parentGet_positionGet_position_sharedGet_processor_nameGet_pset_infoGet_rankGet_remote_groupGet_remote_sizeGet_sizeGet_sourceGet_statusGet_status_allGet_status_anyGet_status_someGet_tagGet_topoGet_topologyGet_true_extentGet_type_extentGet_value_indexGet_versionGet_viewGraph_mapGraphcommGraphcomm.Get_dimsGraphcomm.Get_neighborsGraphcomm.Get_neighbors_countGraphcomm.Get_topoGrequestGrequest.CompleteGrequest.StartGrequest.completeGroupGroup.CompareGroup.Create_from_session_psetGroup.DifferenceGroup.DupGroup.ExclGroup.FreeGroup.Get_rankGroup.Get_sizeGroup.InclGroup.IntersectionGroup.Range_exclGroup.Range_inclGroup.Translate_ranksGroup.UnionGroup.__reduce__Group.f2pyGroup.freeGroup.fromhandleGroup.fromintGroup.py2fGroup.tointHIGHEST_PROTOCOLHINDEXEDHINDEXED_BLOCKHVECTORIDENTINDEXEDINDEXED_BLOCKINFO_ENVINFO_NULLINTINT16_TINT32_TINT64_TINT8_TINTEGERINTEGER1INTEGER16INTEGER2INTEGER4INTEGER8INT_INTIN_PLACEIOIagreeIallgatherIallgathervIallreduceIalltoallIalltoallvIalltoallwIbarrierIbcastIbsendIdupIdup_with_infoIexscanIflush_bufferIgatherIgathervImprobeInPlaceTypeInPlaceType.__reduce__InclIneighbor_allgatherIneighbor_allgathervIneighbor_alltoallIneighbor_alltoallvIneighbor_alltoallwInfoInfo.CreateInfo.Create_envInfo.DeleteInfo.DupInfo.FreeInfo.GetInfo.Get_nkeysInfo.Get_nthkeyInfo.SetInfo.__reduce__Info.clearInfo.copyInfo.f2pyInfo.freeInfo.fromhandleInfo.fromintInfo.getInfo.itemsInfo.keysInfo.popInfo.popitemInfo.py2fInfo.tointInfo.updateInfo.valuesIn""itInit_threadIntercommIntercomm.Create_from_groupsIntercomm.Get_remote_groupIntercomm.Get_remote_sizeIntercomm.MergeIntersectIntersectionIntracommIntracomm.AcceptIntracomm.Cart_mapIntracomm.ConnectIntracomm.Create_cartIntracomm.Create_dist_graphIntracomm.Create_dist_graph_adjacentIntracomm.Create_from_groupIntracomm.Create_graphIntracomm.Create_groupIntracomm.Create_intercommIntracomm.ExscanIntracomm.Exscan_initIntracomm.Graph_mapIntracomm.IexscanIntracomm.IscanIntracomm.ScanIntracomm.Scan_initIntracomm.SpawnIntracomm.Spawn_multipleIntracomm.exscanIntracomm.scanIprobeIreadIread_allIread_atIread_at_allIread_sharedIrecvIreduceIreduce_scatterIreduce_scatter_blockIrsendIs_cancelledIs_commutativeIs_finalizedIs_initializedIs_interIs_intraIs_revokedIs_thread_mainIscanIscatterIscattervIsendIsendrecvIsendrecv_replaceIshrinkIssendIwriteIwrite_allIwrite_atIwrite_at_allIwrite_sharedJoinKEYVAL_INVALIDLANDLASTUSEDCODELOCK_EXCLUSIVELOCK_SHAREDLOGICALLOGICAL1LOGICAL16LOGICAL2LOGICAL4LOGICAL8LONGLONG_DOUBLELONG_DOUBLE_INTLONG_INTLONG_LONGLORLXORLockLock_allLookup_nameMAXMAXLOCMAX_DATAREP_STRINGMAX_ERROR_STRINGMAX_INFO_KEYMAX_INFO_VALMAX_LIBRARY_VERSION_STRINGMAX_OBJECT_NAMEMAX_PORT_NAMEMAX_PROCESSOR_NAMEMAX_PSET_NAME_LENMAX_STRINGTAG_LENMESSAGE_NO_PROCMESSAGE_NULLMINMINLOCMODE_APPENDMODE_CREATEMODE_DELETE_ON_CLOSEMODE_EXCLMODE_NOCHECKMODE_NOPRECEDEMODE_NOPUTMODE_NOSTOREMODE_NOSUCCEEDMODE_RDONLYMODE_RDWRMODE_SEQUENTIALMODE_UNIQUE_OPENMODE_WRONLYMPI_CommMPI_DatatypeMPI_ErrhandlerMPI_FileMPI_GroupMPI_InfoMPI_MessageMPI_OpMPI_RequestMPI_SessionMPI_WinMatch_sizeMergeMessageMessage.IprobeMessage.IrecvMessage.ProbeMessage.RecvMessage.__reduce__Message.f2pyMessage.freeMessage.fromhandleMessage.fromintMessage.iprobeMessage.irecvMessage.probeMessage.py2fMessage.recvMessage.tointMprobeNAMEDNO_OPNeighbor_allgatherNeighbor_allgather_initNeighbor_allgathervNeighbor_allgatherv_initNeighbor_alltoallNeighbor_alltoall_initNeighbor_alltoallvNeighbor_alltoallv_initNeighbor_alltoallwNeighbor_alltoallw_i""nitNoReturnNoneNotImplementedOFFSETOP_NULLORDER_CORDER_FORDER_FORTRANOpOp.CreateOp.FreeOp.Is_commutativeOp.Reduce_localOp.__reduce__Op.f2pyOp.freeOp.fromhandleOp.fromintOp.py2fOp.tointOpenOpen_portPACKEDPROC_NULLPRODPackPack_externalPack_external_sizePack_sizeParrivedPcontrolPicklePickle.dumpsPickle.dumps_oobPickle.loadsPickle.loads_oobPostPreadyPready_listPready_rangePreallocatePrecv_initPrequestPrequest.ParrivedPrequest.PreadyPrequest.Pready_listPrequest.Pready_rangePrequest.StartPrequest.StartallProbePsend_initPublish_namePut__Pyx_PyDict_NextRefQuery_threadREALREAL16REAL2REAL4REAL8REPLACEREQUEST_NULLRESIZEDRLockROOTRaccumulateRange_exclRange_inclReadRead_allRead_all_beginRead_all_endRead_atRead_at_allRead_at_all_beginRead_at_all_endRead_orderedRead_ordered_beginRead_ordered_endRead_sharedRecvRecv_initReduceReduce_initReduce_localReduce_scatterReduce_scatter_blockReduce_scatter_block_initReduce_scatter_initRegister_datarepRemove_error_classRemove_error_codeRemove_error_stringRequestRequest.CancelRequest.FreeRequest.Get_statusRequest.Get_status_allRequest.Get_status_anyRequest.Get_status_someRequest.TestRequest.TestallRequest.TestanyRequest.TestsomeRequest.WaitRequest.WaitallRequest.WaitanyRequest.WaitsomeRequest.__reduce__Request.cancelRequest.f2pyRequest.freeRequest.fromhandleRequest.fromintRequest.get_statusRequest.get_status_allRequest.get_status_anyRequest.get_status_someRequest.py2fRequest.testRequest.testallRequest.testanyRequest.testsomeRequest.tointRequest.waitRequest.waitallRequest.waitanyRequest.waitsomeResizedRevokeRgetRget_accumulateRputRsendRsend_initSEEK_CURSEEK_ENDSEEK_SETSESSION_NULLSHORTSHORT_INTSIGNED_CHARSIGNED_INTSIGNED_LONGSIGNED_LONG_LONGSIGNED_SHORTSIMILARSINT16_TSINT32_TSINT64_TSINT8_TSTRUCTSUBARRAYSUBVERSIONSUCCESSSUMScanScan_initScatterScatter_initScattervScatterv_initSeekSeek_sharedSelfSendSend_initSendrecvSendrecv_replaceSessionSession.Attach_bufferSession.Call_errhandlerSession.Create_errhandlerSession.Create_groupSession.Detach_buffer""Session.FinalizeSession.Flush_bufferSession.Get_errhandlerSession.Get_infoSession.Get_nth_psetSession.Get_num_psetsSession.Get_pset_infoSession.Iflush_bufferSession.InitSession.Set_errhandlerSession.__reduce__Session.f2pySession.freeSession.fromhandleSession.fromintSession.py2fSession.tointSetSet_atomicitySet_attrSet_cancelledSet_elementsSet_errhandlerSet_errorSet_infoSet_nameSet_sizeSet_sourceSet_tagSet_viewShared_queryShiftShrinkSpawnSpawn_multipleSplitSplit_typeSsendSsend_initStartStartallStatusStatus.Get_countStatus.Get_elementsStatus.Get_errorStatus.Get_sourceStatus.Get_tagStatus.Is_cancelledStatus.Set_cancelledStatus.Set_elementsStatus.Set_errorStatus.Set_sourceStatus.Set_tagStatus.__getstate__Status.__reduce__Status.__setstate__Status.f2pyStatus.py2fStatus.tomemorySubSyncTAG_UBTHREAD_FUNNELEDTHREAD_MULTIPLETHREAD_SERIALIZEDTHREAD_SINGLETWOINTTYPECLASS_COMPLEXTYPECLASS_INTEGERTYPECLASS_LOGICALTYPECLASS_REALTestTestallTestanyTestsomeTopocommTopocomm.Ineighbor_allgatherTopocomm.Ineighbor_allgathervTopocomm.Ineighbor_alltoallTopocomm.Ineighbor_alltoallvTopocomm.Ineighbor_alltoallwTopocomm.Neighbor_allgatherTopocomm.Neighbor_allgather_initTopocomm.Neighbor_allgathervTopocomm.Neighbor_allgatherv_initTopocomm.Neighbor_alltoallTopocomm.Neighbor_alltoall_initTopocomm.Neighbor_alltoallvTopocomm.Neighbor_alltoallv_initTopocomm.Neighbor_alltoallwTopocomm.Neighbor_alltoallw_initTopocomm.neighbor_allgatherTopocomm.neighbor_alltoallTranslate_ranksUINT16_TUINT32_TUINT64_TUINT8_TUNDEFINEDUNEQUALUNIVERSE_SIZEUNSIGNEDUNSIGNED_CHARUNSIGNED_INTUNSIGNED_LONGUNSIGNED_LONG_LONGUNSIGNED_SHORTUNWEIGHTEDUnionUnlockUnlock_allUnpackUnpack_externalUnpublish_nameVVALUE_INDEXVECTORVERSIONWCHARWEIGHTS_EMPTYWIN_BASEWIN_CREATE_FLAVORWIN_DISP_UNITWIN_FLAVORWIN_FLAVOR_ALLOCATEWIN_FLAVOR_CREATEWIN_FLAVOR_DYNAMICWIN_FLAVOR_SHAREDWIN_MODELWIN_NULLWIN_SEPARATEWIN_SIZEWIN_UNIFIEDWTIME_IS_GLOBALWaitWaitallWaitanyWaitsomeWinWin.AccumulateWin.AllocateWin.Allocate_sharedWin.AttachWin.Call_errhandlerWin.C""ompare_and_swapWin.CompleteWin.CreateWin.Create_dynamicWin.Create_errhandlerWin.Create_keyvalWin.Delete_attrWin.DetachWin.FenceWin.Fetch_and_opWin.FlushWin.Flush_allWin.Flush_localWin.Flush_local_allWin.FreeWin.Free_keyvalWin.GetWin.Get_accumulateWin.Get_attrWin.Get_errhandlerWin.Get_groupWin.Get_infoWin.Get_nameWin.LockWin.Lock_allWin.PostWin.PutWin.RaccumulateWin.RgetWin.Rget_accumulateWin.RputWin.Set_attrWin.Set_errhandlerWin.Set_infoWin.Set_nameWin.Shared_queryWin.StartWin.SyncWin.TestWin.UnlockWin.Unlock_allWin.WaitWin.__reduce__Win.f2pyWin.freeWin.fromhandleWin.fromintWin.py2fWin.tointWin.tomemoryWriteWrite_allWrite_all_beginWrite_all_endWrite_atWrite_at_allWrite_at_all_beginWrite_at_all_endWrite_orderedWrite_ordered_beginWrite_ordered_endWrite_sharedWtickWtime_aabortaddraddr1addr2addressaddresses_addressofalignallgatherallocateallocate_lockallreducealltoallamodeappendargargcargsargvargvsarray_of_partitionsassertionasyncio.coroutinesattrvalbarrierbasebaseptrbcastblocklengthblocklengthsbool__bool__bsendbufbufferbuffer.allocatebuffer_callbackbuffer.castbuffer.fromaddressbuffer.frombufferbuffer.releasebuffer.tobytesbuffer.toreadonlybuffersbuflenbytescc_num_to_ackc_status__call__cancelcancel_fncancelledcastcdatarepcerrhdlcetypecfilenamecftypecinfockey__class_getitem__clearcline_in_tracebackclscmdcmdscmessagecnamecodecolorcombinercomm_comm_lock_comm_lock_tablecommand_commctx_inter_commctx_intracommutecomparecompletecoordscopy_copycopy_fncopyregcountcountscportnamecsrvcnamecstringcstringtag__cuda_array_interface__cvalueddargsdatadatarepdatatype_datatype_create_datatype_decodedatatypesdecodedefaultdegrees_deldelete_fndescrdestdestinationsdestweights__dict__dimdimsdirectiondispdisp_unitdisplacementsdistribs__dlpack____dlpack_device____doc__dstdtypedumpsdumps_oobdupcommdwedgeselements__enter____eq__errcodeserrhandlererrhandler_fnerrorerror_classerror_codeerror_stringerrorclasserrorcodeetypeexexception__exit__exscanextentextent_fnf2pyf_statusfatalfdfilefilenamefiletypef""lagflag_lenflag_ptrflagsfloatfnfn_cfn_iformatfreefree_fnfromaddressfrombufferfromcodefromhandlefromint__fspath__ftype__func__functionfunneledgather__ge__getget_buffer_callback.<locals>.buffer_callbackget_statusget_status_allget_status_anyget_status_someget_vendor__getstate__grequestgroupgroup1group2gsizes__gt__handle_handleof__hash__highiiblenibptribsendicoordsicountidargsidegreeidestidestweightidimsidispidistribsiedgesierrierrcodesigsizesiindeximaxprocsimprobeinbufindegreeindexindicesineighborsinfoinfos__init__inoutbufinoutedgesinsertint__int__integersiperiodsiprobeipsizesiranksiranks1iranks2irecviremdims_is_coroutineisendisizesisourceisourceweightissendistartsisubsizesitemsiweightjjoinkkeykeyskeyval_keyval_registrykeyval_savekwargskwdslb__le__lengthlevelloadsloads_ooblocal_grouplocal_leaderlocalcommlocationlock_typelow_grouplower__lt__m__main__majormarkmaskmax_versionmaxindegreemaxoutdegreemaxprocsmemmemorymemoryviewmessage__metaclass__microminor__module__mpi4py.MPImprobe__mro_entries__msgmultiplenna__name__namenativenbytesncndndimndims__ne__nenedgesneighbor_allgatherneighbor_alltoallneighbors__newobj__ninindexnkeysnlennneighborsnnodesnonopythonnpnum_ackednum_psetsnum_to_acknvobobjobjectoblenobptrocountoffsetoporderoriginotheroutbufoutdegreepparamspartitionpartition_highpartition_lowpartitionspeer_commperiodspicklepoppopitemport_nameposition__prepare__probepropertyprotocolprovidedpset_namepsizesptrptypepy2f__pyx_capi____pyx_vtable__q__qualname__query_fnrrangesrankranksranks2rcrdread_fnreadonlyrecvrecvbufrecvcountsrecvtag__reduce__reducereleaseremain_dimsremote_groupremote_leaderreorder__repr__requestrequestsrequiredresultresultlenreturnrmsgrootrsssavescanscatterselfsendsendbufsendobjsendrecvsendtagserializedservice_namesession_set_abort_status__set_name__setdefault__setstate__shapesinglesize_sizeofsizessmsgsourcesourcessourceweightssplit_typesrcssendstartsstatestaticmethodstatusstatusesstatuspstr__str__streamstridestridesstringstringtagsubsizessubversionswtagtarge""ttarget_disptarget_ranktctesttestalltestanytestsome_threadthreadingthresholdtobytestocodetointtomemorytopotoreadonly_typealigntypeclass_typecode_typedict_typedict_c_typedict_ftypestrunusedunused1unused2unused3unused4unused5updateuppervalvaluevaluesversionwaitwaitallwaitanywaitsomeweightedweightswhencewinwrwrite_fnxxsyyesMPI_Comm *(PyObject *)\000MPI_Datatype *(PyObject *)\000MPI_Errhandler *(PyObject *)\000MPI_File *(PyObject *)\000MPI_Group *(PyObject *)\000MPI_Info *(PyObject *)\000MPI_Message *(PyObject *)\000MPI_Op *(PyObject *)\000MPI_Request *(PyObject *)\000MPI_Session *(PyObject *)\000MPI_Status *(PyObject *)\000MPI_Win *(PyObject *)\000PyObject *(MPI_Comm)\000PyObject *(MPI_Datatype)\000PyObject *(MPI_Errhandler)\000PyObject *(MPI_File)\000PyObject *(MPI_Group)\000PyObject *(MPI_Info)\000PyObject *(MPI_Message)\000PyObject *(MPI_Op)\000PyObject *(MPI_Request)\000\000\000PyObject *(MPI_Session)\000PyObject *(MPI_Status *)\000PyObject *(MPI_Win)\000PyMPIComm_Get\000PyMPIDatatype_Get\000PyMPIErrhandler_Get\000PyMPIFile_Get\000PyMPIGroup_Get\000PyMPIInfo_Get\000PyMPIMessage_Get\000PyMPIOp_Get\000PyMPIRequest_Get\000PyMPISession_Get\000PyMPIStatus_Get\000PyMPIWin_Get\000PyMPIComm_New\000PyMPIDatatype_New\000PyMPIErrhandler_New\000PyMPIFile_New\000PyMPIGroup_New\000PyMPIInfo_New\000PyMPIMessage_New\000PyMPIOp_New\000PyMPIGrequest_New\000PyMPIPrequest_New\000PyMPIRequest_New\000PyMPISession_New\000PyMPIStatus_New\000PyMPIWin_New\320\004#\240?\260(\270!\360\010\000\t\033\320\0320\260\001\330\010\016\210b\220\016\230a\230t\2409\250K\260v\270Q\270h\300a\300q\330\010\020\220\010\230\001\320\000 \240\t\250\021\360\010\000\005\014\320\013\033\2301\230D\240\001\320\004\031\230\021\340\010\033\2301\230D\240\007\240q\250\004\250A\330\010\031\230\021\230!\2304\230w\240h\250a\330\032 \240\003\2403\240a\330\010\014\210H\220A\320\004\035\230[\250\001\360\010\000\t\033\230!\330\010\021\220\032\2301\230H\240A\240V\2501\330\r\024\220F\230\"\230N\250!\2504\250y\270\001\330\010""\t\330\014\017\210t\2208\2303\230f\240A\330\014\021\220\026\220t\2308\2401\240J\250a\200\001\330\024\025\330\005\006\360\010\000\005\024\2201\330\004\035\230[\250\003\2501\250A\330\004\027\220q\230\004\230I\240Q\240g\250Y\260a\260q\330\004\014\210I\220Q\320\000\"\240(\250!\360\010\000\005\006\330\004\023\2201\320\004\032\230!\360\010\000\t\033\230)\2401\330\010\032\230(\240!\2404\240q\330\010\037\230}\250A\330\010\031\230\021\230!\2303\230g\240V\2506\260\026\260s\270!\330\010\017\320\017&\240a\240t\2505\260\001\260\021\320\004\027\220~\240]\260)\2701\340\010\013\2104\210v\220W\230A\330\010\034\230D\240\004\240A\240Q\330\010\013\2106\220\023\220F\230'\240\021\330\010\017\210q\320\004\033\2301\360\010\000\t\034\2305\240\001\330\r\024\220F\230\"\320\034-\250Q\250d\260)\2701\270E\300\021\330\010\017\210q\320\004\033\2301\360\010\000\t\034\2307\240#\240Q\240a\330\r\024\220F\230\"\230N\250!\2504\250y\270\001\270\025\270a\330\010\017\210q\320\004\033\2301\360\010\000\t\034\2307\240#\240Q\240a\330\r\024\220F\230\"\320\034.\250a\250t\2609\270A\270U\300!\330\010\017\210q\200\001\330\022\023\330\n\021\220\021\330\005\006\360\010\000\005\034\2301\330\004\023\2208\2301\230N\250!\2501\330\004\032\230(\240!\2407\250!\340\004\r\210Q\210e\2201\330\t\020\220\006\220b\230\017\240q\250\013\2607\270!\330\004\r\210Q\320\016#\2401\330\004\013\2106\220\021\220!\320\000\032\230(\240!\360\010\000\005\034\2301\330\004\020\220\010\230\001\230\033\240A\240Q\330\t\020\220\006\220b\230\016\240a\240q\320\004\"\240)\2501\360\010\000\016\025\220F\230\"\320\034,\250A\250T\260\031\270$\270a\320\004\"\240)\2501\360\010\000\016\025\220F\230\"\320\034-\250Q\330\014\020\220\t\230\024\230Q\320\004\033\2301\360\010\000\016\025\220F\230\"\320\034-\250Q\250d\260!\320\004\"\240)\2501\360\010\000\016\025\220F\230\"\320\034-\250Q\250d\260)\2704\270q\320\004\033\2301\360\010\000\t\032\230\021\330\r\024\220F\230\"\320\034.\250a\250t\2609\270A\270Q\330\010\017\210q\320\004%\240]\260)\2701\360\010\000\t\036\230Q""\330\010 \240\001\330\010\013\210;\220g\230Q\330\014\033\2301\340\014\022\220\"\220M\240\021\240$\240i\250q\260\001\330\r\024\220F\230\"\320\034/\250q\330\014\020\220\t\230\036\240q\250\001\330\010\017\210q\320\0041\260\035\270a\360\010\000\t!\240\001\330\r\024\220F\230\"\320\0346\260a\330\014\020\220\t\230\030\240\031\250!\2501\330\010\017\210q\320\004\033\2301\360\010\000\t\032\230\021\330\010\016\210b\320\020\"\240!\2404\240y\260\001\260\021\330\010\017\210q\320\004\033\2301\360\010\000\t\032\230\021\330\010\016\210b\320\020$\240A\240Q\240d\250)\2601\260A\330\010\017\210q\320\000\035\230[\320(@\300\001\360\010\000\005\026\220\\\240\021\330\004\007\200{\220!\2201\330\010\020\220\006\220n\240A\240Q\330\010\017\210q\220\003\2202\220Q\340\010\020\220\006\220c\230\021\230!\330\004\022\220(\230!\2306\240\027\250\001\250\021\330\004\n\210\"\210O\2301\230H\240G\2501\330\004\013\2101\210E\220\021\220#\220T\230\025\230e\2401\240A\330\004\013\2101\320\004\035\230]\250)\2601\340\010\017\210q\330\010\034\230A\230T\240\021\330\010\017\320\017(\250\001\250\027\260\004\260E\270\026\270t\3005\310\001\320\004\"\320\"2\260)\2701\360\010\000\t\034\2304\230q\330\010#\2404\240q\330\010#\240:\250Q\250a\330\010\017\210{\230!\2306\240\021\240)\2501\330\010\013\2105\220\007\320\027,\250D\260\n\270!\330\010\013\2104\210x\220s\320\032,\250D\260\n\270!\330\010\017\210q\320\004\"\320\"2\260)\2701\360\010\000\t$\240:\250Q\250a\330\r\024\220F\230\"\230H\240A\330\014\r\210T\220\031\230!\330\010\013\2104\210x\220s\230!\330\014\020\220\n\230!\330\010\017\210q\320\004\"\320\"2\260)\2701\360\010\000\t\031\230\001\330\010#\240:\250Q\250a\330\r\024\220F\230\"\230H\240A\330\014\r\210T\220\031\230!\2306\240\021\330\010\013\2104\210x\220s\230!\330\014\020\220\n\230!\330\010\025\220Q\320\004\037\320\0372\260!\360\010\000\t\031\230\017\240q\330\010\016\210b\220\017\230q\240\004\240I\250Q\250a\330\010\026\220h\230a\230}\250F\260!\2601\330\010\035\230Z\240s\250!\2501\330\r\024\220F\230\"\230L\250\001\250""\024\250Y\260j\300\001\300\024\300Q\330\010\036\230a\230t\2401\330\010\017\210q\320\004\"\320\"2\260'\270\036\300q\360\010\000\t\031\230\001\330\010\037\230q\330\010\026\220h\230a\230t\2401\240C\240~\260Q\260a\330\010\016\210b\320\020(\250\001\330\014\020\220\t\230\024\230Y\240c\250\021\250&\260\001\330\010\017\210v\220Q\220a\320\004!\320!3\2601\360\010\000\t\033\230!\330\010\036\230a\330\010\016\210m\2301\230E\240\021\240&\250\001\250\021\330\r\024\220F\230\"\320\0344\260A\330\014\020\220\t\230\026\230q\330\010\031\230\021\230&\240\001\320\004!\320!3\2601\360\010\000\t\033\230!\330\010\036\230a\330\010\016\210m\2301\230E\240\021\240&\250\001\250\021\330\r\024\220F\230\"\320\0347\260q\330\014\020\220\t\230\026\230q\330\010\031\230\021\230&\240\001\320\004\"\320\"3\2606\270\035\300a\360\010\000\016\025\220F\230\"\230M\250\021\250$\250i\260x\270q\320\004'\320':\270(\300!\360\010\000\t\"\240\032\2503\250a\250t\2601\260A\330\010\016\210b\320\020)\250\021\330\014\020\220\t\230\024\230X\240Q\240h\250a\330\010\017\210q\320\0044\260O\3001\360\010\000\t\017\210b\320\020*\250!\2504\250y\270\n\300!\320\0044\260O\3001\360\010\000\t\017\210b\320\020&\240a\240t\2509\260J\270a\320\0044\260O\3001\360\010\000\t\017\210b\320\020'\240q\250\004\250I\260Z\270q\320\004\031\230\021\340\010\013\2104\210v\220V\2301\340\010\031\230\024\230Z\240q\330\010\013\2106\220\023\220C\220v\230Q\330\010\016\210d\220+\230Q\230f\240B\240a\330\010\020\220\004\220D\230\001\230\021\330\010\014\210G\2201\220A\330\010\020\220\005\220Q\320\004\030\230\001\340\010\013\2104\210v\220W\230A\330\010\033\2301\330\010\031\230\024\230Z\240q\340\010\014\210E\220\025\220a\220q\330\014\022\220$\220k\240\021\240!\330\014\022\220$\220d\230!\2301\330\014\022\220'\230\021\230!\330\010\017\210q\320\004\032\230!\360\010\000\t\014\2104\210x\220s\230!\330\014\017\210t\2208\2303\230d\240!\330\020\026\220l\240!\2401\330\010$\240D\250\001\330\010\014\210O\2304\230q\330\r\024\220F\230\"\320\0341\260\021\260!\330\010\014\210O\2304""\230q\320\004\"\320\"5\260Q\330\010\014\210K\220q\230\005\230Q\230a\330\010\014\210H\220A\220U\230!\2301\330\010\014\210J\220a\220u\230A\230Q\330\010\013\2108\2203\220a\330\014\020\220\r\230Q\230j\250\005\250Q\250a\330\010\013\210<\220s\230!\330\014\020\220\016\230a\230u\240A\240Q\320\004\"\320\"5\260\\\300\021\360\n\000\t\035\230K\240q\330\010\t\210\035\220a\220z\240\021\330\010\t\210\035\220a\220w\230a\330\010\t\210\035\220a\340\r\024\220F\230\"\320\034.\250a\330\014\r\210W\220A\220W\230A\230Y\240a\240x\250t\2601\320\004#\2406\250\026\250q\360\010\000\016\025\220F\230\"\230M\250\021\250+\260T\270\021\320\004#\2406\250\026\250q\360\022\000\t\017\210b\220\t\230\021\230$\230i\240q\320\004$\320$6\260a\360\010\000\t\031\230\016\240a\330\010\016\210b\220\017\230r\240\024\240Y\250a\250q\330\010\021\220\030\230\021\230(\240&\250\001\250\021\330\010\030\230\001\330\010\016\210b\220\r\230Q\230d\240)\2509\260A\260Q\330\010\017\210q\320\004 \320 6\260f\270F\300!\360\010\000\016\025\220F\230\"\230L\250\001\330\014\021\220\031\230+\240T\250\021\320\004\"\240!\360\010\000\t\034\2307\240#\240Q\240a\330\r\024\220F\230\"\320\0341\260\021\330\014\020\220\t\230\021\230%\230q\330\010\017\210q\320\004!\320!7\260v\270V\3001\360\010\000\016\025\220F\230\"\230M\250\021\330\014\021\220\031\230+\240T\250\021\320\000\032\320\032+\2508\2601\360\010\000\005\014\210=\230\001\230\027\240\001\320\004\027\220|\2408\2501\360\010\000\t\033\230!\330\010\034\230A\330\010\016\210h\220a\220u\230A\230Q\330\010\020\220\010\230\001\230\027\240\001\240\021\330\010\016\210b\220\014\230A\230T\240\031\250&\260\001\320\000#\2408\2501\360\010\000\005\033\230!\330\004\n\210\"\210O\2301\230K\240q\250\001\330\004\013\2101\320\004#\2408\2501\360\010\000\t\036\230Q\330\010\030\230\001\330\010\016\210b\320\020 \240\001\240\024\240Y\250h\260a\260y\300\001\300\021\330\010\013\2105\220\003\2203\220g\230Q\330\010\013\2108\2203\220f\230G\2401\340\010\013\2107\220#\220Q\330\014\023\220:\230Q\330\r\024\220C\220q\330\014\024""\220K\230x\240q\250\001\330\r\024\220C\220q\330\014\024\220F\230(\240!\2401\340\r\024\220C\220q\330\014\024\220F\230(\240!\2401\330\r\024\220C\220q\330\014\024\220F\230(\240!\2401\340\010\017\210~\230Q\230d\240)\2508\2601\320\004#\2408\2501\360\010\000\t\036\230Q\330\010\031\230\021\330\010\016\210b\320\020!\240\021\240$\240i\250x\260q\270\t\300\021\300!\330\010\013\2104\210v\220W\230A\330\010\013\2108\2203\220f\230G\2401\340\010\t\330\014\023\2203\220k\240\021\330\014\023\2203\220g\230Q\330\014\023\2203\220a\340\014\024\220F\230(\240!\2401\340\010\t\330\014\023\2203\320\026(\250\001\330\014\023\2203\220k\240\021\330\014\023\2203\220a\340\014\024\220F\230(\240!\2401\340\010\017\210~\230Q\230d\240)\2508\2601\320\004#\2408\2501\360\010\000\t\036\230Q\330\010\030\230\001\330\010\016\210b\320\020!\240\021\240$\240i\250x\260q\270\t\300\021\300!\330\010\013\2104\210v\220W\230A\330\010\013\2108\2203\220f\230G\2401\340\010\017\210~\230Q\230d\240)\2508\2601\320\000#\2408\2501\360\010\000\005\032\230\021\330\004\n\210\"\320\014\036\230a\230|\2501\250A\330\004\013\2101\320\004#\2408\2501\360\010\000\t\031\230\016\240a\330\010\016\210b\220\017\230q\240\004\240I\250Q\250a\330\010\026\220h\230a\230v\240Q\240a\330\010\016\210b\220\017\230q\240\004\240I\250V\2606\270\021\330\010\035\230Q\230g\240Q\240c\250\024\250U\260%\260q\270\001\330\010\017\210q\320\004#\2408\2501\360\010\000\t\017\210b\320\020$\240A\240Q\240d\250)\2601\320\000\023\2208\2301\360\010\000\005\010\200z\220\021\220%\220q\330\010\017\210~\230S\240\010\250\004\250A\330\t\023\2201\220E\230\021\330\010\017\320\017\037\230z\250\024\250Q\330\t\023\2201\220E\230\021\330\010\017\320\017\037\230y\250\004\250A\330\t\023\2201\220E\230\021\330\010\017\320\017\037\230y\250\004\250A\330\t\023\2201\220E\230\021\330\010\017\320\017\037\230t\2404\240q\330\t\023\2201\220E\230\021\330\010\017\320\017\037\230w\240d\250!\330\t\023\2201\220E\230\021\330\010\017\320\017\037\230v\240T\250\021\330\t\023\2201\220E\230\021\330\010\017\320""\017\037\230|\2504\250q\330\t\023\2201\220E\230\021\330\010\017\320\017\037\230y\250\004\250A\330\t\023\2201\220E\230\021\330\010\017\320\017\037\230v\240T\250\021\330\t\023\2201\220E\230\021\330\010\017\320\017\037\230u\240D\250\001\330\t\023\2201\220E\230\021\330\010\017\320\017\037\230v\240T\250\021\340\010\016\210i\220q\230\001\320\004(\320(8\270\t\300\021\360\010\000\t\031\230\001\330\010#\240:\250Q\250a\330\r\024\220F\230\"\320\0342\260!\330\014\020\220\t\230\021\230&\240\001\330\010\025\220Q\320\004(\320(8\270\006\270f\300A\360\010\000\t\037\230k\250\023\250A\250Q\330\r\024\220F\230\"\320\0341\260\021\330\014\020\220\t\230\025\230i\240u\250A\250T\260\021\330\010\036\230a\230t\2401\330\010\017\210q\320\004\035\230^\2509\260A\360\010\000\t\037\230h\240a\240q\330\010\031\230\026\230s\240!\2404\240q\250\001\330\010\013\2105\220\003\2201\330\021\030\230\006\230b\240\014\250A\330\020\024\220I\230Q\230d\240!\340\021\030\230\006\230b\320 6\260a\330\020\024\220I\230W\240A\240T\250\021\330\010\036\230a\230t\2401\330\010\017\210q\320\004 \240\001\360\010\000\t&\240\\\260\023\260A\260Q\330\010\016\210b\320\020*\250!\2504\250y\270\001\270\032\3001\330\010\017\210q\320\004 \240\001\360\010\000\t&\240\\\260\023\260A\260Q\330\010\016\210b\320\020&\240a\240t\2509\260A\260Z\270q\330\010\017\210q\320\004 \240\001\360\010\000\t&\240\\\260\023\260A\260Q\330\010\016\210b\320\020'\240q\250\004\250I\260Q\260j\300\001\330\010\017\210q\320\004 \240\010\250\001\360\n\000\t\r\210A\210U\220!\330\010\016\210b\320\020#\2401\240D\250\t\260\023\260A\330\010\014\210A\320\r!\240\021\330\010\017\210v\220Q\220a\200A\330$0\260\010\270\001\360\010\000\t\"\240\032\2503\250a\250q\330\010\016\210b\320\020(\250\001\250\023\250C\250q\260\010\270\001\330\010\017\210q\200A\360\006\000\0230\250q\330\021.\250a\330\0230\260\001\330\016\"\240!\330\020(\250\001\330\t\n\360\010\000\t!\240\n\250#\250Q\250a\330\010\035\230W\240A\330\014\026\220i\230{\250&\260\001\330\r\024\220F\230\"\320\034.\250a\330\014\033""\230>\250\021\330\014\023\2207\230!\2307\240!\330\010\021\220\021\220!\330\010\017\210\177\230g\240Q\330\010\017\210q\320\004\034\230A\330\010\017\210{\230!\2301\200A\340\r\016\330\t\n\360\010\000\t\034\320\033+\2501\250A\330\r\024\220F\230\"\320\034:\270!\330\014\020\220\t\230\021\230&\240\001\240\030\250\021\250!\200A\340\r\016\330\t\n\360\010\000\t\034\320\033+\2501\250A\330\r\024\220F\230\"\320\0346\260a\330\014\020\220\t\230\021\230&\240\001\240\030\250\021\250!\200A\340\027\030\330\r\016\330\t\n\360\010\000\t\034\320\033+\2501\250A\330\r\024\220F\230\"\320\0349\270\021\330\014\020\220\t\230\030\240\021\240&\250\001\250\030\260\021\260!\200A\340\027\030\330\r\016\330\t\n\360\010\000\t\034\320\033+\2501\250A\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\320\0340\260\001\330\014\020\220\t\230\030\240\021\240&\250\001\250\030\260\021\260(\270!\2707\300!\330\010\017\210z\230\021\330\010\017\210q\200A\340\r\016\330\t\n\360\010\000\t\034\320\033+\2501\250A\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\320\0341\260\021\330\014\020\220\t\230\021\230&\240\001\240\030\250\021\250(\260!\2607\270!\330\010\017\210z\230\021\330\010\017\210q\200A\340\027\030\330\r\016\330\t\n\360\010\000\t\034\320\033+\2501\250A\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\320\0344\260A\330\014\020\220\t\230\030\240\021\240&\250\001\250\030\260\021\260(\270!\2707\300!\330\010\017\210z\230\021\330\010\017\210q\200A\340\r\016\330\t\n\360\010\000\t\034\320\033+\2501\250A\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\320\0344\260A\330\014\020\220\t\230\021\230&\240\001\240\030\250\021\250(\260!\2607\270!\330\010\017\210z\230\021\330\010\017\210q\200A\340\r\016\330\t\n\360\010\000\t\034\320\033+\2501\250A\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\320\034-\250Q\330\014\020\220\t\230\021\230&\240\001\240\030\250\021\250(\260!\2607\270!\330\010\017\210z\230\021\330\010\017\210q\200A\330\010\032\230)\2401\240D\250\003\2501\330\010\013\2103\210e""\2205\230\003\2301\330\014\023\2207\230!\2301\330\014\023\2201\340\014\023\2201\200A\360\006\000\023\024\330\022(\250\001\330\t\n\360\010\000\t\031\230\001\330\010\023\220=\240\001\240\032\2501\250F\260!\330\010\020\220\006\220f\230A\200A\340\r\016\330\022\023\330\025\033\2301\330\024\032\230!\330\025\033\2301\330\t\n\360\026\000\t\031\230\001\330\010\013\2107\220#\220_\240G\2501\330\010\013\2107\220#\220_\240G\2501\330\010\037\320\037/\250q\260\005\260Q\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\320\0343\2601\330\014\020\220\006\220d\230(\240$\240a\330\014\022\220)\2308\2401\330\014\020\220\t\230\021\230'\240\021\330\010\017\210z\230\021\330\010\017\210q\200A\340\025\033\2301\330\030#\2401\330\033-\250Q\330\021\027\220q\330\023\032\230!\330\t\n\360\010\000\t\037\230a\330\010\013\2108\2207\230&\240\n\250(\260!\2609\270A\270Q\330\010#\2405\250\001\330\010#\2401\330\010\013\2109\220G\2306\240\031\250(\260!\330\r\024\220F\230\"\320\034-\250Q\330\014\020\220\t\230\026\230x\240x\250z\270\024\270Q\200A\340\r\016\330\022\023\330\025\033\2301\330\024\032\230!\330\025\033\2301\330\027'\240q\330\t\n\360\026\000\t\031\230\001\330\010\013\2107\220#\220_\240G\2501\330\010\013\2107\220#\220_\240G\2501\330\010\037\320\037/\250q\260\005\260Q\330\010#\240:\250Q\250a\330\r\024\220F\230\"\320\0342\260!\330\014\020\220\006\220d\230(\240$\240a\330\014\022\220)\2308\2401\330\014\020\220\t\230\021\200A\340\021\022\330\022\023\330\025\033\2301\330\021!\240\021\330\024\032\230!\330\025\033\2301\330\027'\240q\330\t\n\340\010\035\230T\240\021\330\010#\240:\250Q\250a\330\010\017\210~\230Q\230i\240x\250q\330\036'\240x\250q\330\036$\240A\200A\340\021\022\330\022\023\330\025\033\2301\330\021\"\240!\330\024\032\230!\330\025\033\2301\330\027'\240q\330\t\n\360\026\000\t \320\037/\250q\260\t\270\021\330\010\037\320\037/\250q\260\t\270\021\330\010#\240:\250Q\250a\330\r\024\220F\230\"\230N\250!\330\014\020\220\006\220d\230(\240$\240h\250h\260a\330\014\020\220\006\220d\230(\240$\240h\250h""\260a\330\014\020\220\t\230\021\200A\340\021\022\330\022\023\330\025\033\2301\330\021\"\240!\330\024\032\230!\330\025\033\2301\330\t\n\360\010\000\t \320\037/\250q\260\t\270\021\330\010\037\320\037/\250q\260\t\270\021\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\230O\2501\330\014\020\220\006\220d\230(\240$\240h\250h\260a\330\014\020\220\006\220d\230(\240$\240h\250h\260a\330\014\020\220\t\230\021\230'\240\021\330\010\017\210{\230&\240\001\330\010\017\210q\200A\340\033\034\330\027\030\330\t\n\360\014\000\t \230|\2501\330\010\030\230\010\240\001\240\037\260\001\260\027\270\001\270\021\340\010!\240\032\2503\250a\250t\2601\260A\330\010\016\210b\320\0200\260\001\330\014\023\220=\240\001\330\014\020\220\t\230\021\230(\240!\330\010\017\210q\200A\340\026\027\330\027\030\330\t\n\360\010\000\t \230|\250?\270!\330\010\030\230\010\240\001\240\037\260\001\260\027\270\001\270\021\330\010\030\230\010\240\001\320!1\260\027\270\001\270\021\340\010!\240\032\2503\250a\250t\2601\260A\330\010\016\210b\320\020\"\240!\330\014\023\2207\230!\330\014\020\220\t\230\021\230(\240!\330\010\017\210q\200A\340\021\022\330\021\022\330\024+\2501\330\017\024\220A\330\t\n\360\010\000\t\035\230K\240q\330\010\t\320\t\034\230A\230Y\240a\330\035)\250\024\250Q\330\r\024\220F\230\"\320\0340\260\001\330\014\r\210W\220A\220W\230A\230Z\240q\250\001\330\014\016\210i\220t\2301\200A\340\021\022\330\021\022\330\024+\2501\330\017\024\220A\330\023\032\230!\330\t\n\360\010\000\t\035\230K\240q\330\010\t\320\t\034\230A\230Y\240a\330\035)\250\024\250Q\330\010 \240\n\250#\250Q\250a\330\r\024\220F\230\"\320\0345\260Q\330\014\r\210W\220A\220W\230A\230Z\240q\250\001\330\014\016\210i\220t\2309\240D\250\t\260\021\260'\270\021\330\010\017\210q\200A\340\021\022\330\021\022\330\024+\2501\330\017\024\220A\330\t\n\360\010\000\t\035\230K\240q\330\010\t\320\t\034\230A\230Y\240a\330\035)\250\024\250Q\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\320\0341\260\021\330\014\r\210W\220A\220W\230A\230Z\240q\250\001\330""\014\016\210i\220t\2309\240A\240W\250A\330\010\017\210q\200A\340\r\016\330\t\n\360\010\000\t\034\230?\250!\2501\330\r\024\220F\230\"\320\0345\260Q\330\014\020\220\t\230\021\230&\240\001\240\030\250\021\250!\200A\340\027\030\330\r\016\330\t\n\360\010\000\t\034\230?\250!\2501\330\r\024\220F\230\"\320\0348\270\001\330\014\020\220\t\230\030\240\021\240&\250\001\250\030\260\021\260!\200A\340\r\016\330\t\n\360\010\000\t\034\230?\250!\2501\330\r\024\220F\230\"\320\0349\270\021\330\014\020\220\t\230\021\230&\240\001\240\030\250\021\250!\200A\360\006\000\032\033\330\023\024\330\t\n\360\010\000\t\034\2301\330\010\024\220H\230A\230[\250\001\250\021\330\010\033\2307\240#\240Q\240a\330\010\016\210b\320\020+\2501\330\014\023\2209\230G\2401\240E\250\021\330\010\017\210q\200A\340\033+\2501\330\t\n\360\010\000\t\031\230\001\330\010\023\220:\230Q\230f\240A\240V\2501\330\010\020\220\006\220f\230A\200A\360\006\000\023\024\330\022(\250\001\330\t\n\360\010\000\t\024\220=\240\001\240\032\2501\330\010\017\210q\200A\340\025\026\330\024\033\2301\330\t\n\340\010\032\230!\330\010\037\230q\330\010\013\2105\220\002\220!\330\014\022\220*\230A\230Q\330\010\031\230\030\240\021\240&\250\003\2507\260!\2601\330\010\032\230(\240#\240Q\240a\330\010\031\230\021\230!\2303\230g\240T\250\026\250v\260S\270\001\330\010\017\210q\200A\330\014\r\360\010\000\t \320\0371\260\036\270q\330\010\016\210b\320\020.\250a\330\020\024\220I\230Q\230m\2501\250N\270!\2701\340\010\034\320\0342\260!\330\010\"\240!\330\010\"\240!\340\010\022\220(\230!\230>\250\021\250!\330\010\022\220(\230!\230>\250\021\250!\330\010\013\2101\330\014\026\220h\230a\230}\250A\250Q\330\014\020\220\005\220U\230!\2301\330\020\035\230Q\230e\2401\330\014\026\220h\230a\230~\250Q\250a\330\014\020\220\005\220U\230!\2301\330\020\033\2301\230G\2401\340\010\016\210b\320\020(\250\001\330\020\024\220A\330\020\036\230n\250A\330\020\036\230n\250A\340\010\032\230!\2307\240!\2408\2504\250u\260E\270\021\270!\330\010\032\230!\230<\240q\250\003\2504\250u\260E\270\021""\270!\330\010\013\2104\210z\230\030\240\025\240e\2501\340\010\031\230\021\230-\240q\250\003\2504\250u\260E\270\021\270!\330\010\031\230\021\230+\240Q\240e\2504\250u\260E\270\021\270!\330\010\020\220\005\220V\2304\230q\200A\360\006\000\027\030\330\027\030\330\023\024\330\t\n\360\014\000\t \230|\250?\270!\330\010#\2401\330\010\027\220x\230q\240\016\250a\250w\260a\260q\330\010\030\230\010\240\001\240\037\260\007\260q\270\001\330\010\024\320\024$\240A\240[\260\007\260q\270\001\340\010!\240\032\2503\250a\250q\330\010\016\210b\320\020(\250\001\330\014\023\2207\230'\240\021\330\014\r\210X\220Q\330\010\017\210q\200A\340\r\016\330\t\n\360\010\000\t\034\230?\250!\2501\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\320\0340\260\001\330\014\020\220\t\230\021\230&\240\001\240\030\250\021\250(\260!\2607\270!\330\010\017\210z\230\021\330\010\017\210q\200A\340\027\030\330\r\016\330\t\n\360\010\000\t\034\230?\250!\2501\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\320\0343\2601\330\014\020\220\t\230\030\240\021\240&\250\001\250\030\260\021\260(\270!\2707\300!\330\010\017\210z\230\021\330\010\017\210q\200A\340\r\016\330\t\n\360\010\000\t\034\230?\250!\2501\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\320\0343\2601\330\014\020\220\t\230\021\230&\240\001\240\030\250\021\250(\260!\2607\270!\330\010\017\210z\230\021\330\010\017\210q\200A\340\r\016\330\t\n\360\010\000\t\034\230?\250!\2501\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\320\034,\250A\330\014\020\220\t\230\021\230&\240\001\240\030\250\021\250(\260!\2607\270!\330\010\017\210z\230\021\330\010\017\210q\200A\340\027\030\330\r\016\330\t\n\360\010\000\t\034\230?\250!\2501\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\320\034/\250q\330\014\020\220\t\230\030\240\021\240&\250\001\250\030\260\021\260(\270!\2707\300!\330\010\017\210z\230\021\330\010\017\210q\200A\360\006\000\026\027\330\023\031\230\021\330\023\032\230!\330\0373\2601\330\t\n\360\010\000\t!\240\001\330\010\024\220H\230A""\230[\250\001\250\021\330\010&\240n\260A\260Q\330\010\036\230k\250\023\250A\250Q\330\r\024\220F\230\"\320\0346\260a\330\014\021\220\031\230,\240d\250)\2609\270A\270T\300\021\330\010\017\210q\200A\360\006\000\034\035\330\032\033\330\034\035\330\033\034\330\023\031\230\021\330\023\032\230!\330\0373\2601\330\t\n\360\010\000\t!\240\001\330\010\024\220H\230A\230[\250\001\250\021\330\010&\240n\260A\260Q\330\010\036\230k\250\023\250A\250Q\330\r\024\220F\230\"\320\034<\270A\330\014\027\220y\240\001\330\014\030\230\t\240\021\330\014\030\230\004\230I\240Y\250a\250t\2601\330\010\017\210q\200A\330 3\2601\360\010\000\t\031\230\005\230X\240Q\240a\330\010\n\210(\220!\2201\330\010\t\330\021\030\230\006\230b\240\014\250A\250R\250x\260r\270\021\340\014\016\210h\220a\200A\360\006\000\024\033\230!\330\0373\2601\330\t\n\360\010\000\t'\240n\260A\260Q\330\010\037\230y\250\003\2501\250A\330\010\016\210b\320\020 \240\001\330\014\020\220\t\230\031\240!\2407\250!\330\010\036\230a\230w\240a\330\010\017\210q\200A\330'3\2608\2701\360\010\000\t\"\240\032\2503\250a\250q\330\010\016\210b\320\020+\2501\250C\250s\260!\2608\2701\330\010\017\210q\200A\360\006\000\031\032\330\030\031\330\t\n\360\010\000\t\"\240\032\2503\250a\250q\330\010\016\210b\320\020(\250\001\330\014\021\220\031\230%\230y\250\001\250\030\260\021\330\010\017\210q\200A\340\025\026\330\033\034\330\026\027\330\t\n\360\010\000\t\"\240\032\2503\250a\250t\2601\260A\330\010\016\210b\320\020!\240\021\330\014\023\220=\240\001\330\014\020\220\t\230\021\230(\240!\330\010\017\210q\200A\340\025\026\330\033\034\330\026\027\330\t\n\360\010\000\t\"\240\032\2503\250a\250t\2601\260A\330\010\016\210b\320\020)\250\021\330\014\023\220=\240\001\330\014\020\220\t\230\021\230(\240!\330\010\017\210q\200A\340\024\025\330\t\n\360\010\000\t\033\320\0324\260A\330\010\025\220X\230Q\230l\250!\2508\2601\260A\330\010\016\210b\220\017\230q\240\010\320(=\270T\300\021\200A\340\021\022\330\021\022\330\t\n\360\010\000\t\036\230\\\250\021\330\010\t\320\t \240\001\240\031""\250)\2604\260q\330\r\024\220F\230\"\320\0344\260A\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\020\220\001\200A\340\021\022\330\021\022\330\023\032\230!\330\t\n\360\010\000\t\036\230\\\250\021\330\010\t\320\t \240\001\240\031\250)\2604\260q\330\010 \240\n\250#\250Q\250a\330\r\024\220F\230\"\320\0349\270\021\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\020\220\t\230\024\230Y\240a\240w\250a\330\010\017\210z\230\021\330\010\017\210q\200A\340\021\022\330\021\022\330\t\n\360\010\000\t\036\230\\\250\021\330\010\t\320\t \240\001\240\031\250)\2604\260q\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\320\0345\260Q\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\020\220\t\230\021\230'\240\021\330\010\017\210z\230\021\330\010\017\210q\320\004\034\230A\340\010\032\230!\330\010\013\2104\210u\220E\230\023\230A\330\014\022\220(\230$\230e\2401\330\010\032\230(\240#\240Q\240a\330\010\013\2108\220?\240!\2405\250\001\250\023\250G\2601\330\010\013\2105\220\014\230A\330\010\017\210q\200A\330\0365\260Y\270a\360\010\000\t\031\230\001\330\010\033\2301\330\010\031\230\026\230s\240!\2401\330\010\017\210|\2301\230F\240!\2401\330\010\016\210e\2204\220t\2301\230G\2408\2501\330\010\016\210b\320\020#\2401\240F\250&\260\001\260\024\260Q\330\010\017\210q\200A\330'6\260h\270a\360\010\000\t\"\240\032\2503\250a\250q\330\010\016\210b\320\020#\2401\240K\250v\260Q\260h\270a\330\010\017\210q\200A\330!6\260j\300\001\360\010\000\t\034\2307\240#\240Q\240a\330\010\016\210b\220\017\230q\330\020\026\220i\230v\240Y\250a\250u\260A\330\010\017\210q\320\004\034\230A\360\010\000\t\034\2307\240#\240Q\240a\330\r\024\220F\230\"\320\034/\250q\260\004\260I\270Q\270e\3001\330\010\017\210q\200A\340\016\017\330\021)\250\021\330\t\n\360\010\000\t\032\230\034\320%7\260q\330\010\017\210x\220q\230\006\230a\230w\240a\240q\330\010\013\2108\2203\220f\230J\240a""\330\010\013\210:\220Q\220i\230w\240j\260\001\260\031\270\"\270A\330\010\022\220(\230!\2309\240G\2501\250A\330\010\030\230\001\330\010\016\210b\220\014\230A\230T\240\031\250'\260\027\270\n\300!\3001\330\010\017\210q\320\000\024\220A\360\020\000\005\033\230!\330\004\023\2209\230I\240Q\330\004\n\210\"\320\014\034\230A\230Q\230f\240A\240W\250A\250W\260A\260Q\330\004\014\210F\220!\2208\2307\240'\250\021\200A\360\006\000\030\031\330\t\n\360\010\000\t&\240\\\260\023\260A\260Q\330\0100\260\001\330\010\031\230\032\2401\240O\2601\260A\330\010\t\330\014\022\220\"\320\024.\250a\250t\2601\260J\270a\340\014\026\220a\220q\230\007\230q\330\014\r\330\010\017\210q\200A\360\006\000\030\031\330\t\n\360\010\000\t&\240\\\260\023\260A\260Q\330\0103\2601\330\010\031\230\032\2401\240O\2601\260A\330\010\t\330\014\022\220\"\320\0241\260\021\260$\260a\260z\300\021\340\014\026\220a\220q\230\007\230q\330\014\r\330\010\017\210q\320\004\032\320\032,\250A\360\010\000\t\026\220]\240!\330\010\020\220\010\230\001\230\027\240\001\240\023\240A\240Q\330\010\033\2307\240#\240Q\240d\250!\2501\330\010\016\210b\220\016\230a\230t\2409\250C\250x\260q\270\005\270Q\330\010\017\210q\200A\360\006\000\030\031\330\t\n\360\010\000\t&\240\\\260\023\260A\260Q\330\010/\250q\330\010\031\230\032\2401\240O\2601\260A\330\010\t\330\014\022\220\"\320\024-\250Q\250d\260!\260:\270Q\340\014\026\220a\220q\230\007\230q\330\014\r\330\010\017\210q\200A\360\006\000\022:\270\021\330\023<\270A\330\022\031\230\021\330\t\n\360\010\000\t\033\230!\330\0101\260\021\330\0102\260!\330\010\037\230y\250\001\250\031\260+\270Q\330\010\016\210b\320\020%\240Q\240g\250V\2601\260H\270H\300A\330\010\034\230A\230^\2508\2601\330\010\017\210q\320\000\034\230A\360\n\000\005\025\220A\330\004\n\210\"\320\014\"\240!\2406\250\021\250!\330\004\013\2108\2201\220F\230!\200A\340\017\020\330\022\023\330\020\021\330\023\031\230\021\330\t\n\360\010\000\t\032\230\021\330\010!\240\021\330\010$\240A\330\010\"\240!\330\010\023\2208\2301\230I\240Q\240g\250Q\250a\330""\010\023\2208\2301\230J\240g\250Q\250a\330\010\023\2208\2301\230J\240g\250Q\250a\340\010!\240\032\2503\250a\250t\2601\260A\330\010\016\210b\320\020*\250!\330\014\023\2208\230;\240i\250q\330\014\020\220\t\230\021\230(\240!\330\010\017\210q\200A\340\020\021\330\031\032\330\020$\240A\330\017\024\220A\330\t\n\360\010\000\t\037\230k\250\021\330\010\013\2108\2201\220H\230M\250\021\330\r\024\220F\230\"\320\034,\250A\330\014\017\210x\220s\230)\2403\240a\330\014\r\330\014\017\210x\220s\230)\2403\240a\330\014\016\210i\220t\2301\200A\340\020\021\330\031\032\330\020$\240A\330\017\024\220A\330\t\n\360\010\000\t\037\230k\250\021\330\010\013\2108\2201\220H\230M\250\021\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\320\034-\250Q\330\014\017\210x\220s\230)\2403\240a\330\014\r\330\014\017\210x\220s\230)\2403\240a\330\014\016\210i\220t\2309\240A\240W\250A\330\010\017\210z\230\021\330\010\017\210q\200A\340\020\021\330\020\021\330\031\032\330\020$\240A\330\017\024\220A\330\t\n\360\010\000\t\037\230k\250\021\330\010\013\210<\220q\230\010\240\010\250\r\260Q\330\r\024\220F\230\"\320\0340\260\001\330\014\017\210x\220s\230)\2403\240a\330\014\017\210x\220s\230)\2403\240a\330\014\r\330\014\017\210x\220s\230)\2403\240a\330\014\016\210i\220t\2301\200A\340\020\021\330\020\021\330\031\032\330\020$\240A\330\017\024\220A\330\t\n\360\010\000\t\037\230k\250\021\330\010\013\210<\220q\230\010\240\010\250\r\260Q\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\320\0341\260\021\330\014\017\210x\220s\230)\2403\240a\330\014\017\210x\220s\230)\2403\240a\330\014\r\330\014\017\210x\220s\230)\2403\240a\330\014\016\210i\220t\2309\240A\240W\250A\330\010\017\210z\230\021\330\010\017\210q\200A\330\014\r\360\010\000\t\035\230A\330\010\034\230H\240H\250H\260A\330\010\016\210b\320\020'\240q\330\014\020\220\t\230\021\230$\230a\230t\2401\240D\250\001\250\024\250Q\250a\330\010\026\220a\330\010\033\2301\330\010\034\230A\330\010\037\230q\330\010\027\220x\230q\240\004\240M\260\021\260!\330\010\027\220x\230q""\240\004\320$6\260a\260q\330\010\027\220x\230q\240\004\320$7\260q\270\001\330\010\027\220x\230q\240\004\320$:\270!\2701\330\010\016\210b\320\020'\240q\330\014\020\220\t\230\024\230T\240\024\240T\250\023\250C\250s\260!\330\010 \240\001\240\021\240!\2403\240d\250%\250u\260A\260Q\330\010 \240\001\240\021\240!\2403\240d\250%\250u\260A\260Q\330\010 \240\001\240\021\240!\2403\240d\250%\250u\260A\260Q\330\010 \240\001\240\034\250Q\250a\250q\260\004\260D\270\005\270U\300!\3001\330\010\020\220\n\230+\240X\250Q\200A\340\021\022\330\021\022\330\017\024\220A\330\t\n\360\010\000\t\035\230K\240q\330\010\t\320\t\"\240!\2409\250I\260T\270\021\330\r\024\220F\230\"\320\0346\260a\330\014\r\210W\220A\220W\230A\230Y\240a\240q\330\014\016\210i\220t\2301\200A\340\021\022\330\021\022\330\017\024\220A\330\t\n\360\010\000\t\035\230K\240q\330\010\t\210\031\220!\2209\230I\240T\250\021\330\r\024\220F\230\"\230J\240a\330\014\r\210W\220A\220W\230A\230Y\240a\240q\330\014\016\210i\220t\2301\200A\340\021\022\330\021\022\330\017\024\220A\330\023\032\230!\330\t\n\360\010\000\t\035\230K\240q\330\010\t\320\t\"\240!\2409\250I\260T\270\021\330\010 \240\n\250#\250Q\250a\330\r\024\220F\230\"\320\034;\2701\330\014\r\210W\220A\220W\230A\230Y\240a\240q\330\014\016\210i\220t\2309\240D\250\t\260\021\260'\270\021\330\010\017\210q\200A\340\021\022\330\021\022\330\017\024\220A\330\023\032\230!\330\t\n\360\010\000\t\035\230K\240q\330\010\t\210\031\220!\2209\230I\240T\250\021\330\010 \240\n\250#\250Q\250a\330\r\024\220F\230\"\230O\2501\330\014\r\210W\220A\220W\230A\230Y\240a\240q\330\014\016\210i\220t\2309\240D\250\t\260\021\260'\270\021\330\010\017\210z\230\021\330\010\017\210q\200A\340\021\022\330\021\022\330\017\024\220A\330\t\n\360\010\000\t\035\230K\240q\330\010\t\320\t\"\240!\2409\250I\260T\270\021\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\320\0347\260q\330\014\r\210W\220A\220W\230A\230Y\240a\240q\330\014\016\210i\220t\2309\240A\240W\250A\330\010\017\210q\200A\340\021\022\330\021\022\330\017\024""\220A\330\t\n\360\010\000\t\035\230K\240q\330\010\t\210\031\220!\2209\230I\240T\250\021\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\230K\240q\330\014\r\210W\220A\220W\230A\230Y\240a\240q\330\014\016\210i\220t\2309\240A\240W\250A\330\010\017\210q\200A\340\021\022\330\021\022\330\017\024\220A\330\t\n\360\010\000\t\035\230K\240q\330\010\t\210\033\220A\220Y\230i\240t\2501\330\r\024\220F\230\"\230L\250\001\330\014\r\210W\220A\220W\230A\230Y\240a\240q\330\014\016\210i\220t\2301\200A\340\021\022\330\021\022\330\017\024\220A\330\023\032\230!\330\t\n\360\010\000\t\035\230K\240q\330\010\t\210\033\220A\220Y\230i\240t\2501\330\010 \240\n\250#\250Q\250a\330\r\024\220F\230\"\320\034-\250Q\330\014\r\210W\220A\220W\230A\230Y\240a\240q\330\014\016\210i\220t\2309\240D\250\t\260\021\260'\270\021\330\010\017\210z\230\021\330\010\017\210q\200A\340\021\022\330\021\022\330\017\024\220A\330\t\n\360\010\000\t\035\230K\240q\330\010\t\210\033\220A\220Y\230i\240t\2501\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\230M\250\021\330\014\r\210W\220A\220W\230A\230Y\240a\240q\330\014\016\210i\220t\2309\240A\240W\250A\330\010\017\210q\200A\340\021\022\330\021\022\330\017\024\220A\330\022\030\230\001\330\t\n\360\010\000\t\035\230K\240q\330\010\t\210\033\220A\220Y\230i\240v\250T\260\021\330\r\024\220F\230\"\230L\250\001\330\014\r\210W\220A\220W\230A\230Y\240a\240q\330\014\016\210i\220v\230T\240\021\200A\340\021\022\330\021\022\330\017\024\220A\330\022\030\230\001\330\023\032\230!\330\t\n\360\010\000\t\035\230K\240q\330\010\t\210\033\220A\220Y\230i\240v\250T\260\021\330\010 \240\n\250#\250Q\250a\330\r\024\220F\230\"\320\034-\250Q\330\014\r\210W\220A\220W\230A\230Y\240a\240q\330\014\016\210i\220v\230T\240\031\250$\250i\260q\270\007\270q\330\010\017\210q\200A\340\021\022\330\021\022\330\017\024\220A\330\022\030\230\001\330\t\n\360\010\000\t\035\230K\240q\330\010\t\210\033\220A\220Y\230i\240v\250T\260\021\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\230M\250\021\330\014""\r\210W\220A\220W\230A\230Y\240a\240q\330\014\016\210i\220v\230T\240\031\250!\2507\260!\330\010\017\210q\200A\340\021\022\330\021\022\330\017\024\220A\330\t\n\360\010\000\t\035\230K\240q\330\010\t\210\036\220q\230\t\240\031\250$\250a\330\r\024\220F\230\"\230O\2501\330\014\r\210W\220A\220W\230A\230Y\240a\240q\330\014\016\210i\220t\2301\200A\340\021\022\330\021\022\330\017\024\220A\330\023\032\230!\330\t\n\360\010\000\t\035\230K\240q\330\010\t\210\036\220q\230\t\240\031\250$\250a\330\010 \240\n\250#\250Q\250a\330\r\024\220F\230\"\320\0340\260\001\330\014\r\210W\220A\220W\230A\230Y\240a\240q\330\014\016\210i\220t\2309\240D\250\t\260\021\260'\270\021\330\010\017\210q\200A\340\021\022\330\021\022\330\017\024\220A\330\t\n\360\010\000\t\035\230K\240q\330\010\t\210\036\220q\230\t\240\031\250$\250a\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\320\034,\250A\330\014\r\210W\220A\220W\230A\230Y\240a\240q\330\014\016\210i\220t\2309\240A\240W\250A\330\010\017\210q\200A\340\020\021\330\031\032\330\020$\240A\330\t\n\360\010\000\t\037\230k\250\021\330\010\013\2108\2201\220H\230M\250\021\330\r\024\220F\230\"\230I\240Q\330\014\017\210x\220s\230)\2403\240a\330\014\r\330\014\017\210x\220s\230)\2403\240a\330\014\020\220\001\200A\340\020\021\330\031\032\330\020$\240A\330\t\n\360\010\000\t\037\230k\250\021\330\010\013\2108\2201\220H\230M\250\021\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\230J\240a\330\014\017\210x\220s\230)\2403\240a\330\014\r\330\014\017\210x\220s\230)\2403\240a\330\014\020\220\t\230\021\230'\240\021\330\010\017\210z\230\021\330\010\017\210q\200A\340\020\021\330\020\021\330\031\032\330\032 \240\001\330\017\024\220A\330\t\n\360\010\000\t\037\230k\250\021\330\010\013\210=\230\001\230\030\240\030\250\035\260a\330\r\024\220F\230\"\320\034,\250A\330\020\023\2208\2303\230h\240c\250\021\330\020\035\230Q\330\020\022\220)\2304\230q\200A\360\006\000\024\033\230!\330\030$\240A\330\t\n\360\010\000\t\030\220u\230C\230q\240\001\330\r\024\220F\230\"\320\0342\260!""\330\014\020\220\t\230\024\230Y\240a\240s\250!\330\010\036\230a\230s\240!\330\010\013\210:\220Q\330\010\017\210q\200A\330\034$\240A\360\010\000\t\n\330\014\023\220<\230x\240q\250\001\330\017\020\330\014\022\220*\230A\320\035/\250q\260\001\200A\340\027\030\330\024\032\230!\330\t\n\360\010\000\016\025\220F\230\"\320\0340\260\001\330\014\020\220\t\230\030\240\021\320\004\034\230A\360\010\000\016\025\220F\230\"\320\034.\250a\250t\2601\320\004\034\230A\360\010\000\t\031\230\001\330\r\024\220F\230\"\320\034/\250q\260\004\260I\270Q\270a\330\010\025\220Q\320\004\034\230A\360\010\000\016\025\220F\230\"\320\034/\250q\260\001\260\024\260Q\200A\340\017F\300a\340\t\n\340\010\013\2104\210v\220V\2301\340\010\013\2107\220!\2207\230!\330\014\020\220\007\220u\230E\240\021\330\020\024\220D\230\001\230\025\230e\2401\240A\340\014\020\220\005\220Y\230a\330\020\024\220D\230\001\230\025\230a\330\010\014\210E\220\031\230$\230f\240A\330\014\020\220\004\220A\220U\230!\200A\340\r\016\330\022\030\230\001\330\t\n\360\010\000\t\035\230K\240q\330\010\t\210\032\2201\220E\230\026\230t\2401\330\r\024\220F\230\"\230K\240q\330\014\r\210W\220A\220Y\230a\230q\330\014\022\220$\220a\200A\340\r\016\330\022\030\230\001\330\023\032\230!\330\t\n\360\010\000\t\035\230K\240q\330\010\t\210\032\2201\220E\230\026\230t\2401\330\010 \240\n\250#\250Q\250a\330\r\024\220F\230\"\320\034,\250A\330\014\r\210W\220A\220Y\230a\230q\330\014\022\220$\220i\230t\2409\250A\250W\260A\330\010\017\210z\230\021\330\010\017\210q\200A\340\r\016\330\022\030\230\001\330\t\n\360\010\000\t\035\230K\240q\330\010\t\210\032\2201\220E\230\026\230t\2401\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\230L\250\001\330\014\r\210W\220A\220Y\230a\230q\330\014\022\220$\220i\230q\240\007\240q\330\010\017\210z\230\021\330\010\017\210q\200A\340\021\022\330\021\022\330\022\030\230\001\330\t\n\360\010\000\t\035\230K\240q\330\010\t\210\033\220A\220S\230\t\240\031\250&\260\004\260A\330\r\024\220F\230\"\230L\250\001\330\014\r\210W\220A\220Y\230a\230q""\330\014\r\210W\220A\220Y\230a\230q\330\014\022\220$\220a\200A\340\021\022\330\021\022\330\022\030\230\001\330\t\n\360\016\000\t\035\230K\240q\330\010\t\210\033\220A\220S\230\t\240\031\250&\260\004\260A\330\r\024\220F\230\"\230M\250\021\330\014\r\210W\220A\320\025*\250!\2501\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\022\220$\220a\200A\340\021\022\330\021\022\330\022\030\230\001\330\023\032\230!\330\t\n\360\010\000\t\035\230K\240q\330\010\t\210\033\220A\220S\230\t\240\031\250&\260\004\260A\330\010 \240\n\250#\250Q\250a\330\r\024\220F\230\"\320\034-\250Q\330\014\r\210W\220A\220Y\230a\230q\330\014\r\210W\220A\220Y\230a\230q\330\014\022\220$\220i\230t\2409\250A\250W\260A\330\010\017\210z\230\021\330\010\017\210q\200A\340\021\022\330\021\022\330\022\030\230\001\330\023\032\230!\330\t\n\360\010\000\t\035\230K\240q\330\010\t\210\033\220A\220S\230\t\240\031\250&\260\004\260A\330\010 \240\n\250#\250Q\250a\330\r\024\220F\230\"\320\034.\250a\330\014\r\210W\220A\320\025*\250!\2501\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\022\220$\220i\230t\2409\250A\250W\260A\330\010\017\210z\230\021\330\010\017\210q\200A\340\021\022\330\021\022\330\022\030\230\001\330\t\n\360\010\000\t\035\230K\240q\330\010\t\210\033\220A\220S\230\t\240\031\250&\260\004\260A\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\230M\250\021\330\014\r\210W\220A\220Y\230a\230q\330\014\r\210W\220A\220Y\230a\230q\330\014\022\220$\220i\230q\240\007\240q\330\010\017\210z\230\021\330\010\017\210q\200A\340\021\022\330\021\022\330\022\030\230\001\330\t\n\360\010\000\t\035\230K\240q\330\010\t\210\033\220A\220S\230\t\240\031\250&\260\004\260A\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\230N\250!\330\014\r\210W\220A\320\025*\250!\2501\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\022\220$\220i\230q\240\007\240q\330\010\017\210z\230\021\330\010\017\210q\200A\340\021\022\330\021\022\330\t\n\360\010\000\t\035\230K\240q\330\010\t\320\t \240\001\240\023\240I\250Y\260d\270!\330""\r\024\220F\230\"\320\0344\260A\330\014\r\210W\220A\220Y\230a\230q\330\014\r\210W\220A\220Y\230a\230q\330\014\020\220\001\200A\340\021\022\330\021\022\330\t\n\360\010\000\t\035\230K\240q\330\010\t\320\t \240\001\240\023\240I\250Y\260d\270!\330\r\024\220F\230\"\320\0345\260Q\330\014\r\210W\220A\220Y\230a\230q\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\020\220\001\200A\340\021\022\330\021\022\330\023\032\230!\330\t\n\360\010\000\t\035\230K\240q\330\010\t\320\t \240\001\240\023\240I\250Y\260d\270!\330\010 \240\n\250#\250Q\250a\330\r\024\220F\230\"\320\0349\270\021\330\014\r\210W\220A\220Y\230a\230q\330\014\r\210W\220A\220Y\230a\230q\330\014\020\220\t\230\024\230Y\240a\240w\250a\330\010\017\210z\230\021\330\010\017\210q\200A\340\021\022\330\021\022\330\023\032\230!\330\t\n\360\010\000\t\035\230K\240q\330\010\t\320\t \240\001\240\023\240I\250Y\260d\270!\330\010 \240\n\250#\250Q\250a\330\r\024\220F\230\"\320\034:\270!\330\014\r\210W\220A\220Y\230a\230q\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\020\220\t\230\024\230Y\240a\240w\250a\330\010\017\210z\230\021\330\010\017\210q\200A\340\021\022\330\021\022\330\t\n\360\010\000\t\035\230K\240q\330\010\t\320\t \240\001\240\023\240I\250Y\260d\270!\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\320\0345\260Q\330\014\r\210W\220A\220Y\230a\230q\330\014\r\210W\220A\220Y\230a\230q\330\014\020\220\t\230\021\230'\240\021\330\010\017\210z\230\021\330\010\017\210q\200A\340\021\022\330\021\022\330\t\n\360\010\000\t\035\230K\240q\330\010\t\320\t \240\001\240\023\240I\250Y\260d\270!\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\320\0346\260a\330\014\r\210W\220A\220Y\230a\230q\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\020\220\t\230\021\230'\240\021\330\010\017\210z\230\021\330\010\017\210q\200A\340\021\022\330\021\022\330\022\030\230\001\330\t\n\360\010\000\t\035\230K\240q\330\010\t\210\034\220Q\220c\230\031\240)\2506\260\024\260Q\330\r\024\220F\230\"\230M\250\021\330\014\r\210W\220A\220Y""\230a\230q\330\014\r\210W\220A\220Y\230a\230q\330\014\022\220$\220a\200A\340\021\022\330\021\022\330\022\030\230\001\330\t\n\360\016\000\t\035\230K\240q\330\010\t\210\034\220Q\220c\230\031\240)\2506\260\024\260Q\330\r\024\220F\230\"\230N\250!\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\r\210W\220A\320\025*\250!\2501\330\014\022\220$\220a\200A\340\021\022\330\021\022\330\022\030\230\001\330\023\032\230!\330\t\n\360\010\000\t\035\230K\240q\330\010\t\210\034\220Q\220c\230\031\240)\2506\260\024\260Q\330\010 \240\n\250#\250Q\250a\330\r\024\220F\230\"\320\034.\250a\330\014\r\210W\220A\220Y\230a\230q\330\014\r\210W\220A\220Y\230a\230q\330\014\022\220$\220i\230t\2409\250A\250W\260A\330\010\017\210z\230\021\330\010\017\210q\200A\340\021\022\330\021\022\330\022\030\230\001\330\023\032\230!\330\t\n\360\010\000\t\035\230K\240q\330\010\t\210\034\220Q\220c\230\031\240)\2506\260\024\260Q\330\010 \240\n\250#\250Q\250a\330\r\024\220F\230\"\320\034/\250q\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\r\210W\220A\320\025*\250!\2501\330\014\022\220$\220i\230t\2409\250A\250W\260A\330\010\017\210z\230\021\330\010\017\210q\200A\340\021\022\330\021\022\330\022\030\230\001\330\t\n\360\010\000\t\035\230K\240q\330\010\t\210\034\220Q\220c\230\031\240)\2506\260\024\260Q\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\230N\250!\330\014\r\210W\220A\220Y\230a\230q\330\014\r\210W\220A\220Y\230a\230q\330\014\022\220$\220i\230q\240\007\240q\330\010\017\210z\230\021\330\010\017\210q\200A\340\021\022\330\021\022\330\022\030\230\001\330\t\n\360\010\000\t\035\230K\240q\330\010\t\210\034\220Q\220c\230\031\240)\2506\260\024\260Q\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\230O\2501\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\r\210W\220A\320\025*\250!\2501\330\014\022\220$\220i\230q\240\007\240q\330\010\017\210z\230\021\330\010\017\210q\200A\340\021\022\330\021\022\330\t\n\360\014\000\t\035\230K\240q\330\010\t\210\035\220a\220s\230)\2409\250D\260\001\330\r\024""\220F\230\"\230N\250!\330\014\r\210W\220A\220Y\230a\230q\330\014\r\210W\220A\220Y\230a\230q\330\014\020\220\001\200A\340\021\022\330\021\022\330\t\n\360\016\000\t\035\230K\240q\330\010\t\210\035\220a\220s\230)\2409\250D\260\001\330\r\024\220F\230\"\230O\2501\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\020\220\001\200A\340\021\022\330\021\022\330\023\032\230!\330\t\n\360\010\000\t\035\230K\240q\330\010\t\210\035\220a\220s\230)\2409\250D\260\001\330\010 \240\n\250#\250Q\250a\330\r\024\220F\230\"\320\0340\260\001\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\020\220\t\230\024\230Y\240a\240w\250a\330\010\017\210z\230\021\330\010\017\210q\200A\340\021\022\330\021\022\330\023\032\230!\330\t\n\360\010\000\t\035\230K\240q\330\010\t\210\035\220a\220s\230)\2409\250D\260\001\330\010 \240\n\250#\250Q\250a\330\r\024\220F\230\"\320\034/\250q\330\014\r\210W\220A\220Y\230a\230q\330\014\r\210W\220A\220Y\230a\230q\330\014\020\220\t\230\024\230Y\240a\240w\250a\330\010\017\210z\230\021\330\010\017\210q\200A\340\021\022\330\021\022\330\t\n\360\010\000\t\035\230K\240q\330\010\t\210\035\220a\220s\230)\2409\250D\260\001\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\320\034,\250A\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\020\220\t\230\021\230'\240\021\330\010\017\210z\230\021\330\010\017\210q\200A\340\021\022\330\021\022\330\t\n\360\010\000\t\035\230K\240q\330\010\t\210\035\220a\220s\230)\2409\250D\260\001\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\230O\2501\330\014\r\210W\220A\220Y\230a\230q\330\014\r\210W\220A\220Y\230a\230q\330\014\020\220\t\230\021\230'\240\021\330\010\017\210z\230\021\330\010\017\210q\200A\340\021\022\330\021\022\330\t\n\360\010\000\t\035\230K\240q\330\010\t\320\t\037\230q\240\003\2409\250I\260T\270\021\330\r\024\220F\230\"\320\0343\2601\330\014\r\210W\220A\220Y\230a\230q\330\014""\r\210W\220A\220Y\230a\230q\330\014\020\220\001\200A\340\021\022\330\021\022\330\t\n\360\010\000\t\035\230K\240q\330\010\t\320\t\037\230q\240\003\2409\250I\260T\270\021\330\r\024\220F\230\"\320\0344\260A\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\020\220\001\200A\340\021\022\330\021\022\330\t\n\360\016\000\t\035\230K\240q\330\010\t\210\036\220q\230\003\2309\240I\250T\260\021\330\r\024\220F\230\"\320\034,\250A\330\014\r\210W\220A\320\025*\250!\2501\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\020\220\001\200A\340\021\022\330\021\022\330\t\n\360\016\000\t\035\230K\240q\330\010\t\210\036\220q\230\003\2309\240I\250T\260\021\330\r\024\220F\230\"\230O\2501\330\014\r\210W\220A\220Y\230a\230q\330\014\r\210W\220A\220Y\230a\230q\330\014\020\220\001\200A\340\021\022\330\021\022\330\023\032\230!\330\t\n\360\010\000\t\035\230K\240q\330\010\t\210\036\220q\230\003\2309\240I\250T\260\021\330\010 \240\n\250#\250Q\250a\330\r\024\220F\230\"\320\0340\260\001\330\014\r\210W\220A\220Y\230a\230q\330\014\r\210W\220A\220Y\230a\230q\330\014\020\220\t\230\024\230Y\240a\240w\250a\330\010\017\210z\230\021\330\010\017\210q\200A\340\021\022\330\021\022\330\023\032\230!\330\t\n\360\010\000\t\035\230K\240q\330\010\t\210\036\220q\230\003\2309\240I\250T\260\021\330\010 \240\n\250#\250Q\250a\330\r\024\220F\230\"\320\0341\260\021\330\014\r\210W\220A\320\025*\250!\2501\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\020\220\t\230\024\230Y\240a\240w\250a\330\010\017\210q\200A\340\021\022\330\021\022\330\023\032\230!\330\t\n\360\010\000\t\035\230K\240q\330\010\t\320\t\037\230q\240\003\2409\250I\260T\270\021\330\010 \240\n\250#\250Q\250a\330\r\024\220F\230\"\320\0348\270\001\330\014\r\210W\220A\220Y\230a\230q\330\014\r\210W\220A\220Y\230a\230q\330\014\020\220\t\230\024\230Y\240a\240w\250a\330\010\017\210z\230\021\330\010\017\210q\200A\340\021\022\330\021\022\330\023\032\230!\330\t\n\360\010\000\t\035\230K\240q\330\010\t\320\t\037\230q""\240\003\2409\250I\260T\270\021\330\010 \240\n\250#\250Q\250a\330\r\024\220F\230\"\320\0349\270\021\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\020\220\t\230\024\230Y\240a\240w\250a\330\010\017\210z\230\021\330\010\017\210q\200A\340\021\022\330\021\022\330\t\n\360\010\000\t\035\230K\240q\330\010\t\320\t\037\230q\240\003\2409\250I\260T\270\021\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\320\0344\260A\330\014\r\210W\220A\220Y\230a\230q\330\014\r\210W\220A\220Y\230a\230q\330\014\020\220\t\230\021\230'\240\021\330\010\017\210z\230\021\330\010\017\210q\200A\340\021\022\330\021\022\330\t\n\360\010\000\t\035\230K\240q\330\010\t\320\t\037\230q\240\003\2409\250I\260T\270\021\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\320\0345\260Q\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\020\220\t\230\021\230'\240\021\330\010\017\210z\230\021\330\010\017\210q\200A\340\021\022\330\021\022\330\t\n\360\010\000\t\035\230K\240q\330\010\t\210\036\220q\230\003\2309\240I\250T\260\021\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\320\034,\250A\330\014\r\210W\220A\220Y\230a\230q\330\014\r\210W\220A\220Y\230a\230q\330\014\020\220\t\230\021\230'\240\021\330\010\017\210z\230\021\330\010\017\210q\200A\340\021\022\330\021\022\330\t\n\360\010\000\t\035\230K\240q\330\010\t\210\036\220q\230\003\2309\240I\250T\260\021\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\320\034-\250Q\330\014\r\210W\220A\320\025*\250!\2501\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\020\220\t\230\021\230'\240\021\330\010\017\210q\320\000\022\220!\360\010\000\005\r\210A\330\004\n\210\"\210L\230\001\320\004\034\230A\360\010\000\t\035\230L\250\001\330\010\016\210b\320\020%\240Q\240d\250)\2601\260D\270\001\270\021\330\010\020\220\004\220A\200A\340\017\020\330\020\021\330\030\031\330\023\024\330\t\n\360\010\000\t\035\230L\250\001\330\010\016\210b\320\020%\240Q\240d\250)""\2601\260D\270\001\270\021\340\010\033\230?\250!\330\010\036\230k\250\021\330\010\027\220z\240\021\240(\250!\2507\260!\2601\330\010\027\220z\240\021\240(\250!\2507\260!\2601\330\010 \240\006\240c\250\021\330\010 \240\001\340\010\016\210b\220\n\230!\330\014\023\2208\2304\230q\330\014\023\2208\2301\230A\330\014\020\220\001\330\010\017\210q\200A\340\017\020\330\030\031\330\020\021\330\023\024\330\t\n\360\010\000\t\035\230L\250\001\330\010\016\210b\320\020%\240Q\240d\250)\2601\260D\270\001\270\021\340\010\033\230?\250!\330\010\036\230k\250\021\330\010\027\220z\240\021\240(\250!\2507\260!\2601\330\010\027\220z\240\021\240(\250!\2507\260!\2601\330\010 \240\001\330\010 \240\006\240c\250\021\340\010\016\210b\220\014\230A\330\014\023\2208\2301\230A\330\014\023\2208\2304\230q\330\014\020\220\001\330\010\017\210q\320\000\030\230\001\360\010\000\005\025\220A\330\004\n\210\"\210O\2301\230A\230Q\330\004\021\220\021\200A\360\006\000\022;\270!\330\023=\270Q\330\022\031\230\021\330\t\n\360\010\000\t\033\230!\330\0102\260!\330\0103\2601\330\010\037\230y\250\001\250\031\260+\270Q\330\010\016\210b\320\020&\240a\240w\250f\260A\260X\270X\300Q\330\010\034\230A\230_\250H\260A\330\010\017\210q\200A\330&;\270:\300Q\360\010\000\t\034\2307\240#\240Q\240a\330\010\016\210b\320\020$\240A\330\020\026\220i\230v\240Y\250a\250u\260A\330\010\017\210q\200A\340\016\017\330\021)\250\021\330\026\035\230Q\330\t\n\360\010\000\t\032\230\034\320%7\260q\330\010\017\210x\220q\230\006\230a\230w\240a\240q\330\010\013\2108\2203\220f\230J\240a\330\010\013\210:\220Q\220i\230w\240j\260\001\260\031\270\"\270A\330\010\022\220(\230!\2309\240G\2501\250A\340\010\035\230Z\240s\250!\2501\330\r\024\220F\230\"\230O\2501\330\014\020\220\t\230\027\240\007\240z\260\031\270!\2704\270q\330\010\036\230a\230t\2401\330\010\017\210q\200A\340\020\021\330\017-\250Q\330\t\n\360\010\000\t\035\230A\230T\240\021\330\010\013\2106\220\023\220A\330\014\023\320\023*\250!\2505\260\005\260Q\260a\340\014\023\320\023*\250!\2505\260\005\260Q\260h""\270a\200A\340\021\022\330\016%\240Q\330\026\034\230A\330\023\032\230!\330\022\030\230\001\330\022%\240Q\330\t\n\360\010\000\t\032\230\021\330\010\033\2301\330\010\036\230a\340\010\030\230\001\330\010\016\210b\220\r\230Q\230d\240)\2501\250A\340\010\013\2105\220\003\2201\330\014\026\220k\240\021\240)\2501\250A\330\014\026\220l\240!\2406\250\021\250!\330\010\013\2109\220G\2301\330\014\026\220h\230a\230z\250\021\250!\340\010\036\230k\250\023\250A\250Q\330\r\024\220F\230\"\230N\250!\330\014\021\220\026\220z\240\024\240Y\250a\330\014\020\220\t\230\021\230$\230i\240q\340\010\013\2109\220G\2301\330\014\024\220F\230!\2309\240A\240S\250\004\250E\260\025\260a\260q\340\010\036\230a\230t\2401\330\010\017\210q\320\004*\250!\360\010\000\t\035\230A\330\010\035\230Q\330\010\034\230A\330\010\016\210b\320\020.\250a\330\020\024\220I\230Q\230j\250\001\250\033\260A\260Q\330\010\020\220\n\320\032+\2501\200A\340\022\023\330\027\035\230Q\330\027\035\230Q\330\t\n\360\010\000\016\025\220F\230\"\230L\250\001\330\014\027\220v\230[\250\004\250A\200A\330\032%\240Q\360\010\000\t\014\210:\220Q\220e\2301\330\014\023\320\023$\240A\320%8\270\001\270\021\330\010\013\210:\220Q\220e\2301\330\014\023\320\023$\240A\320%8\270\001\270\021\330\010\017\210z\230\021\320\032-\250Q\250a\200A\340\021\022\330\014-\250Q\330\t\n\340\010\035\230T\240\021\330\010\017\210|\2301\230I\240T\250\021\200A\340\021\022\330\014-\250Q\330\022\030\230\001\330\t\n\340\010\035\230T\240\021\330\010\017\210|\2301\230I\240T\250\026\250q\200A\340\021\022\330\014-\250Q\330\t\n\340\010\035\230T\240\021\330\010\017\210\177\230a\230y\250\004\250A\200A\340\021\022\330\014-\250Q\330\t\n\340\010\035\230T\240\021\330\010\017\210z\230\021\230)\2404\240q\200A\340\021\022\330\021\022\330\026\027\330\021(\250\001\330\023\032\230!\330\026\035\230Q\330\t\n\360\010\000\t\027\220h\230a\330\010\034\320\034-\250Q\330\010\032\320\032+\2501\330\010\022\220(\230!\2309\240A\240T\250\021\250!\330\010\022\220(\230!\230:\240T\250\021\250!\330\010\014\210E""\220\025\220a\220u\230F\240'\250\021\250!\330\010\027\220x\230q\240\016\250d\260!\2601\330\010\022\220/\240\021\240)\2504\250q\260\001\340\010\"\240/\260\023\260A\260Q\330\r\024\220F\230\"\320\0341\260\021\330\014\020\220\001\330\014\020\220\t\230\031\240'\250\021\330\014\020\220\t\230\031\240!\2404\240q\330\010\036\230a\230t\2401\330\010\017\210q\200A\330\027%\240Q\360\n\000\t \230q\330\010\014\210E\220\025\220a\220w\230h\240a\240u\250C\250q\260\001\330\010\016\210b\220\016\230a\230z\250\021\330\010\017\210\177\230a\230q\200A\340\r\035\230Q\330\024\032\230!\330\021\027\220q\330\t\n\340\010\035\230T\240\021\330\010\037\230y\250\003\2501\250A\330\010\017\210z\230\033\240A\240U\250(\260%\260v\270Q\270g\300Q\330\010\017\210q\200A\330%-\250Q\360\010\000\t \230q\330\010\016\210b\320\020#\2401\240A\240Q\330\010\034\230A\230^\2501\330\010\017\210q\200A\330%-\250Q\360\010\000\t \230q\330\010\016\210b\320\020$\240A\240Q\240a\330\010\034\230A\320\0350\260\001\330\010\017\210q\200A\330%-\250Q\360\010\000\t \230q\330\010\016\210b\320\020$\240A\240Q\240a\330\010\034\230A\230_\250A\330\010\017\210q\200A\340\017\020\330\017\020\330\026\035\230Q\330\t\n\360\010\000\t\033\230-\240q\330\010\020\220\010\230\001\230\027\240\001\240\030\250\021\250!\330\010\032\230-\240q\330\010\020\220\010\230\001\230\027\240\001\240\030\250\021\250!\340\010\013\2106\220\021\220\"\220B\220b\230\004\230F\240!\2406\250\021\250\"\250B\250a\330\014\026\220a\330\014\026\220a\340\010\036\230k\250\023\250A\250Q\330\r\024\220F\230\"\320\034,\250A\330\014\020\220\t\230\030\240\030\250\030\260\031\270!\2704\270q\330\010\036\230a\230t\2401\330\010\017\210q\200A\340\r\035\230Q\330\024\032\230!\330\021\027\220q\330\027'\240q\330\t\n\340\010\035\230T\240\021\330\010#\240:\250Q\250a\330\010\017\210z\230\021\230%\230x\240u\250F\260!\200A\360\006\000\023\024\330\026\035\230Q\330\t\n\360\010\000\t\030\220t\2303\230a\230q\330\010)\250\021\330\010)\250\021\330\010\023\2201\220F\230*\240A\240V\2501\250A\330\010\t\330\014""\r\330\020\026\220b\230\017\240q\250\006\250i\260q\270\004\270A\330\023\024\330\020\026\220b\230\r\240Q\240f\250I\260Q\260d\270!\340\014\027\220q\230\001\330\014\r\330\010\017\210q\200A\330\032%\240Q\360\010\000\t\020\210z\230\021\230.\250\001\250\021\200A\330\032%\240Q\360\010\000\t\020\210z\230\021\320\0320\260\001\260\021\200A\330\032%\240Q\360\010\000\t\020\210z\230\021\320\032*\250!\2501\200A\330\032%\240Q\360\010\000\t\020\210z\230\021\320\032+\2501\250A\200A\330\032%\240Q\360\010\000\t\020\210z\230\021\230/\250\021\250!\200A\330\032%\240Q\360\010\000\t\020\210z\230\021\320\032-\250Q\250a\320\004\034\230A\330\010\017\210~\230Q\230a\200A\340\023\032\230!\330\t\n\360\010\000\t!\240\n\250#\250Q\250a\330\r\024\220F\230\"\320\034,\250A\330\020\024\220I\230T\240\021\330\020\021\220\027\230\001\330\010\017\210q\200A\330 (\250\001\360\010\000\t\014\210:\220Q\220e\2301\330\014\023\320\023$\240A\240^\260?\300!\330\010\013\210:\220Q\220e\2301\330\014\023\320\023$\240A\240^\260?\300!\330\010\017\210z\230\021\230.\250\017\260q\200A\360\006\000\023\024\330\022(\250\001\330\t\n\360\010\000\t\020\210~\230Q\230j\250\001\200A\340\021\022\330\022\030\230\001\330\t\n\340\010\035\230T\240\021\330\010\017\210|\2301\230I\240V\2501\320\004\034\230A\330\010\020\220\r\230T\240\021\240)\2504\250}\270A\200A\340\r\016\330\022\030\230\001\330\t\n\340\010\035\230T\240\021\330\010\017\210{\230!\2305\240\006\240a\200A\340\021\022\330\022\030\230\001\330\t\n\340\010\035\230T\240\021\330\010\017\210}\230A\230Y\240f\250A\200A\340\021\022\330\t\n\340\010\035\230T\240\021\330\010\017\210~\230Q\230i\240q\200A\340\021\022\330\t\n\340\010\035\230T\240\021\330\010\017\210\177\230a\230y\250\001\200A\360\006\000\023\024\330\022(\250\001\330\t\n\360\010\000\t\031\230\001\330\010\030\230\005\230X\240Q\240a\330\010\n\210(\220!\220:\230Q\330\010\t\330\021\030\230\006\230b\240\013\2501\330\020\022\220(\230\"\230K\240q\250\006\250b\260\001\340\014\016\210h\220a\220q\330\010\025\220Q\200A\360\006\000\023\024""\330\022(\250\001\330\t\n\360\010\000\t\031\230\005\230X\240Q\240a\330\010\n\210(\220!\220:\230Q\330\010\t\330\021\030\230\006\230b\240\013\2501\330\020\022\220(\230\"\230K\240r\250\021\340\014\016\210h\220a\220q\330\010\017\210q\200A\360\006\000\023\024\330\022(\250\001\330\t\n\360\010\000\t\031\230\001\330\010\030\230\005\230X\240Q\240a\330\010\n\210(\220!\220:\230Q\330\010\t\330\021\030\230\006\230b\320 :\270!\330\020\022\220(\230\"\230K\240q\250\006\250b\260\001\340\014\016\210h\220a\220q\330\010\025\220Q\200A\330(=\270Z\300q\360\010\000\t\034\2307\240#\240Q\240a\330\010\016\210b\320\020&\240a\330\020\026\220i\230v\240Y\250a\250u\260A\330\010\017\210q\320\004\"\240*\250A\360\010\000\t\031\230\001\330\010\r\210Z\220q\230\006\230l\250&\260\001\330\r\027\220q\230\006\230l\250&\260\001\330\010\031\230\026\230s\240!\2401\330\r\024\220F\230\"\230O\2501\330\014\020\220\t\230\025\230i\240q\250\004\250A\330\010\036\230a\230t\2401\330\010\017\210q\200A\340\021\022\330\025\026\330\027\036\230a\330\t\n\340\010\032\320\032*\250!\2501\330\010\037\230q\330\010\013\2105\220\002\220!\330\014\022\220*\230A\230Q\330\r\022\220\"\220B\220d\230%\230s\240!\330\014\022\220*\230A\230Q\330\010\032\230(\240#\240Q\240a\330\010\031\230\021\230!\2303\230g\240X\250Q\330\032 \240\006\240j\260\001\330\010\017\210q\200A\340\r\016\330\027\036\230a\330\t\n\340\010\031\230\021\330\010\013\2104\210z\230\031\240!\330\010\032\230(\240#\240Q\240a\330\010\013\2108\220?\240!\2405\250\001\250\023\250G\2601\330\010\013\2105\220\014\230A\330\010\017\210q\200A\340\021\022\330\017\020\330\020\021\330\030\031\330\t\n\360\014\000\t\037\230a\330\010\022\220(\230!\2309\240A\240Q\330\010\034\230L\250\001\330\010\016\210b\320\020%\240Q\240d\250)\2601\260D\270\001\270\021\340\010\033\230?\250!\330\010\036\230k\250\021\330\010\027\220z\240\021\240(\250!\2507\260!\2601\330\010\027\220z\240\021\240(\250!\2507\260!\2601\330\010 \240\006\240c\250\021\330\010 \240\001\340\010\016\210b\320\020#\2401\330\014\r\330\014\023""\2208\2304\230q\330\014\023\2208\2301\230A\330\010\017\210q\200A\340\021\022\330\017\020\330\030\031\330\020\021\330\t\n\360\014\000\t\037\230a\330\010\022\220(\230!\2309\240A\240Q\330\010\034\230L\250\001\330\010\016\210b\320\020%\240Q\240d\250)\2601\260D\270\001\270\021\340\010\033\230?\250!\330\010\036\230k\250\021\330\010\027\220z\240\021\240(\250!\2507\260!\2601\330\010\027\220z\240\021\240(\250!\2507\260!\2601\330\010 \240\001\330\010 \240\006\240c\250\021\340\010\016\210b\320\020%\240Q\330\014\r\330\014\023\2208\2301\230A\330\014\023\2208\2304\230q\330\010\017\210q\200A\360\006\000\022?\270a\330\023A\300\021\330\022\031\230\021\330\t\n\360\010\000\t\033\230!\330\0102\260!\330\0103\2601\330\010\037\230y\250\001\250\031\260+\270Q\330\010\016\210b\320\020&\240a\240w\250f\260A\260X\270X\300Q\330\010\034\230A\320\0350\260\010\270\001\330\010\017\210q\200A\340\017&\240a\330\025$\240A\330\t\n\360\010\000\t!\240\001\330\010 \240\001\330\010\025\220^\320#4\260A\340\010\027\220q\330\010\013\2106\220\027\230\001\330\014\026\220h\230a\230w\240a\240s\250!\2501\340\014\022\220\"\220N\240!\2404\240y\260\001\260\021\330\014\026\220h\230a\230s\240!\2401\330\014\020\220\005\220U\230!\2304\230w\240a\240u\250A\330\010\027\220x\230q\240\003\2401\240A\340\010\021\220\024\220Q\330\010\013\2106\220\027\230\001\330\014\025\220U\230!\340\014\022\220\"\220N\240!\320#3\2601\260A\330\010\t\330\014\022\220\"\320\024-\250Q\330\020\030\230\003\2309\240H\250A\340\014\017\210v\220S\230\001\330\020\026\220b\230\016\240a\240q\250\001\340\010\035\230Q\230g\240Q\240c\250\024\250U\260%\260q\270\001\330\010\017\210q\200A\340\021\022\330\026\027\330\027.\250a\330\025,\250A\330\023\032\230!\330\026\035\230Q\330\t\n\360\010\000\t\036\230^\2501\330\010\035\230^\2501\330\010\"\240!\330\010\"\240!\330\010\013\2108\2207\230!\330\014\026\220h\230a\230y\250\001\250\032\2601\260A\330\010\030\230\017\240q\330\014\033\230:\240Q\240a\330\010\013\210=\230\007\230q\330\014\033\2308\2401\240N\260!\260;\270a\270q""\330\010\026\220o\240Q\330\014\031\230\033\240A\240Q\340\010\"\240/\260\023\260A\260Q\330\r\024\220F\230\"\320\034:\270!\330\014\020\220\001\330\014\027\220y\240\001\330\014\027\220y\240\001\330\014\020\220\t\230\031\240!\2404\240q\330\010\036\230a\230t\2401\330\010\017\210q\200A\360\006\000\021\022\330\030\036\230a\330\023\032\230!\330\030$\240A\330\t\n\360\010\000\t\033\230!\330\010\035\230Q\330\010\013\2109\220A\220Q\330\014\025\220Q\330\010\013\2107\220'\230\021\330\014\025\220Z\230q\240\010\250\001\250\026\250q\260\001\330\010\027\220u\230C\230q\240\001\330\r\024\220F\230\"\320\034,\250A\330\014\022\220&\230\001\330\014\020\220\t\230\024\230Y\240a\240s\250!\330\010\036\230a\230s\240!\330\010\013\210:\220Q\330\010\017\210q\200A\360\006\000\024\025\330\030\036\230a\330\023\032\230!\330\030$\240A\330\t\n\360\010\000\t\033\230!\330\010\027\220u\230C\230q\240\001\330\r\024\220F\230\"\320\0345\260Q\330\014\022\220+\230T\240\021\330\014\020\220\t\230\021\230&\240\001\240\023\240A\330\010\036\230a\230s\240!\330\010\017\210q\200A\360\006\000\024\025\330\030\036\230a\330\023\032\230!\330\030$\240A\330\t\n\360\010\000\t\033\230!\330\010\027\220u\230C\230q\240\001\330\r\024\220F\230\"\320\034.\250a\330\014\022\220+\230T\240\021\330\014\020\220\t\230\021\230&\240\001\240\023\240A\330\010\036\230a\230s\240!\330\010\017\210q\200A\330\033\034\360\010\000\t\037\230a\330\r\024\220F\230\"\320\034/\250q\260\001\260\024\260Q\330\010\036\230a\230t\2401\330\010\017\210q\200A\360\006\000\023\024\330\022(\250\001\330\t\n\360\010\000\t\037\230a\330\010\030\230\005\230X\240Q\240a\330\010\n\210(\220!\220:\230Q\330\010\n\210,\220a\330\010\t\330\021\030\230\006\230b\320 ;\2701\330\020\022\220(\230\"\230K\240q\250\002\250+\260R\260z\300\022\3001\330\014\026\220b\230\014\240A\340\014\016\210h\220a\220q\330\010\017\210q\200A\360\006\000\023\024\330\022(\250\001\330\t\n\360\010\000\t\037\230a\330\010\030\230\005\230X\240Q\240a\330\010\n\210(\220!\220:\230Q\330\010\n\210,\220a\330\010\t\330\021""\030\230\006\230b\240\014\250A\330\020\022\220(\230\"\230K\240q\250\002\250+\260R\260z\300\022\3001\330\014\026\220b\230\014\240A\340\014\016\210h\220a\220q\330\010\017\210q\200A\340\021\022\330\025\026\330\t\n\360\020\000\t\037\230a\330\010\036\230a\330\010\022\220(\230!\2309\240A\240Q\330\010\016\210b\320\020(\250\001\330\014\026\220g\230T\240\031\250!\2501\330\010\017\210q\200A\340\025\026\330\023\024\330\t\n\360\014\000\t\037\230a\330\010\016\210b\220\017\230q\330\014\023\2204\220q\330\014\020\220\t\230\021\230!\330\010\017\210q\320\004\034\230A\330\010\017\210\177\230a\230q\320\000\030\230\001\360\010\000\005\025\220A\330\004\n\210\"\320\014\036\230a\230q\240\001\330\004\021\220\021\200A\340\033\034\330\034\035\330\t\n\360\010\000\t\017\210b\320\020 \240\001\240\037\3200@\300\004\300A\200A\340\033\034\330\025\026\330\t\n\360\016\000\t#\240(\250!\330\010\016\210b\320\020)\250\021\250!\2504\250y\270\007\270q\320\004\032\230!\360\010\000\t!\240\004\240A\330\010\016\210b\320\020$\240A\240Q\240d\250!\330\010\013\2108\2201\220G\2304\230z\250\021\200A\340\027\030\330\t\n\360\010\000\t\031\230\001\330\010\016\210b\220\014\230A\230T\240\031\250+\260Q\260a\330\010\025\220Q\320\004\034\230A\360\010\000\t\033\230!\330\010\016\210b\320\020%\240Q\240a\240t\2509\260A\260Q\330\010\017\210q\200A\340\027\030\330\t\n\360\010\000\t\017\210b\220\n\230!\230;\240d\250!\200A\330\032\"\240!\360\010\000\t\037\230k\250\023\250A\250Q\330\r\024\220F\230\"\230M\250\021\250$\250a\250t\2601\330\010\036\230a\230t\2401\330\010\017\210q\200A\340\020\021\330\021\022\330\020\021\330\031\032\330\032 \240\001\330\t\n\360\010\000\t\037\230k\250\021\330\010\013\210=\230\001\230\030\240\031\250(\260-\270q\330\r\024\220F\230\"\320\0340\260\001\330\020\023\2208\2303\230h\240c\250\030\260\023\260A\330\020\035\230]\250$\250a\200A\340\r\016\330\030\031\330\022\023\330\021\027\220q\330\023\032\230!\330\t\n\360\010\000\t \320\0370\260\001\260\025\260f\270A\330\010 \240\n\250#\250Q\250a\330\r\024\220F\230\"""\230N\250!\330\014\020\220\006\220l\240$\240h\250d\260!\330\014\022\220%\220t\2309\240D\250\t\260\021\260'\270\021\330\010\017\210z\230\021\330\010\017\210q\200A\340\r\016\330\030\031\330\024\032\230!\330\021\027\220q\330\023\032\230!\330\t\n\360\010\000\t \320\0370\260\001\260\025\260h\270a\330\010 \240\n\250#\250Q\250a\330\r\024\220F\230\"\230N\250!\330\014\020\220\006\220l\240$\240h\250d\260!\330\014\024\220E\230\024\230Y\240d\250)\2601\260G\2701\330\010\017\210z\230\021\330\010\017\210q\200A\340\r\016\330\027'\240q\330\t\n\360\010\000\t\034\320\033+\2501\250A\330\010#\240:\250Q\250a\330\r\024\220F\230\"\320\0340\260\001\330\014\020\220\t\230\021\230&\240\001\240\030\250\021\250(\260!\200A\340\r\016\330\027'\240q\330\t\n\360\010\000\t\034\320\033+\2501\250A\330\010#\240:\250Q\250a\330\r\024\220F\230\"\320\0342\260!\330\014\020\220\t\230\021\230&\240\001\200A\340\027\030\330\r\016\330\027'\240q\330\t\n\360\010\000\t\034\320\033+\2501\250A\330\010#\240:\250Q\250a\330\r\024\220F\230\"\320\0343\2601\330\014\020\220\t\230\030\240\021\240&\250\001\250\030\260\021\260(\270!\200A\340\r\016\330\027'\240q\330\t\n\360\010\000\t\034\320\033+\2501\250A\330\010#\240:\250Q\250a\330\r\024\220F\230\"\320\0343\2601\330\014\020\220\t\230\021\230&\240\001\240\030\250\021\250(\260!\200A\340\r\016\330\027'\240q\330\t\n\360\010\000\t\034\320\033+\2501\250A\330\010#\240:\250Q\250a\330\r\024\220F\230\"\320\0344\260A\330\014\020\220\t\230\021\230&\240\001\240\030\250\021\250(\260!\200A\340\r\016\330\027'\240q\330\t\n\360\010\000\t\034\320\033+\2501\250A\330\010#\240:\250Q\250a\330\r\024\220F\230\"\320\0345\260Q\330\014\020\220\t\230\021\230&\240\001\200A\340\r\016\330\027'\240q\330\t\n\360\010\000\t\034\320\033+\2501\250A\330\010#\240:\250Q\250a\330\r\024\220F\230\"\320\0346\260a\330\014\020\220\t\230\021\230&\240\001\200A\340\r\016\330\027'\240q\330\t\n\360\010\000\t\034\320\033+\2501\250A\330\010#\240:\250Q\250a\330\r\024\220F\230\"\320\034,\250A\330\014\020\220\t\230\021\230&\240\001""\240\030\250\021\250(\260!\200A\340\027\030\330\r\016\330\027'\240q\330\t\n\360\010\000\t\034\320\033+\2501\250A\330\010#\240:\250Q\250a\330\r\024\220F\230\"\320\034/\250q\330\014\020\220\t\230\030\240\021\240&\250\001\250\030\260\021\260(\270!\200A\360\006\000\023\024\330\027'\240q\330\t\n\360\010\000\t\032\230\021\330\010\031\230\021\330\010\023\220=\240\001\240\032\2501\250G\2601\260F\270!\330\010\020\220\r\230V\2401\200A\360\006\000\023\024\330\027'\240q\330\t\n\360\010\000\t\032\230\021\330\010\023\220=\240\001\240\032\2501\250G\2601\330\010\020\220\007\220q\200A\340\r\016\330\027'\240q\330\t\n\360\010\000\t\034\230?\250!\2501\330\010#\240:\250Q\250a\330\r\024\220F\230\"\320\0341\260\021\330\014\020\220\t\230\021\230&\240\001\200A\340\027\030\330\r\016\330\027'\240q\330\t\n\360\010\000\t\034\230?\250!\2501\330\010#\240:\250Q\250a\330\r\024\220F\230\"\320\0342\260!\330\014\020\220\t\230\030\240\021\240&\250\001\250\030\260\021\260(\270!\200A\340\r\016\330\027'\240q\330\t\n\360\010\000\t\034\230?\250!\2501\330\010#\240:\250Q\250a\330\r\024\220F\230\"\320\0342\260!\330\014\020\220\t\230\021\230&\240\001\240\030\250\021\250(\260!\200A\340\r\016\330\027'\240q\330\t\n\360\010\000\t\034\230?\250!\2501\330\010#\240:\250Q\250a\330\r\024\220F\230\"\320\0343\2601\330\014\020\220\t\230\021\230&\240\001\240\030\250\021\250(\260!\200A\340\r\016\330\027'\240q\330\t\n\360\010\000\t\034\230?\250!\2501\330\010#\240:\250Q\250a\330\r\024\220F\230\"\320\0344\260A\330\014\020\220\t\230\021\230&\240\001\200A\340\r\016\330\027'\240q\330\t\n\360\010\000\t\034\230?\250!\2501\330\010#\240:\250Q\250a\330\r\024\220F\230\"\320\0345\260Q\330\014\020\220\t\230\021\230&\240\001\200A\340\r\016\330\027'\240q\330\t\n\360\010\000\t\034\230?\250!\2501\330\010#\240:\250Q\250a\330\r\024\220F\230\"\230O\2501\330\014\020\220\t\230\021\230&\240\001\240\030\250\021\250(\260!\200A\340\027\030\330\r\016\330\027'\240q\330\t\n\360\010\000\t\034\230?\250!\2501\330\010#\240:\250Q\250a\330\r\024\220F\230\"\320""\034.\250a\330\014\020\220\t\230\030\240\021\240&\250\001\250\030\260\021\260(\270!\200A\340\r\016\330\027'\240q\330\t\n\360\010\000\t\034\230?\250!\2501\330\010#\240:\250Q\250a\330\r\024\220F\230\"\320\034/\250q\330\014\020\220\t\230\021\230&\240\001\240\030\250\021\250(\260!\200A\330'/\250q\360\010\000\t\"\240\032\2503\250a\250q\330\010\016\210b\320\020+\2501\250C\250q\260\010\270\001\330\010\017\210q\200A\340\033\034\330\027\030\330\t\n\360\010\000\t\034\230<\240q\330\010\030\230\010\240\001\240\037\260\001\260\027\270\001\270\021\340\010!\240\032\2503\250a\250t\2601\260A\330\010\016\210b\320\020/\250q\330\014\023\220=\240\001\330\014\020\220\t\230\021\230(\240!\330\010\017\210q\200A\340\r\016\330\027'\240q\330\t\n\360\010\000\t$\2404\240q\330\010\032\230!\330\010\013\2108\2203\220a\330\014\025\220Q\330\010\037\320\037/\250q\260\005\260Q\330\010#\240:\250Q\250a\330\r\024\220F\230\"\230K\240q\330\014\020\220\006\220d\230(\240$\240a\330\014\r\210Y\220a\330\010\013\2105\220\007\220q\330\014\020\220\n\230!\200A\340\022\023\330\022\023\330\020\021\330\022\023\330\017\020\330\020\021\330\023\031\230\021\330\t\n\360\010\000\t\032\230\021\330\010\"\240!\330\010\036\320\036.\320.?\270q\330\010\023\2208\2301\230I\240Q\240g\250Q\250a\330\010\023\2208\2301\230J\240g\250Q\250a\330\010\023\2208\2301\230J\240g\250Q\250a\330\010\023\2208\2301\230J\240g\250Q\250a\340\010!\240\032\2503\250a\250t\2601\260A\330\010\016\210b\320\020(\250\001\330\014\022\220&\230\007\230q\330\014\027\220x\230y\250\001\330\014\020\220\t\230\021\230(\240!\330\010\017\210q\200A\340\027'\240q\330\t\n\360\010\000\t\031\230\001\330\010#\240:\250Q\250a\330\r\024\220F\230\"\320\0342\260!\330\014\020\220\t\230\021\230&\240\001\330\010\025\220Q\200A\360\006\000\023\024\330\027'\240q\330\t\n\360\010\000\t\032\230\021\330\010\030\230\001\330\010#\240:\250Q\250a\330\010\030\230\005\230X\240Q\240a\330\010\n\210(\220!\2201\330\010\t\330\021\030\230\006\230b\240\013\2501\330\020\022\220(\230\"\230K\240q\250\007\250q""\260\006\260a\340\014\016\210h\220a\330\010\020\220\r\230Q\200A\360\006\000\023\024\330\027'\240q\330\t\n\360\010\000\t\032\230\021\330\010#\240:\250Q\250a\330\010\030\230\005\230X\240Q\240a\330\010\n\210(\220!\2201\330\010\t\330\021\030\230\006\230b\240\013\2501\330\020\022\220(\230\"\230K\240q\250\007\250q\340\014\016\210h\220a\330\010\017\210q\200A\360\006\000\023\024\330\027'\240q\330\t\n\360\010\000\t\032\230\021\330\010\030\230\001\330\010#\240:\250Q\250a\330\010\030\230\005\230X\240Q\240a\330\010\n\210(\220!\2201\330\010\t\330\021\030\230\006\230b\320 :\270!\330\020\022\220(\230\"\230K\240q\250\007\250q\260\006\260a\340\014\016\210h\220a\330\010\020\220\r\230Q\200A\330\027\037\230q\360\006\000\t\014\210:\220Q\220e\2301\330\014\023\320\023$\240A\240_\260A\260Q\330\010\013\210:\220Q\220e\2301\330\014\023\320\023$\240A\240_\260A\260Q\330\010\017\210z\230\021\230/\250\021\250!\200A\340\027'\240q\330\t\n\360\010\000\t\024\220:\230Q\230f\240A\330\010\017\210q\200A\340\r\016\330\022\023\330\021\027\220q\330\t\n\340\010\035\230T\240\021\330\010\017\210{\230!\2305\240\006\240e\2501\200A\340\r\016\330\022\023\330\021\027\220q\330\t\n\340\010\035\230T\240\021\330\010\037\230y\250\003\2501\250A\330\010\017\210z\230\033\240A\240U\250&\260\005\260V\2701\270G\3001\330\010\017\210q\200A\340\r\016\330\022\023\330\021\027\220q\330\t\n\340\010\035\230T\240\021\330\010\037\230y\250\003\2501\250A\330\010\017\210z\230\034\240Q\240e\2506\260\025\260f\270A\270W\300A\330\010\017\210q\200A\340\r\016\330\022\023\330\021\027\220q\330\t\n\340\010\035\230T\240\021\330\010\017\210z\230\021\230%\230v\240U\250!\200A\340\030\031\330\021\027\220q\330\023\032\230!\330\t\n\360\010\000\t\031\230\001\330\010\r\210Z\220q\230\006\230l\250&\260\001\330\r\027\220q\230\006\230l\250&\260\001\330\010\031\230\026\230s\240!\2401\330\r\024\220F\230\"\320\034/\250q\330\014\020\220\t\230\034\240U\250$\250i\260q\270\004\270A\330\010\036\230a\230t\2401\330\010\017\210q\200A\340\021\022\330\016/\250q\330\022)""\250\021\330\016&\240a\330\022\030\230\001\330\022+\2501\330\t\n\360\010\000\t\032\230\021\330\010\033\2301\330\010\035\230Q\330\010\037\230q\330\010\036\230a\330\010\036\230a\340\010\030\230\001\330\010\016\210b\220\r\230Q\230d\240)\2501\250A\340\010\013\2105\220\003\2201\330\014\026\220l\240!\2409\250A\250W\260A\260Q\330\014\026\220m\2401\240F\250'\260\021\260!\330\014\026\220n\240A\240Z\250w\260a\260q\330\014\026\220l\240!\2406\250\027\260\001\260\021\330\010\026\220a\330\010\013\2109\220G\2301\330\014\017\210u\220C\220q\330\020\030\230\005\230S\240\001\240\021\330\020\032\230.\250\001\250\032\2607\270!\2701\330\014\020\220\005\220U\230!\2301\330\020\026\220i\230q\240\001\330\014\026\220h\230a\230t\2401\240A\340\010\036\230k\250\023\250A\250Q\330\r\024\220F\230\"\320\0343\2601\330\014\023\2206\230\027\240\013\2507\260!\330\014\020\220\t\230\021\230$\230i\240q\340\010\023\2205\230\001\330\010\013\2109\220G\2301\330\014\024\220F\230!\2303\230d\240%\240u\250A\250Q\330\014\020\220\005\220U\230!\2301\330\020\024\220B\220b\230\t\240\021\240!\330\020\030\230\001\230\022\2306\240\021\240)\2501\250C\250t\2605\270\005\270Q\270c\300\021\330\020\024\220A\340\010\036\230a\230t\2401\330\010\017\210q\200A\340\021\022\330\021\022\330\t\n\360\016\000\t\036\230\\\250\021\330\010\t\210\036\220q\230\t\240\031\250$\250a\330\r\024\220F\230\"\230O\2501\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\020\220\001\200A\340\021\022\330\021\022\330\023\032\230!\330\t\n\360\010\000\t\036\230\\\250\021\330\010\t\210\036\220q\230\t\240\031\250$\250a\330\010 \240\n\250#\250Q\250a\330\r\024\220F\230\"\320\0340\260\001\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\020\220\t\230\024\230Y\240a\240w\250a\330\010\017\210z\230\021\330\010\017\210q\200A\340\021\022\330\021\022\330\t\n\360\010\000\t\036\230\\\250\021\330\010\t\210\036\220q\230\t\240\031\250$\250a\330\010\037\230y\250\003\2501\250A""\330\r\024\220F\230\"\320\034,\250A\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\r\210W\220A\220Z\230q\240\n\250!\2501\330\014\020\220\t\230\021\230'\240\021\330\010\017\210z\230\021\330\010\017\210q\200A\360\006\000\023\024\330\023\032\230!\330\t\n\360\010\000\t \230q\330\010\023\220;\230a\230z\250\021\250!\330\r\024\220F\230\"\230O\2501\250K\260t\2701\200A\360\006\000\031\032\330\022\023\330\023\031\230\021\330\023\032\230!\330\t\n\360\010\000\t \230q\330\010\023\220;\230a\230z\250\021\250!\330\010\031\230\026\230s\240!\2401\330\r\024\220F\230\"\230M\250\021\330\014\020\220\t\230\033\240G\2504\250y\270\001\270\024\270Q\330\010\036\230a\230t\2401\330\010\017\210q\200A\340\023\024\330\023\032\230!\330\022\030\230\001\330\t\n\360\010\000\t \230q\330\010\030\230\001\330\010\016\210b\220\r\230Q\230d\240)\2501\250A\330\010\013\2105\220\003\2201\330\014\030\230\010\240\001\240\033\250A\250Q\330\010\036\230k\250\023\250A\250Q\330\r\024\220F\230\"\320\034,\250A\330\014\027\220t\2309\240A\330\014\020\220\t\230\021\230$\230a\330\010\036\230a\230t\2401\330\010\017\210q\200A\340\023\024\330\023\032\230!\330\022\030\230\001\330\t\n\360\010\000\t \230q\330\010\030\230\001\330\010\016\210b\220\r\230Q\230d\240)\2501\250A\330\010\013\2105\220\003\2201\330\014\030\230\010\240\001\240\033\250A\250Q\330\010\036\230k\250\023\250A\250Q\330\r\024\220F\230\"\230O\2501\330\014\027\220t\2309\240A\330\014\020\220\t\230\021\230$\230a\330\010\036\230a\230t\2401\330\010\017\210q\200A\340\032\033\330\035\036\330\033\034\330\021\027\220q\330\t\n\360\010\000\t\037\230k\250\023\250A\250Q\330\r\024\220F\230\"\320\0340\260\001\330\014\020\220\t\230\021\330\014\025\220Y\230a\330\014\021\220\021\220$\220a\330\010\036\230a\230t\2401\330\010\017\210q\200A\340\017\020\330\017\020\330\t\n\360\010\000\t\033\230-\240q\330\010\020\220\010\230\001\230\027\240\001\240\030\250\021\250!\330\010\032\230-\240q\330\010\020\220\010\230\001\230\027\240\001\240\030\250\021\250!\340\010\013\2106\220\021\220""\"\220B\220b\230\004\230F\240!\2406\250\021\250\"\250B\250a\330\014\026\220a\330\014\026\220a\330\010\030\230\001\330\010\016\210b\220\r\230Q\230d\240)\2508\2608\2708\3001\300A\330\010\017\210q\200A\360\006\000\024\025\330\024\032\230!\330\021\027\220q\330\027'\240q\330\t\n\360\010\000\t%\240A\330\010#\240:\250Q\250a\330\r\024\220F\230\"\230J\240a\330\014\024\220E\230\024\230Y\240a\240z\260\021\330\010\037\230y\250\003\2501\250A\330\010\017\210z\230\021\330\010\017\210q\200A\340\024\032\230!\330\021\027\220q\330\027'\240q\330\t\n\360\010\000\t%\240A\330\010#\240:\250Q\250a\330\r\024\220F\230\"\230J\240a\330\014\024\220E\230\024\230Y\240a\240z\260\021\330\010\037\230y\250\003\2501\250A\330\010\017\210z\230\021\330\010\017\210q\200A\360\006\000\024\025\330\024\032\230!\330\021\027\220q\330\027'\240q\330\t\n\360\010\000\t\031\230\001\330\010$\240A\330\010#\240:\250Q\250a\330\r\024\220F\230\"\230K\240q\330\r\025\220U\230$\230i\240q\250\006\250a\250z\270\021\330\010\013\2105\220\003\2203\220g\230Q\330\010\037\230y\250\003\2501\250A\330\010\017\210z\230\021\330\010\017\210q\200A\340\024\032\230!\330\021\027\220q\330\027'\240q\330\t\n\360\010\000\t\031\230\001\330\010$\240A\330\010#\240:\250Q\250a\330\r\024\220F\230\"\230K\240q\330\r\025\220U\230$\230i\240q\250\006\250a\250z\270\021\330\010\013\2105\220\003\2203\220g\230Q\330\010\037\230y\250\003\2501\250A\330\010\017\210z\230\021\330\010\017\210q\200A\340\r\016\330\022\023\330\021\027\220q\330\t\n\360\020\000\t \320\037/\250q\260\005\260Q\330\r\024\220F\230\"\230J\240a\330\014\020\220\006\220d\230(\240$\240a\330\014\022\220%\220t\2301\200A\340\r\016\330\022\023\330\021\027\220q\330\t\n\360\010\000\t \320\037/\250q\260\005\260Q\330\r\024\220F\230\"\230K\240q\330\014\020\220\006\220d\230(\240$\240a\330\014\022\220%\220t\2301\200A\340\r\016\330\022\023\330\021\027\220q\330\t\n\360\010\000\t \320\037/\250q\260\005\260Q\330\010 \240\n\250#\250Q\250a\330\r\024\220F\230\"\320\034,\250A\330\014\020\220\006\220d\230(\240$\240a""\330\014\022\220%\220t\2309\240A\240W\250A\330\010\017\210z\230\021\330\010\017\210q\200A\340\r\016\330\024\032\230!\330\021\027\220q\330\t\n\360\010\000\t \320\037/\250q\260\005\260Q\330\010 \240\n\250#\250Q\250a\330\r\024\220F\230\"\230O\2501\330\014\020\220\006\220d\230(\240$\240a\330\014\024\220E\230\024\230Y\240a\240w\250a\330\010\017\210z\230\021\330\010\017\210q\200A\340\r\016\330\022\023\330\021\027\220q\330\t\n\360\010\000\t \320\037/\250q\260\005\260Q\330\010 \240\n\250#\250Q\250a\330\r\024\220F\230\"\230O\2501\330\014\020\220\006\220d\230(\240$\240a\330\014\022\220%\220t\2309\240A\240W\250A\330\010\017\210z\230\021\330\010\017\210q\200A\340\r\016\330\024\032\230!\330\021\027\220q\330\t\n\360\010\000\t \320\037/\250q\260\005\260Q\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\230K\240q\330\014\020\220\006\220d\230(\240$\240a\330\014\024\220E\230\024\230Y\240a\240w\250a\330\010\017\210z\230\021\330\010\017\210q\200A\340\r\016\330\022\023\330\021\027\220q\330\t\n\360\010\000\t \320\037/\250q\260\005\260Q\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\230K\240q\330\014\020\220\006\220d\230(\240$\240a\330\014\022\220%\220t\2309\240A\240W\250A\330\010\017\210z\230\021\330\010\017\210q\200A\340\r\016\330\022\023\330\021\027\220q\330\t\n\360\010\000\t \320\037/\250q\260\005\260Q\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\230L\250\001\330\014\020\220\006\220d\230(\240$\240a\330\014\022\220%\220t\2309\240A\240W\250A\330\010\017\210z\230\021\330\010\017\210q\200A\340\024\032\230!\330\021\027\220q\330\027'\240q\330\t\n\360\014\000\t$\240:\250Q\250a\330\r\024\220F\230\"\230I\240Q\330\014\024\220E\230\024\230Y\240a\330\010\017\210q\200A\340\024\032\230!\330\021\027\220q\330\027'\240q\330\t\n\360\010\000\t\031\230\001\330\010#\240:\250Q\250a\330\r\024\220F\230\"\230J\240a\330\014\024\220E\230\024\230Y\240a\240v\250Q\330\010\025\220Q\200A\340\024\032\230!\330\021\027\220q\330\027'\240q\330\t\n\340\010\035\230T\240\021\330\010#\240:\250Q""\250a\330\010\017\210|\2301\230H\240E\250\026\250q\200A\340\024\032\230!\330\021\027\220q\330\027'\240q\330\t\n\340\010\035\230T\240\021\330\010#\240:\250Q\250a\330\010\017\210{\230!\2308\2405\250\006\250a\200A\340\024\032\230!\330\021\027\220q\330\027'\240q\330\t\n\340\010\035\230T\240\021\330\010#\240:\250Q\250a\330\010\037\230y\250\003\2501\250A\330\010\017\210z\230\034\240Q\240h\250e\2601\330&'\240w\250i\260q\330\010\017\210q\200A\340\024\032\230!\330\021\027\220q\330\027'\240q\330\t\n\340\010\030\230\001\330\010\035\230T\240\021\330\010#\240:\250Q\250a\330\010\037\230y\250\003\2501\250A\330\010\017\210z\230\035\240a\240x\250u\260F\270!\2701\330'(\250\007\250y\270\001\330\010\013\2105\220\003\2203\220g\230Q\330\010\017\210q\200A\340\r\016\330\024\032\230!\330\021\027\220q\330\027'\240q\330\t\n\360\014\000\t \320\037/\250q\260\005\260Q\330\010#\240:\250Q\250a\330\r\024\220F\230\"\230J\240a\330\014\020\220\006\220d\230(\240$\240a\330\014\024\220E\230\024\230Y\240a\200A\360\006\000\024\025\330\024\032\230!\330\021\027\220q\330\027'\240q\330\t\n\360\010\000\t \230y\250\003\2501\250A\330\010#\240:\250Q\250a\330\010\017\210z\230\034\240Q\240h\250e\2604\260q\330&'\240w\250i\260q\330\010\017\210q\200A\360\006\000\024\025\330\024\032\230!\330\021\027\220q\330\027'\240q\330\t\n\360\010\000\t\031\230\001\330\010\037\230y\250\003\2501\250A\330\010#\240:\250Q\250a\330\010\017\210z\230\035\240a\240x\250u\260D\270\t\300\021\300!\330'(\250\007\250y\270\001\330\010\013\2105\220\003\2203\220g\230Q\330\010\017\210q\200A\360\006\000\023\024\330\027'\240q\330\t\n\360\010\000\t\020\210w\220o\240Q\240j\260\001\200A\330\027\037\230q\360\006\000\t\020\210z\230\021\230/\250\021\250!\200A\330\027\037\230q\360\006\000\t\020\210z\230\021\230*\240A\240Q\200A\330\027\037\230q\360\006\000\t\020\210z\230\021\320\032,\250A\250Q\200A\330\027\037\230q\360\006\000\t\020\210z\230\021\230+\240Q\240a\200A\330\027\037\230q\360\006\000\t\020\210z\230\021\230,\240a\240q\200A\330\027\037\230q\360\006\000""\t\020\210z\230\021\230-\240q\250\001\200A\360\006\000\020\021\360\n\000\r\016\330\t\n\360\010\000\t\032\230\026\230s\240!\2401\330\010\016\210b\220\017\230q\240\001\240\024\240Q\330\010\013\2106\220\023\220F\230'\240\021\340\010\t\330\014\017\210w\220a\220w\230a\330\020\024\220G\2305\240\005\240Q\330\024\030\230\004\230A\230U\240%\240q\250\001\340\020\024\220E\230\031\240!\330\024\030\230\004\230A\230U\240!\340\014\022\220\"\220M\240\021\240!\2404\240q\330\014\r\330\010\017\210q\200A\330\034\035\340\010\017\210t\220?\240!\320\004\034\230A\330\010\017\210t\2207\230!\200A\330\035\036\340\010\017\210t\320\023#\2401\200A\330\036\037\340\010\017\210t\320\023$\240A\200A\340\r\016\330\t\n\360\010\000\t\020\210v\220Q\220f\230A\200A\340\016\017\330\t\n\360\010\000\t\020\210v\220Q\220f\230A\200A\360\006\000\023\024\330\022(\250\001\330\t\n\360\010\000\t\020\210w\320\026&\240a\240z\260\021\200A\360\006\000\023\024\330\022(\250\001\330\t\n\360\010\000\t\020\210w\220o\240Q\240j\260\001\200A\340\026\027\330\027\030\330\t\n\360\014\000\t \230|\250?\270!\330\010\027\220x\230q\240\016\250a\250w\260a\260q\330\010\030\230\010\240\001\240\037\260\007\260q\270\001\340\010!\240\032\2503\250a\250t\2601\260A\330\010\016\210b\320\020*\250!\330\014\023\2207\230!\330\014\020\220\001\330\014\r\210X\220Q\330\010\017\210q\320\004\034\230A\330\010\017\210y\230\001\230\021\200A\340\r\016\330\t\n\360\010\000\t\020\210z\230\021\230&\240\001\200A\330 (\250\001\360\010\000\t\020\210z\230\021\230/\250\037\270\001\200A\330 (\250\001\360\010\000\t\020\210z\230\021\230)\240?\260!\200A\330 (\250\001\360\010\000\t\020\210z\230\021\320\032+\250?\270!\200A\330 (\250\001\360\010\000\t\020\210z\230\021\230*\240O\2601\200A\330 (\250\001\360\010\000\t\020\210z\230\021\230+\240_\260A\200A\340\016\017\330\021\022\330\t\n\360\010\000\t\020\210z\230\021\230&\240\006\240a\200A\330 (\250\001\360\010\000\t\020\210z\230\021\230,\240o\260Q\200A\330 (\250\001\360\010\000\t\020\210z\230\021\230.\250\017\260q\320\004 \320 C""\3001\360\010\000\t\027\220a\330\010\021\220\021\330\010\025\220U\230#\230Q\230a\330\010\027\220x\230q\240\003\320#3\2601\260A\330\010\014\210E\220\025\220a\220q\330\014\020\220\007\220v\230Q\230a\330\014\r\210Q\210d\220!\2201\220D\230\001\230\021\230%\230u\240A\240Q\330\010\033\2307\240#\240Q\240d\250!\2501\330\010\016\210b\320\020$\240A\240T\250\031\260#\260X\270Q\270e\3001\330\010\017\210q\320\004\034\230F\240)\2501\360\010\000\t\r\210J\320\026'\240q\250\001\330\010\020\220\t\230\021\230!\320\004!\240\021\360\010\000\016\025\220F\230\"\320\0343\2601\260D\270\001\320\004\032\230!\360\010\000\016\025\220F\230\"\320\034,\250A\250T\260\021\320\004!\240\031\250!\360\010\000\t\031\230\001\330\r\024\220F\230\"\320\034,\250A\330\014\020\220\t\230\024\230Y\240a\240q\330\010\017\210q\320\004\030\230\001\360\010\000\016\025\220F\230\"\230J\240a\240q\250\004\250A\320\004\031\230\021\360\010\000\016\025\220F\230\"\230K\240q\250\004\250A\320\004\030\230\001\360\010\000\016\025\220F\230\"\230O\2501\250D\260\001\320\000\032\230&\240\014\320,G\300q\360\010\000\005\014\210:\220Q\220d\230)\2401\320\000$\240H\250A\360\n\000\005\032\230\021\330\004\n\210\"\320\014\034\230A\230[\250\010\260\001\260\021\330\004\013\2108\2201\220H\230A\320\004$\240H\250A\360\010\000\016\025\220F\230\"\320\034-\250Q\250d\260)\2701\320\004$\240H\250A\360\010\000\016\025\220F\230\"\320\034/\250q\260\006\260d\270!\320\000\024\220H\230A\360\010\000\005\026\220Q\330\004\007\200z\220\021\220%\220q\330\010\016\210g\220R\220x\230t\2401\330\t\023\2201\220E\230\021\330\010\016\210g\220R\220z\240\024\240Q\330\t\023\2201\220E\230\021\330\010\016\210g\220R\220y\240\004\240A\330\t\023\2201\220E\230\021\330\010\016\210g\220R\220y\240\004\240A\330\t\023\2201\220E\230\021\330\010\016\210g\220R\220t\2304\230q\330\t\023\2201\220E\230\021\330\010\016\210g\220R\220w\230d\240!\330\t\023\2201\220E\230\021\330\010\016\210g\220R\220v\230T\240\021\330\t\023\2201\220E\230\021\330\010\016\210g\220R\220|\2404\240q\330\t\023\2201""\220E\230\021\330\010\016\210g\220R\220y\240\004\240A\330\t\023\2201\220E\230\021\330\010\016\210g\220R\220v\230T\240\021\330\t\023\2201\220E\230\021\330\010\016\210g\220R\220u\230D\240\001\330\t\023\2201\220E\230\021\330\010\016\210g\220R\220v\230T\240\021\340\010\016\210i\220q\230\001\330\004\013\320\013\035\230Q\230a\320\004,\250H\260A\360\010\000\t\037\230a\330\010\016\210b\320\020)\250\021\250$\250i\260v\270Q\270a\330\010\017\210q\320\004!\240\021\360\010\000\t\035\230L\250\001\330\010\016\210b\320\020*\250!\330\014\020\220\t\230\021\230$\230a\230q\330\010\020\220\004\220A\320\000$\240M\260\030\270\021\360\010\000\005\032\230\021\330\004\r\210X\220Q\220h\230a\230q\330\004\n\210\"\320\014 \240\001\240\033\250A\320\004\035\230[\250\001\360\010\000\t\033\230!\330\010\035\230Q\330\010\021\220\032\2301\230H\240A\240V\2501\250A\330\r\024\220F\230\"\230N\250!\2504\250y\270\006\270a\330\010\t\330\014\017\210t\2208\2303\230f\240D\250\n\260!\330\r\023\2204\220x\230q\240\n\250(\260!\320\004\025\220Q\360\010\000\t\"\240\032\2503\250a\250t\2601\260A\330\010\016\210b\220\014\230A\230T\240\031\250!\2508\2601\330\010\017\210q\320\004\031\230\034\240Q\360\010\000\t$\2404\240q\330\010\032\230!\330\010\013\2108\2203\220a\330\014\025\220Q\330\010\037\320\037/\250q\260\005\260Q\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\230L\250\001\330\014\020\220\006\220d\230(\240$\240a\330\014\r\210Y\220a\220w\230a\330\010\013\2105\220\007\220q\330\014\020\220\n\230!\330\010\017\210z\230\021\330\010\017\210q\320\004\025\220Q\360\010\000\t\034\2307\240#\240Q\240d\250!\2501\330\010\016\210b\220\017\230q\240\004\240I\320->\270a\270u\300A\330\010\017\210q\320\000\035\230Q\360\n\000\005\025\220A\330\004\n\210\"\320\014#\2401\240F\250!\2501\330\004\013\2108\2201\220F\230!\320\004%\240Q\360\016\000\t\"\240\021\330\r\024\220F\230\"\320\0348\270\001\330\014\020\220\t\230\021\230!\330\010\017\210q\320\004\"\240!\360\010\000\t\036\230Q\340\010\035\230Q\330\010\016\210b\320\020 \240\001\240""\033\250H\260A\260Q\330\010\017\210x\220q\230\010\240\001\320\004!\240\021\360\010\000\t\036\230Q\330\010\036\230a\330\010\016\210b\220\017\230q\240\013\2501\250A\330\010\017\210q\320\000\022\220+\230Q\360\010\000\005\027\220a\330\004\026\220h\230a\230u\240A\240V\2506\260\021\330\004\n\210\"\210L\230\001\230\021\330\004\007\200x\210q\320\004#\240:\250Q\360\010\000\t\031\230\001\330\010\016\210b\320\020!\240\021\330\014\020\220\t\230\025\230i\240q\250\001\330\010\017\210q\320\004 \240\001\360\010\000\t\036\230Q\330\010\017\210q\320\000\025\220Q\360\010\000\005\030\220q\330\004\032\230!\330\004\n\210\"\210O\2301\230A\230Y\240a\240q\330\004\014\210I\220Q\320\004\025\220Q\360\010\000\t\032\230\026\230s\240!\2404\240q\250\001\330\010\016\210b\220\014\230A\230T\240\031\250!\2504\250q\330\010\017\210q\320\004\031\230\021\360\014\000\t\036\230T\240\021\330\010\017\210}\230A\230Q\320\004*\250(\260!\340\010\035\230T\240\021\330\010\017\320\017'\240q\250\t\260\021\320\000%\240X\250Q\360\010\000\005\013\210\"\320\014!\240\021\240!\320\004\035\230X\240Q\360\010\000\t\034\2301\330\010\017\210x\220q\230\006\230a\230q\330\010\016\210b\320\020 \240\001\240\024\240Y\250a\320\004\035\230X\240Q\360\010\000\t\034\2301\330\010\017\210x\220q\230\006\230a\230q\330\010\016\210b\320\020!\240\021\240$\240i\250q\320\004-\250X\260Q\360\010\000\t\"\240\032\2503\250a\250t\2601\260A\330\010\016\210b\320\020%\240Q\330\014\r\330\014\020\220\t\230\021\230(\240!\330\010\017\210q\320\004%\240X\250Q\360\010\000\t\033\230!\330\010\035\230Q\330\010\"\240!\330\r\024\220F\230\"\320\0342\260!\330\014\020\220\t\230\021\330\014\r\210V\2201\220K\230q\240\001\330\010\020\220\010\230\001\230\026\230v\240V\2504\250q\320\004-\250X\260Q\360\010\000\t\017\210b\320\020+\2501\250D\260\t\270\021\320\004%\240X\250Q\360\010\000\t\017\210b\320\020%\240Q\240a\240t\2509\260A\320\004-\250X\260Q\360\010\000\t\017\210b\320\020(\250\001\250\024\250Y\260a\320\004-\250X\260Q\360\010\000\t\017\210b\320\020'\240q\250\004\250I\260Q""\320\004-\250X\260Q\360\016\000\t \230q\330\r\024\220F\230\"\320\0344\260A\330\014\020\220\t\230\030\240\021\240!\330\010\017\210q\320\004\030\230\001\360\010\000\t\031\230\001\330\010\r\210Z\220q\230\006\230l\250&\260\001\330\r\027\220q\230\006\230l\250&\260\001\330\010\031\230\026\230s\240!\2401\330\r\024\220F\230\"\230O\2501\250D\260\t\270\021\270$\270a\330\010\036\230a\230t\2401\330\010\017\210q\320\004\031\230\021\360\010\000\t\031\230\001\330\010\r\210Z\220q\230\006\230l\250&\260\001\330\r\027\220q\230\006\230l\250&\260\001\330\010\031\230\026\230s\240!\2401\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\320\034,\250A\330\014\020\220\t\230\021\230$\230i\240q\250\007\250q\330\010\036\230a\230t\2401\330\010\020\220\006\220a\200\001\330\024\025\330\005\006\360\010\000\005\024\320\023.\250a\330\004\035\230[\250\003\2501\250A\330\004\037\230{\250#\250Q\250a\330\004\027\220q\230\004\230I\240Q\240g\250Y\260a\260q\330\030\031\230\031\240)\2501\250A\330\004\014\210I\220U\320\032+\2501\320\004\026\220a\360\006\000\t\020\210|\2301\230D\240\001\200\001\330\022\023\330\017\020\330\017\026\220a\330\005\006\360\010\000\005\034\2301\330\004\023\2208\2301\230N\250!\2501\330\004\033\2301\330\004\020\220\010\230\001\230\033\240A\240Q\330\004\032\230(\240!\2407\250!\330\t\020\220\006\220b\320\030(\250\001\250\033\260G\2701\200\001\330\022\023\330\017\020\330\017\026\220a\330\005\006\360\010\000\005\034\2301\330\004\023\2208\2301\230N\250!\2501\330\004\033\2301\330\004\020\220\010\230\001\230\033\240A\240Q\330\004\032\230(\240!\2407\250!\330\t\020\220\006\220b\320\030*\250!\250;\260g\270Q\320\004\026\220a\360\010\000\t\021\220\001\220\021\320\004\030\230\001\360\010\000\t\036\230\\\250\021\250$\250a\330\010\013\2102\210S\220\006\220g\230U\240!\2401\330\010\016\210j\230\001\230\021\320\004\030\230\001\360\010\000\t\020\210\177\230a\230{\250!\320\004\026\220a\360\006\000\t\020\210{\230!\2304\230q\320\004\026\220a\360\010\000\t$\2404\240q\330\010\016\210b\320\020#\2401\240A""\240T\250\021\330\010\013\2108\2201\220G\2304\230z\250\021\320\004\026\220a\360\010\000\t\034\2304\230q\330\010\016\210b\220\013\2301\230A\230T\240\021\330\010\013\2108\2201\220G\2304\230z\250\021\330\010\023\2201\220A\320\004\026\220a\340\010\013\2104\210v\220W\230A\330\010\031\230\021\330\010\031\230\024\230Z\240q\340\010\014\210E\220\025\220a\220q\330\014\022\220$\220k\240\021\240!\330\014\020\220\007\220q\230\001\330\010\017\210q\320\004\026\220a\340\010\013\2104\210v\220W\230F\240#\240Q\240d\250!\2501\330\010\017\210t\2204\220q\320\004!\240\026\240\177\260a\340\010\013\2105\220\002\220-\230w\240a\330\010\024\220I\230Q\230f\240A\320\000\026\220a\360\010\000\005\031\230\001\330\004\n\210\"\320\014\034\230A\230Q\230a\330\004\013\2101\320\004\026\220a\360\006\000\t\020\210}\230A\230T\240\021\320\004\026\220a\360\010\000\t%\240A\240T\250\021\330\010\037\230q\330\010\016\210b\220\016\230a\230z\250\021\330\010\017\210q\220\010\230\001\230\023\230D\240\005\240U\250!\2501\320\004\027\320\027.\250a\340\010\034\230A\330\010\013\2101\330\014\024\220D\230\004\230A\230Q\330\010\013\2106\220\027\230\001\330\014\020\220\007\220q\230\001\330\014\023\2201\330\010\013\2101\330\014\025\220Q\330\014\023\2201\330\010\016\210h\220a\220q\320\004\026\220a\360\010\000\t!\240\004\240A\330\r\024\220F\230\"\320\034,\250A\250Q\250d\260!\330\010\013\2108\2201\220G\2304\230z\250\021\320\004\036\230a\360\010\000\t\035\230A\330\010\034\230H\240H\250H\260A\330\010\016\210b\320\020'\240q\330\014\020\220\t\230\021\230$\230a\230t\2401\240D\250\001\250\024\250Q\250a\330\010\020\220\004\220D\230\004\230D\240\001\320\000\026\220a\360\010\000\005\025\220A\330\004\n\210\"\210M\230\021\230!\2301\330\004\021\220\021\320\004\026\220a\360\010\000\t\035\230D\240\001\330\r\024\220F\230\"\230L\250\001\250\021\250$\250a\330\010\013\2108\2201\220G\2304\230z\250\021\330\010\014\210J\220a\320\004\036\230a\360\010\000\016\025\220F\230\"\320\0341\260\021\260$\260a\320\004\036\230a\360\016\000\t\"\240\021\330\r\024""\220F\230\"\320\0341\260\021\260$\260i\270q\300\001\330\010\017\210q\320\004\036\230a\360\010\000\016\025\220F\230\"\320\0344\260A\260T\270\021\320\004\026\220a\360\010\000\016\025\220F\230\"\230L\250\001\250\024\250Q\320\004\026\220a\360\010\000\016\025\220F\230\"\230L\250\001\250\024\250Q\330\010\017\210q\320\004\026\220a\360\010\000\t\031\230\001\330\r\024\220F\230\"\230L\250\001\250\024\250Y\260a\260q\330\010\025\220Q\320\004\026\220a\360\010\000\016\025\220F\230\"\230M\250\021\250$\250a\200\016\210a\360\010\000\005\013\210\"\210H\220A\220V\2301\330\004\016\210a\320\004\026\220a\360\010\000\t\"\240\024\240Q\330\010\016\210b\220\r\230Q\230a\230t\2401\330\010\013\2108\2201\220G\2304\230z\250\021\320\004\033\230;\240a\360\010\000\t\036\230Q\330\010!\240\021\330\010\017\210z\230\021\230&\240\t\250\021\250*\260A\260Z\270s\300!\330\010\013\2109\220C\220s\230&\240\n\250!\330\014\r\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\230O\2501\330\014\020\220\t\230\032\2401\240G\2501\330\010\017\210z\230\021\330\010\017\210q\320\000\031\230\027\240\016\250a\360\n\000\005\016\210Q\210e\2201\330\t\020\220\006\220b\230\r\240Q\240d\250)\2601\330\004\r\210Q\320\016#\2401\330\004\013\2106\220\021\220!\320\004\026\220a\360\010\000\t\036\230T\240\021\330\r\024\220F\230\"\230M\250\021\250!\2504\250q\330\010\013\2108\2201\220G\2304\230z\250\021\320\004\026\220a\360\010\000\t\036\230T\240\021\330\010\016\210b\220\r\230Q\230a\230t\2401\330\010\013\2108\2201\220G\2304\230z\250\021\320\000\026\220a\360\010\000\005\026\220V\2303\230a\230q\330\004\n\210\"\320\014\034\230A\230Q\230d\240!\330\004\013\2101\320\000\036\230a\360\010\000\005\026\220V\2303\230a\230q\330\004\n\210\"\320\014$\240A\240Q\240d\250!\330\004\013\2101\320\004\026\220a\360\006\000\t\020\320\017!\240\021\240$\240a\320\000\031\320\031)\250\027\260\016\270a\360\010\000\005\027\220a\330\004\n\210\"\210M\230\021\230&\240\004\240I\250Q\250a\330\004\013\2106\220\021\220&\230\001\320\004\026\220a\360\006\000\t\020\210\177""\230a\230t\2401\320\000!\240\035\250a\360\010\000\005\033\230,\240a\240x\250q\330\004\013\2105\220\001\220\027\230\003\2303\230j\250\001\320\000\026\220a\360\010\000\n\021\220\006\220b\320\030(\250\001\320\004\036\230a\360\010\000\t\031\230\001\330\010\016\210b\320\020\"\240!\2401\240D\250\t\260\021\260!\330\010\025\220Q\320\004\032\230!\360\010\000\t\033\230,\240a\330\010\016\210b\320\020!\240\022\2404\240y\260\001\260\030\270\021\270!\330\010\033\2301\330\010\027\220x\230q\240\010\250\001\250\021\330\010\033\2301\330\010\027\220x\230q\240\010\250\001\250\021\330\010\016\210b\220\r\230Q\230d\240)\2508\2608\2708\3001\330\010\034\230A\230V\2401\240C\240t\2505\260\005\260Q\260a\330\010\034\230A\230V\2401\240C\240t\2505\260\005\260Q\260a\330\010\020\220\007\220q\320\004\036\230a\360\010\000\t\031\230\001\330\010\016\210b\220\r\230Q\230d\240)\2501\250A\330\010\017\210q\320\004\032\230!\360\010\000\t\033\230,\240a\330\010\016\210b\320\020!\240\021\240$\240i\250q\260\010\270\001\270\021\330\010\020\220\010\230\001\320\004\032\230!\360\010\000\t\037\230a\330\010\016\210b\220\017\230q\240\004\240I\250Q\250a\330\010\017\210q\320\004\036\230a\330\010\t\330\014\026\220d\230+\240Q\330\014\023\2204\220x\230q\330\014\025\220T\230\032\2401\340\010\t\330\014\021\220\021\220+\230T\240\035\250a\250q\330\017\020\340\010\t\330\014\021\220\021\220/\240\024\240]\260!\330\017\020\340\010\017\210q\320\004\026\220a\360\010\000\t\037\230d\240!\330\010\016\210b\220\016\230a\230q\240\004\240A\330\010\013\2108\2201\220G\2304\230z\250\021\320\000\027\320\027)\250\021\360\010\000\005\027\220a\330\004\032\230!\330\004\n\210-\220q\230\005\230Q\230f\240A\240Q\330\t\020\220\006\220b\320\030+\2501\250F\260!\330\004\025\220Q\220c\230\021\320\004#\240;\250a\340\010\017\210s\220!\2206\230\022\2301\320\004#\240;\250a\340\010\017\210s\220!\2206\230\023\230A\320\000\032\320\032.\250a\360\010\000\005\032\230\021\330\004\007\200t\2109\220A\220Q\330\010\022\220!\220:\230Q\230i\240q\330\004\034\230A\330\004""\n\210\"\210O\2301\230I\240Q\240a\330\004\013\2101\320\004\026\220a\360\006\000\t\020\210z\230\021\230$\230a\320\004#\240>\260\030\270\021\360\010\000\t\027\220a\220t\2309\240H\250A\320\004\032\230!\360\010\000\t\031\230\001\330\010\016\210b\320\020#\2401\240D\250\t\260\021\260!\330\010\025\220Q\320\004 \240\001\360\010\000\t\031\230\001\330\010\016\210b\320\020\"\240!\2404\240y\260\001\260\021\330\010\025\220Q\320\004!\240\021\360\010\000\t\032\230\021\330\010\016\210b\320\020$\240A\240T\250\031\260!\2601\330\010\017\210q\320\004\032\230!\360\010\000\t\032\230\021\330\010\016\210b\220\r\230Q\230d\240)\2501\250A\330\010\017\210q\320\004\032\230!\360\010\000\t\031\230\001\330\010\016\210b\220\r\230Q\230d\240)\2501\250A\330\010\017\210q\320\004\032\230!\360\n\000\t\031\230\001\330\010\016\210b\320\020 \240\001\240\024\240Y\250f\260A\260Q\330\010\017\210x\220q\230\006\230a\320\004\032\230!\360\010\000\t\032\230\021\330\010\016\210b\220\016\230a\230t\2409\250A\250Q\330\010\017\210q\320\004\032\230!\360\010\000\t\031\230\001\330\010\016\210b\220\016\230a\230t\2409\250A\250Q\330\010\017\210q\320\004\032\230!\360\n\000\t\031\230\001\330\010\016\210b\320\020!\240\021\240$\240i\250v\260Q\260a\330\010\017\210x\220q\230\006\230a\320\004\032\230!\360\010\000\t\031\230\001\330\010\016\210b\220\017\230q\240\004\240I\250Q\250a\330\010\032\230!\330\010\027\220x\230q\240\006\240a\240q\330\010\035\230Q\330\010\027\220x\230q\240\006\240a\240q\330\010\034\230A\330\010\027\220x\230q\240\006\240a\240q\330\010\016\210b\220\014\230A\230T\240\031\250&\260\007\260z\300\021\330\010\036\230a\230u\240A\240V\2504\250u\260E\270\021\270!\330\010\036\230a\230x\240q\250\003\2504\250u\260E\270\021\270!\330\010\036\230a\230w\240a\240t\2504\250u\260E\270\021\270!\330\010\020\220\006\220i\230q\320\004\030\230\001\360\010\000\t\017\210b\220\017\230q\240\001\240\024\240Q\330\010\017\210q\320\004&\240f\250F\260!\360\010\000\016\025\220F\230\"\320\034,\250A\250[\270\004\270A\320\000\036\230f\320$8\270\001""\360\010\000\005\031\230\001\330\004\n\210\"\210O\2301\230F\240&\250\n\260!\2601\330\004\016\210a\330\004\013\2101\320\004&\240h\250a\360\010\000\t\034\2301\330\010\024\220H\230A\230[\250\001\250\021\330\010\033\2307\240#\240Q\240a\330\010\016\210b\320\020+\2501\330\014\020\220\t\230\027\240\001\240\025\240a\330\010\017\210q\320\004\036\230h\240a\360\010\000\016\025\220F\230\"\230M\250\021\250&\260\004\260A\320\004\036\230h\240a\360\010\000\016\025\220F\230\"\230N\250!\2504\250y\270\001\270\021\330\010\017\210q\320\004&\240h\250a\360\010\000\t\027\220a\220t\2309\240A\320\004&\240h\250a\360\010\000\t\037\320\036/\250q\330\010\016\210b\320\020)\250\021\330\020\024\220I\230V\2401\240A\330\010\026\220h\230a\230|\2501\250A\330\010\016\210b\320\020#\2401\330\020\024\220I\230V\240<\250q\330\010 \240\001\240\032\2501\250C\250t\2605\270\005\270Q\270a\330\010\017\210q\320\004\032\230(\240!\360\010\000\t\033\230!\330\010\016\210h\220a\220u\230A\230Q\330\010\016\210b\220\017\230q\240\004\240I\250Q\200\001\330\r\016\330\r\016\330\016\017\330\017\020\330\005\006\360\010\000\005\033\230!\330\004\016\210h\220a\220y\240\001\240\021\330\004\030\230\n\240!\2409\250J\260a\330\0041\260\021\330\0041\260\021\330\0041\260\021\330\004\024\220H\230A\330\004\007\200y\220\007\220v\230U\240!\330\004\007\200y\220\007\220v\230U\240!\330\004\013\2102\320\r#\2401\240J\250d\260$\260d\270!\330\t\027\320\027'\240q\250\013\2601\320\004+\250;\260i\270q\360\010\000\t#\240(\250!\330\010\037\230q\330\010\016\210b\220\017\230q\240\001\240\024\240Y\250g\260Q\260a\330\010\017\210q\320\004.\250m\2701\360\010\000\t#\240(\250!\330\010\"\240!\330\010\016\210b\320\020\"\240!\2401\240D\250\t\260\027\270\001\270\021\330\010\017\210q\320\004\036\230n\250I\260Q\360\010\000\t\037\230h\240a\240q\330\010\031\230\026\230s\240!\2404\240q\250\001\330\010\037\230y\250\003\2501\250A\330\010\013\2105\220\003\2201\330\021\030\230\006\230b\240\r\250Q\330\020\024\220A\330\020\021\220\024\220Y\230a\230w\240a\340\021\030\230\006""\230b\320 7\260q\330\020\024\220I\230Q\330\020\021\220\024\220Y\230a\230w\240a\330\010\036\230a\230t\2401\330\010\020\220\006\220a\320\000\031\230\021\360\010\000\005\033\230!\330\004\n\210\"\320\014\037\230q\240\001\240\021\330\004\013\2101\320\004\032\230!\340\010\017\320\017\037\230q\240\003\2401\240A\320\004\027\220q\360\010\000\t\020\210|\2301\230D\240\001\320\004\027\220q\360\010\000\t\020\320\017#\2401\240D\250\001\320\004\032\230!\360\010\000\t \230q\330\010#\2401\330\010#\2401\340\010\020\220\001\220\025\220a\330\r\024\220F\230\"\320\034-\250Q\330\014\020\220\t\230\021\230&\240\001\240\030\250\021\250(\260!\330\010\020\220\001\320\021+\2501\330\010\036\230l\250!\2501\330\010\036\230l\250!\2501\330\010\036\230f\240A\240Q\330\010\020\220\006\220g\230W\240A\320\004\027\220q\360\010\000\t\034\2304\230q\330\010#\2404\240q\330\010\037\230y\250\003\2501\250A\330\010\017\210z\230\034\240Q\240f\250A\250Y\260a\260w\270a\330\010\013\2105\220\007\320\027,\250D\260\n\270!\330\010\013\2104\210x\220s\320\032,\250D\260\n\270!\330\010\017\210q\320\004\027\220q\340\010\013\2104\210v\220W\230A\340\010\025\220[\240\004\240J\250a\330\010\016\210b\220\002\220!\330\014\022\220$\220k\240\021\240!\330\014\020\220\007\220q\230\001\330\014\021\220\021\320\004\027\220q\340\010\013\2104\210v\220W\230A\330\010\032\230!\330\010\031\230\024\230Z\240q\340\010\014\210E\220\025\220a\220q\330\014\022\220$\220k\240\021\240!\330\014\024\220D\230\004\230A\230Q\330\014\021\220\027\230\002\230%\230q\330\010\017\210q\200\017\210q\360\010\000\005\014\2109\220A\320\000\027\220q\360\010\000\005\034\2309\240C\240q\250\001\330\t\020\220\006\220b\320\030)\250\021\250!\2507\260!\330\004\013\2101\320\004\027\220q\360\010\000\t\020\210}\230A\230T\240\021\320\004\037\230q\360\010\000\t\031\230\001\330\r\024\220F\230\"\320\0342\260!\2604\260y\300\001\300\021\330\010\025\220Q\320\004\027\220q\360\010\000\016\025\220F\230\"\230I\240Q\240a\240t\2501\320\004\032\230!\360\010\000\t \230q\330\r\024\220F\230\"\320""\034-\250Q\250d\260)\2701\270A\330\010\017\210q\320\004\027\220q\360\010\000\t\020\320\017 \240\001\240\024\240Q\200\001\330\027\030\330\004\017\210q\330\005\006\360\010\000\005\014\210?\230!\230:\240Q\320\004\027\220q\360\010\000\t\020\210~\230Q\230d\240!\320\000\"\240-\250q\360\010\000\005\031\230\r\240Q\240h\250a\330\004\013\2109\220F\230\"\230G\2401\320\004\027\220q\360\010\000\t\036\230T\240\021\330\r\024\220F\230\"\230N\250!\2501\250D\260\001\330\010\013\2108\2201\220G\2304\230z\250\021\320\004)\250\036\260q\340\010\035\230T\240\021\330\010\017\320\017&\240a\240y\260\001\200\001\330\027\030\330\022\023\330\021\022\330\004\017\210q\330\005\006\360\010\000\005\014\210?\230!\230:\240Z\250x\260q\320\000\030\320\030(\250\010\260\001\360\010\000\005\014\210<\220q\230\006\230a\320\004\037\230q\360\010\000\t\033\230!\330\010\036\230a\330\r\024\220F\230\"\320\0344\260A\330\014\020\220\t\230\021\230&\240\001\240\021\330\010\017\320\017 \240\001\240\026\240v\250Q\320\004\037\230q\360\010\000\t\033\230!\330\010\036\230a\330\r\024\220F\230\"\320\0347\260q\330\014\020\220\t\230\021\230&\240\001\240\021\330\010\017\320\017 \240\001\240\026\240v\250Q\320\000\027\220q\360\010\000\005\027\220a\330\004\032\230!\330\t\020\220\006\220b\320\030+\2501\250A\250V\2601\260A\330\004\013\320\013\034\230A\230S\240\006\240a\320\004\027\220q\360\010\000\t\020\210\177\230a\230t\2401\320\004\031\230\021\360\010\000\t\030\220q\330\010\016\210b\320\020\"\240!\2401\240D\250\t\260\021\260!\330\010\017\210q\320\004\031\230\021\360\010\000\t\030\220q\330\010\016\210b\220\017\230q\240\004\240I\250Q\250a\330\010\017\210q\320\000\031\230\021\360\010\000\005\030\220q\330\004\032\230!\330\004\n\210\"\320\014\037\230q\240\001\240\031\250!\2501\330\004\014\210I\220Q\320\004\027\220q\360\010\000\t\032\230\026\230s\240!\2404\240q\250\001\330\r\024\220F\230\"\230L\250\001\250\024\250Y\260a\260t\2701\330\010\036\230a\230t\2401\330\010\017\210q\320\004\037\230q\360\010\000\t \230y\250\003\2501\250A\330\r\024""\220F\230\"\320\0342\260!\330\014\020\220\t\230\021\230'\240\021\330\010\017\210q\320\004\037\230q\360\010\000\t \230y\250\003\2501\250A\330\r\024\220F\230\"\320\0345\260Q\330\014\020\220\t\230\021\230'\240\021\330\010\017\210q\320\004\031\230\021\340\010\013\210<\220r\230\022\2304\230t\240:\250Q\330\014\023\220>\240\021\240#\240Q\240a\330\010\017\210t\320\023$\240A\320\004\032\230!\360\010\000\t\032\230\026\230s\240!\2401\330\r\024\220F\230\"\320\034,\250B\250d\260)\2701\270D\300\001\330\010\017\210q\320\004\032\230!\360\010\000\t\032\230\026\230s\240!\2401\330\r\024\220F\230\"\320\034-\250Q\330\014\020\220\t\230\021\230$\230a\330\010\017\210q\320\004\032\230!\360\010\000\t\032\230\026\230s\240!\2401\330\r\024\220F\230\"\320\034-\250Q\250d\260)\2701\270D\300\001\330\010\017\210q\320\004\032\230!\360\010\000\t\032\230\026\230s\240!\2401\330\010\016\210b\320\020$\240A\330\014\020\220\t\230\021\230$\230a\330\010\017\210q\320\004(\250\n\260!\360\010\000\t\032\230\026\230s\240!\2404\240q\250\001\330\010\037\230y\250\003\2501\250A\330\r\024\220F\230\"\320\0343\2601\330\014\020\220\t\230\024\230Q\330\014\r\210T\220\031\230!\2307\240!\330\010\036\230a\230t\2401\330\010\020\220\006\220a\320\004#\240>\260\021\340\010\017\210s\220!\2206\230\023\230A\320\004\032\230!\340\010\017\210t\2201\220C\220q\230\001\320\004\032\230!\360\010\000\t\020\210t\2204\220y\240\001\320\004\031\230\021\340\010\017\210t\2205\230\001\230\021\320\004\032\230!\340\010\017\210u\220E\230\023\230A\320\000\030\230\010\240\001\360\010\000\005\010\200v\210R\210r\220\023\220F\230\"\230C\230v\240R\240q\330\004\n\210\"\210L\230\001\230\021\320\004\037\230v\240\\\260\026\260v\270Q\360\010\000\t\031\230\001\330\010\r\210Z\220q\230\006\230l\250&\260\001\330\r\027\220q\230\006\230l\250&\260\001\330\010\031\230\026\230s\240!\2401\330\r\024\220F\230\"\230N\250!\330\014\020\220\t\230\027\240\005\240Q\240d\250!\330\010\036\230a\230t\2401\330\010\017\210q\320\004\037\230w\240j\260\001\360\010\000\t\037\230k\250\023""\250A\250Q\330\r\024\220F\230\"\320\034/\250q\330\014\020\220\t\230\026\230q\240\004\240A\330\010\036\230a\230t\2401\330\010\017\210q\320\004'\240w\250n\270A\360\010\000\t\037\230a\330\010\016\210b\320\020)\250\021\330\014\020\220\t\230\024\230Y\240a\240q\330\010\017\210q\320\000'\240x\250q\360\010\000\005\013\210\"\320\014\"\240!\2401\320\000'\240x\250q\360\010\000\005\013\210\"\320\014#\2401\240A\320\004'\240x\250q\360\010\000\t\034\2301\330\010\024\220H\230A\230[\250\001\250\021\330\010\031\230\026\230s\240!\2401\330\010\016\210b\320\020)\250\021\330\014\020\220\t\230\027\240\001\240\024\240Q\330\010\017\210q\320\004\027\220x\230q\360\010\000\t\033\230!\330\010\034\230A\330\010\032\230!\330\010\030\230\001\330\010\016\210h\220a\220u\230A\230Q\330\010\026\220h\230a\230v\240Q\240c\250\036\260q\270\001\330\010\016\210b\320\020#\2401\240D\250\t\260\026\260q\270\010\300\010\310\001\310\021\330\010\013\2104\210v\220W\230A\330\010\017\210v\220Q\220a\320\004'\240x\250q\360\010\000\016\025\220F\230\"\320\0340\260\001\260\024\260Y\270a\320\004\037\230x\240q\360\010\000\016\025\220F\230\"\230N\250!\2506\260\024\260Q\320\004\037\230x\240q\360\010\000\t\017\210b\320\020\"\240!\2401\240D\250\t\260\021\320\004\032\230!\360\010\000\t \230y\250\003\2501\250A\330\r\024\220F\230\"\230L\250\001\250\024\250Y\260a\260w\270a\330\010\017\210q\320\004'\240y\260\001\360\010\000\016\025\220F\230\"\320\0342\260!\2604\260y\300\001\320\004'\240y\260\001\360\016\000\t\017\210b\320\020(\250\001\250\021\250$\250i\260q\320\000\021\220\030\230\021\360\010\000\005\010\200y\220\001\220\025\220m\2407\250!\330\004\007\200y\220\001\220\025\220m\2407\250!\330\004\007\200y\220\001\220\025\220m\2407\250!\330\004\007\200y\220\001\220\025\220m\2407\250!\330\004\007\200y\220\001\220\025\220m\2407\250!\330\004\007\200y\220\001\220\025\220m\2407\250!\330\004\007\200y\220\001\220\025\220m\2407\250!\330\004\007\200y\220\001\220\025\220m\2407\250!\330\004\007\200y\220\001\220\025\220m\2407\250!\330\004\007\200y""\220\001\220\025\220m\2407\250!\330\004\007\200y\220\001\220\025\220m\2407\250!\330\004\007\200y\220\001\220\025\220m\2407\250!\330\004\n\210)\2201\220A\320\004\032\230!\360\010\000\t\020\210y\230\001\230\026\230s\240!\320\004'\240y\260\001\360\010\000\t\032\230\026\230s\240!\2404\240q\250\001\330\r\024\220F\230\"\320\0342\260!\330\014\020\220\t\230\024\230Y\240a\240t\2501\330\010\036\230a\230t\2401\330\010\017\210qMPI4PY_RC_";
    PyObject *data = NULL;
    CYTHON_UNUSED_VAR(__Pyx_DecompressString);
    #endif
    PyObject **stringtab = __pyx_mstate->__pyx_string_tab;
    Py_ssize_t pos = 0;
    for (int i = 0; i < 2010; i++) {
      Py_ssize_t bytes_length = index[i].length;
      PyObject *string = PyUnicode_DecodeUTF8(bytes + pos, bytes_length, NULL);
      if (likely(string) && i >= 237) PyUnicode_InternInPlace(&string);
      if (unlikely(!string)) {
        Py_XDECREF(data);
        __PYX_ERR(0, 1, __pyx_L1_error)
      }
      stringtab[i] = string;
      pos += bytes_length;
    }
    for (int i = 2010; i < 2557; i++) {
      Py_ssize_t bytes_length = index[i].length;
      PyObject *string = PyBytes_FromStringAndSize(bytes + pos, bytes_length);
      stringtab[i] = string;
      pos += bytes_length;
      if (unlikely(!string)) {
        Py_XDECREF(data);
        __PYX_ERR(0, 1, __pyx_L1_error)
      }
    }
    Py_XDECREF(data);
    for (Py_ssize_t i = 0; i < 2557; i++) {
      if (unlikely(PyObject_Hash(stringtab[i]) == -1)) {
        __PYX_ERR(0, 1, __pyx_L1_error)
      }
    }
    #if CYTHON_IMMORTAL_CONSTANTS
    {
      PyObject **table = stringtab + 2010;
      for (Py_ssize_t i=0; i<547; ++i) {
        #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
        #if PY_VERSION_HEX < 0x030E0000
        if (_Py_IsOwnedByCurrentThread(table[i]) && Py_REFCNT(table[i]) == 1)
        #else
        if (PyUnstable_Object_IsUniquelyReferenced(table[i]))
        #endif
        {
          Py_SET_REFCNT(table[i], _Py_IMMORTAL_REFCNT_LOCAL);
        }
        #else
        Py_SET_REFCNT(table[i], _Py_IMMORTAL_INITIAL_REFCNT);
        #endif
      }
    }
    #endif
  }
  {
    PyObject **numbertab = __pyx_mstate->__pyx_number_tab + 0;
    int8_t const cint_constants_1[] = {0,-1,1,2};
    int32_t const cint_constants_4[] = {32768L,262144L};
    for (int i = 0; i < 6; i++) {
      numbertab[i] = PyLong_FromLong((i < 4 ? cint_constants_1[i - 0] : cint_constants_4[i - 4]));
      if (unlikely(!numbertab[i])) __PYX_ERR(0, 1, __pyx_L1_error)
    }
  }
  #if CYTHON_IMMORTAL_CONSTANTS
  {
    PyObject **table = __pyx_mstate->__pyx_number_tab;
    for (Py_ssize_t i=0; i<6; ++i) {
      #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
      #if PY_VERSION_HEX < 0x030E0000
      if (_Py_IsOwnedByCurrentThread(table[i]) && Py_REFCNT(table[i]) == 1)
      #else
      if (PyUnstable_Object_IsUniquelyReferenced(table[i]))
      #endif
      {
        Py_SET_REFCNT(table[i], _Py_IMMORTAL_REFCNT_LOCAL);
      }
      #else
      Py_SET_REFCNT(table[i], _Py_IMMORTAL_INITIAL_REFCNT);
      #endif
    }
  }
  #endif
  return 0;
  __pyx_L1_error:;
  return -1;
}
/* #### Code section: init_codeobjects ### */
typedef struct {
    unsigned int argcount : 4;
    unsigned int num_posonly_args : 2;
    unsigned int num_kwonly_args : 1;
    unsigned int nlocals : 5;
    unsigned int flags : 10;
    unsigned int first_line : 12;
} __Pyx_PyCode_New_function_description;
/* NewCodeObj.proto */
static PyObject* __Pyx_PyCode_New(
        const __Pyx_PyCode_New_function_description descr,
        PyObject * const *varnames,
        PyObject *filename,
        PyObject *funcname,
        PyObject *line_table,
        PyObject *tuple_dedup_map
);


static int __Pyx_CreateCodeObjects(__pyx_mstatetype *__pyx_mstate) {
  PyObject* tuple_dedup_map = PyDict_New();
  if (unlikely(!tuple_dedup_map)) return -1;
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 130};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_ob, __pyx_mstate->__pyx_n_u_buf};
    __pyx_mstate_global->__pyx_codeobj_tab[0] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_msgpickle_pxi, __pyx_mstate->__pyx_n_u_buffer_callback, __pyx_mstate->__pyx_kp_b_iso88591_A_1D_1_3e5_1_7_1_1_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[0])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 362};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_status};
    __pyx_mstate_global->__pyx_codeobj_tab[1] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_atimport_pxi, __pyx_mstate->__pyx_n_u_set_abort_status, __pyx_mstate->__pyx_kp_b_iso88591_1_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[1])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 131};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_nbytes, __pyx_mstate->__pyx_n_u_clear, __pyx_mstate->__pyx_n_u_addr, __pyx_mstate->__pyx_n_u_size_2, __pyx_mstate->__pyx_n_u_ob, __pyx_mstate->__pyx_n_u_buf};
    __pyx_mstate_global->__pyx_codeobj_tab[2] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_asbuffer_pxi, __pyx_mstate->__pyx_n_u_allocate, __pyx_mstate->__pyx_kp_b_iso88591_A_1_q_5_AQ_7_1_Qa_3gT_vS_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[2])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 146};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_obj, __pyx_mstate->__pyx_n_u_readonly, __pyx_mstate->__pyx_n_u_flags, __pyx_mstate->__pyx_n_u_buf};
    __pyx_mstate_global->__pyx_codeobj_tab[3] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_asbuffer_pxi, __pyx_mstate->__pyx_n_u_frombuffer, __pyx_mstate->__pyx_kp_b_iso88591_A_a_4z_Qa_8_5_G1_5_A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[3])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 159};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_address, __pyx_mstate->__pyx_n_u_nbytes, __pyx_mstate->__pyx_n_u_readonly, __pyx_mstate->__pyx_n_u_addr, __pyx_mstate->__pyx_n_u_size_2, __pyx_mstate->__pyx_n_u_buf};
    __pyx_mstate_global->__pyx_codeobj_tab[4] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_asbuffer_pxi, __pyx_mstate->__pyx_n_u_fromaddress, __pyx_mstate->__pyx_kp_b_iso88591_A_a_1_q_5_AQ_Bd_s_AQ_Qa_3gXQ_j_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[4])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 216};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_format, __pyx_mstate->__pyx_n_u_shape};
    __pyx_mstate_global->__pyx_codeobj_tab[5] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_asbuffer_pxi, __pyx_mstate->__pyx_n_u_cast, __pyx_mstate->__pyx_kp_b_iso88591_A_Q_AT_6_A_5_Qa_5_Qha, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[5])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 230};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_order};
    __pyx_mstate_global->__pyx_codeobj_tab[6] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_asbuffer_pxi, __pyx_mstate->__pyx_n_u_tobytes, __pyx_mstate->__pyx_kp_b_iso88591_1_q_AT_E_t5, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[6])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 236};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_obj, __pyx_mstate->__pyx_n_u_buf};
    __pyx_mstate_global->__pyx_codeobj_tab[7] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_asbuffer_pxi, __pyx_mstate->__pyx_n_u_toreadonly, __pyx_mstate->__pyx_kp_b_iso88591_A_4uE_A_e1_Qa_8_5_G1_5_A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[7])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 246};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[8] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_asbuffer_pxi, __pyx_mstate->__pyx_n_u_release, __pyx_mstate->__pyx_kp_b_iso88591_1D_q_A_4wha_3a_HA, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[8])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 45};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[9] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_constant_pxi, __pyx_mstate->__pyx_n_u_reduce, __pyx_mstate->__pyx_kp_b_iso88591_A_t7, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[9])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 95};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[10] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_constant_pxi, __pyx_mstate->__pyx_n_u_reduce, __pyx_mstate->__pyx_kp_b_iso88591_A_t7, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[10])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 145};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[11] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_constant_pxi, __pyx_mstate->__pyx_n_u_reduce, __pyx_mstate->__pyx_kp_b_iso88591_A_t7, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[11])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 137};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_comm, __pyx_mstate->__pyx_n_u_key};
    __pyx_mstate_global->__pyx_codeobj_tab[12] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_commimpl_pxi, __pyx_mstate->__pyx_n_u_comm_lock, __pyx_mstate->__pyx_kp_b_iso88591_Gq_Qd_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[12])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 144};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[13] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_commimpl_pxi, __pyx_mstate->__pyx_n_u_comm_lock_table, __pyx_mstate->__pyx_kp_b_iso88591_1D, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[13])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 65};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_obj};
    __pyx_mstate_global->__pyx_codeobj_tab[14] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_msgpickle_pxi, __pyx_mstate->__pyx_n_u_dumps, __pyx_mstate->__pyx_kp_b_iso88591_A_vQfA, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[14])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 74};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_data};
    __pyx_mstate_global->__pyx_codeobj_tab[15] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_msgpickle_pxi, __pyx_mstate->__pyx_n_u_loads, __pyx_mstate->__pyx_kp_b_iso88591_A_vQfA_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[15])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 83};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_obj};
    __pyx_mstate_global->__pyx_codeobj_tab[16] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_msgpickle_pxi, __pyx_mstate->__pyx_n_u_dumps_oob, __pyx_mstate->__pyx_kp_b_iso88591_A_z, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[16])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 92};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_data, __pyx_mstate->__pyx_n_u_buffers};
    __pyx_mstate_global->__pyx_codeobj_tab[17] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_msgpickle_pxi, __pyx_mstate->__pyx_n_u_loads_oob, __pyx_mstate->__pyx_kp_b_iso88591_A_z_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[17])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1247};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_comm, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_dupcomm};
    __pyx_mstate_global->__pyx_codeobj_tab[18] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_msgpickle_pxi, __pyx_mstate->__pyx_n_u_commctx_intra_2, __pyx_mstate->__pyx_kp_b_iso88591_1_1A_q_IQgYaq_IQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[18])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1259};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_comm, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_low_group, __pyx_mstate->__pyx_n_u_dupcomm, __pyx_mstate->__pyx_n_u_localcomm};
    __pyx_mstate_global->__pyx_codeobj_tab[19] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_msgpickle_pxi, __pyx_mstate->__pyx_n_u_commctx_inter_2, __pyx_mstate->__pyx_kp_b_iso88591_a_1A_Qa_q_IQgYaq_1A_IU_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[19])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 88};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_errorcode, __pyx_mstate->__pyx_n_u_errorclass};
    __pyx_mstate_global->__pyx_codeobj_tab[20] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_ErrorCode_pyx, __pyx_mstate->__pyx_n_u_Get_error_class, __pyx_mstate->__pyx_kp_b_iso88591_81_O1Kq_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[20])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 97};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_errorcode, __pyx_mstate->__pyx_n_u_string, __pyx_mstate->__pyx_n_u_resultlen};
    __pyx_mstate_global->__pyx_codeobj_tab[21] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_ErrorCode_pyx, __pyx_mstate->__pyx_n_u_Get_error_string, __pyx_mstate->__pyx_kp_b_iso88591_HA_A_81HA, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[21])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 107};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_errorclass};
    __pyx_mstate_global->__pyx_codeobj_tab[22] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_ErrorCode_pyx, __pyx_mstate->__pyx_n_u_Add_error_class, __pyx_mstate->__pyx_kp_b_iso88591_q_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[22])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 116};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_errorclass};
    __pyx_mstate_global->__pyx_codeobj_tab[23] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_ErrorCode_pyx, __pyx_mstate->__pyx_n_u_Remove_error_class, __pyx_mstate->__pyx_kp_b_iso88591_xq_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[23])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 123};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_errorclass, __pyx_mstate->__pyx_n_u_errorcode};
    __pyx_mstate_global->__pyx_codeobj_tab[24] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_ErrorCode_pyx, __pyx_mstate->__pyx_n_u_Add_error_code, __pyx_mstate->__pyx_kp_b_iso88591_81_a_1A_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[24])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 132};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_errorcode};
    __pyx_mstate_global->__pyx_codeobj_tab[25] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_ErrorCode_pyx, __pyx_mstate->__pyx_n_u_Remove_error_code, __pyx_mstate->__pyx_kp_b_iso88591_XQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[25])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 139};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_errorcode, __pyx_mstate->__pyx_n_u_string, __pyx_mstate->__pyx_n_u_cstring};
    __pyx_mstate_global->__pyx_codeobj_tab[26] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_ErrorCode_pyx, __pyx_mstate->__pyx_n_u_Add_error_string, __pyx_mstate->__pyx_kp_b_iso88591_M_XQhaq_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[26])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 148};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_errorcode};
    __pyx_mstate_global->__pyx_codeobj_tab[27] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_ErrorCode_pyx, __pyx_mstate->__pyx_n_u_Remove_error_string, __pyx_mstate->__pyx_kp_b_iso88591_xq_1A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[27])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 2, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_ierr};
    __pyx_mstate_global->__pyx_codeobj_tab[28] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Exception_pyx, __pyx_mstate->__pyx_n_u_init, __pyx_mstate->__pyx_kp_b_iso88591_a_5_wa_IQfA, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[28])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 14};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[29] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Exception_pyx, __pyx_mstate->__pyx_n_u_int_2, __pyx_mstate->__pyx_kp_b_iso88591_t5, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[29])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 18};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[30] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Exception_pyx, __pyx_mstate->__pyx_n_u_bool_2, __pyx_mstate->__pyx_kp_b_iso88591_uE_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[30])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 22};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[31] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Exception_pyx, __pyx_mstate->__pyx_n_u_hash, __pyx_mstate->__pyx_kp_b_iso88591_t1Cq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[31])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 2, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 26};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_other};
    __pyx_mstate_global->__pyx_codeobj_tab[32] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Exception_pyx, __pyx_mstate->__pyx_n_u_eq, __pyx_mstate->__pyx_kp_b_iso88591_s_6_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[32])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 2, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 30};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_other};
    __pyx_mstate_global->__pyx_codeobj_tab[33] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Exception_pyx, __pyx_mstate->__pyx_n_u_ne, __pyx_mstate->__pyx_kp_b_iso88591_s_6_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[33])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 2, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 34};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_other};
    __pyx_mstate_global->__pyx_codeobj_tab[34] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Exception_pyx, __pyx_mstate->__pyx_n_u_lt, __pyx_mstate->__pyx_kp_b_iso88591_a_s_6_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[34])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 2, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 38};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_other};
    __pyx_mstate_global->__pyx_codeobj_tab[35] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Exception_pyx, __pyx_mstate->__pyx_n_u_le, __pyx_mstate->__pyx_kp_b_iso88591_a_s_6_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[35])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 2, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 42};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_other};
    __pyx_mstate_global->__pyx_codeobj_tab[36] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Exception_pyx, __pyx_mstate->__pyx_n_u_gt, __pyx_mstate->__pyx_kp_b_iso88591_a_s_6_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[36])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 2, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 46};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_other};
    __pyx_mstate_global->__pyx_codeobj_tab[37] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Exception_pyx, __pyx_mstate->__pyx_n_u_ge, __pyx_mstate->__pyx_kp_b_iso88591_a_s_6_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[37])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 50};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[38] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Exception_pyx, __pyx_mstate->__pyx_n_u_repr, __pyx_mstate->__pyx_kp_b_iso88591_q_1A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[38])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 54};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[39] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Exception_pyx, __pyx_mstate->__pyx_n_u_str_2, __pyx_mstate->__pyx_kp_b_iso88591_r_4t_Q_Qa_t_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[39])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 60};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_errorcode};
    __pyx_mstate_global->__pyx_codeobj_tab[40] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Exception_pyx, __pyx_mstate->__pyx_n_u_Get_error_code, __pyx_mstate->__pyx_kp_b_iso88591_Q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[40])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 67};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_errorcode, __pyx_mstate->__pyx_n_u_errorclass};
    __pyx_mstate_global->__pyx_codeobj_tab[41] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Exception_pyx, __pyx_mstate->__pyx_n_u_Get_error_class, __pyx_mstate->__pyx_kp_b_iso88591_Q_a_b_q_1A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[41])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 76};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_errorcode, __pyx_mstate->__pyx_n_u_string, __pyx_mstate->__pyx_n_u_resultlen};
    __pyx_mstate_global->__pyx_codeobj_tab[42] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Exception_pyx, __pyx_mstate->__pyx_n_u_Get_error_string, __pyx_mstate->__pyx_kp_b_iso88591_Q_Q_b_HAQ_xq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[42])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 86};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[43] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Exception_pyx, __pyx_mstate->__pyx_n_u_error_code_2, __pyx_mstate->__pyx_kp_b_iso88591_A_t, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[43])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 91};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[44] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Exception_pyx, __pyx_mstate->__pyx_n_u_error_class, __pyx_mstate->__pyx_kp_b_iso88591_A_t_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[44])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 96};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[45] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Exception_pyx, __pyx_mstate->__pyx_n_u_error_string, __pyx_mstate->__pyx_kp_b_iso88591_A_t_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[45])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 63};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[46] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_reduce, __pyx_mstate->__pyx_kp_b_iso88591_A_aq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[46])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 71};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_handle};
    __pyx_mstate_global->__pyx_codeobj_tab[47] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_fromhandle, __pyx_mstate->__pyx_kp_b_iso88591_A_z_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[47])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 78};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[48] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_free, __pyx_mstate->__pyx_kp_b_iso88591_a_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[48])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 87};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_size_2};
    __pyx_mstate_global->__pyx_codeobj_tab[49] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Get_size, __pyx_mstate->__pyx_kp_b_iso88591_a_b_q_IQa_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[49])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 102};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_lb_2, __pyx_mstate->__pyx_n_u_extent};
    __pyx_mstate_global->__pyx_codeobj_tab[50] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Get_extent, __pyx_mstate->__pyx_kp_b_iso88591_A_L_b_Qd_1D_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[50])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 134};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_datatype};
    __pyx_mstate_global->__pyx_codeobj_tab[51] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Dup, __pyx_mstate->__pyx_kp_b_iso88591_Q_3at1A_b_AT_81_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[51])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 144};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_count, __pyx_mstate->__pyx_n_u_datatype};
    __pyx_mstate_global->__pyx_codeobj_tab[52] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Create_contiguous, __pyx_mstate->__pyx_kp_b_iso88591_XQ_3at1A_b_Q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[52])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 154};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_count, __pyx_mstate->__pyx_n_u_blocklength, __pyx_mstate->__pyx_n_u_stride, __pyx_mstate->__pyx_n_u_datatype};
    __pyx_mstate_global->__pyx_codeobj_tab[53] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Create_vector, __pyx_mstate->__pyx_kp_b_iso88591_A_3at1A_b_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[53])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 169};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_count, __pyx_mstate->__pyx_n_u_blocklength, __pyx_mstate->__pyx_n_u_stride, __pyx_mstate->__pyx_n_u_datatype};
    __pyx_mstate_global->__pyx_codeobj_tab[54] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Create_hvector, __pyx_mstate->__pyx_kp_b_iso88591_A_3at1A_b_q_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[54])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 184};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_blocklengths, __pyx_mstate->__pyx_n_u_displacements, __pyx_mstate->__pyx_n_u_count, __pyx_mstate->__pyx_n_u_iblen, __pyx_mstate->__pyx_n_u_idisp, __pyx_mstate->__pyx_n_u_datatype};
    __pyx_mstate_global->__pyx_codeobj_tab[55] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Create_indexed, __pyx_mstate->__pyx_kp_b_iso88591_A_1_3at1A_b_7_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[55])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 202};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_blocklengths, __pyx_mstate->__pyx_n_u_displacements, __pyx_mstate->__pyx_n_u_count, __pyx_mstate->__pyx_n_u_iblen, __pyx_mstate->__pyx_n_u_idisp, __pyx_mstate->__pyx_n_u_datatype};
    __pyx_mstate_global->__pyx_codeobj_tab[56] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Create_hindexed, __pyx_mstate->__pyx_kp_b_iso88591_A_xq_awaq_q_3at1A_b_7_XQ_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[56])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 223};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_blocklength, __pyx_mstate->__pyx_n_u_displacements, __pyx_mstate->__pyx_n_u_count, __pyx_mstate->__pyx_n_u_idisp, __pyx_mstate->__pyx_n_u_datatype};
    __pyx_mstate_global->__pyx_codeobj_tab[57] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Create_indexed_block, __pyx_mstate->__pyx_kp_b_iso88591_A_q_3at1A_b_q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[57])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 240};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_blocklength, __pyx_mstate->__pyx_n_u_displacements, __pyx_mstate->__pyx_n_u_count, __pyx_mstate->__pyx_n_u_idisp, __pyx_mstate->__pyx_n_u_datatype};
    __pyx_mstate_global->__pyx_codeobj_tab[58] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Create_hindexed_block, __pyx_mstate->__pyx_kp_b_iso88591_A_1_3at1A_b_0_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[58])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 9, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 259};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_blocklengths, __pyx_mstate->__pyx_n_u_displacements, __pyx_mstate->__pyx_n_u_datatypes, __pyx_mstate->__pyx_n_u_count, __pyx_mstate->__pyx_n_u_iblen, __pyx_mstate->__pyx_n_u_idisp, __pyx_mstate->__pyx_n_u_ptype, __pyx_mstate->__pyx_n_u_datatype};
    __pyx_mstate_global->__pyx_codeobj_tab[59] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Create_struct, __pyx_mstate->__pyx_kp_b_iso88591_A_1_xq_awaq_q_A_q_3aq_b_7_XQ_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[59])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 10, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 286};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sizes, __pyx_mstate->__pyx_n_u_subsizes, __pyx_mstate->__pyx_n_u_starts, __pyx_mstate->__pyx_n_u_order, __pyx_mstate->__pyx_n_u_ndims, __pyx_mstate->__pyx_n_u_isizes, __pyx_mstate->__pyx_n_u_isubsizes, __pyx_mstate->__pyx_n_u_istarts, __pyx_mstate->__pyx_n_u_datatype};
    __pyx_mstate_global->__pyx_codeobj_tab[60] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Create_subarray, __pyx_mstate->__pyx_kp_b_iso88591_A_A_81IQgQa_81JgQa_81JgQa_3at1A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[60])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {8, 0, 0, 14, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 313};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_size_2, __pyx_mstate->__pyx_n_u_rank, __pyx_mstate->__pyx_n_u_gsizes, __pyx_mstate->__pyx_n_u_distribs, __pyx_mstate->__pyx_n_u_dargs, __pyx_mstate->__pyx_n_u_psizes, __pyx_mstate->__pyx_n_u_order, __pyx_mstate->__pyx_n_u_ndims, __pyx_mstate->__pyx_n_u_igsizes, __pyx_mstate->__pyx_n_u_idistribs, __pyx_mstate->__pyx_n_u_idargs, __pyx_mstate->__pyx_n_u_ipsizes, __pyx_mstate->__pyx_n_u_datatype};
    __pyx_mstate_global->__pyx_codeobj_tab[61] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Create_darray, __pyx_mstate->__pyx_kp_b_iso88591_A_q_81IQgQa_81JgQa_81JgQa_81JgQa, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[61])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 344};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_value, __pyx_mstate->__pyx_n_u_index, __pyx_mstate->__pyx_n_u_datatype};
    __pyx_mstate_global->__pyx_codeobj_tab[62] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Get_value_index, __pyx_mstate->__pyx_kp_b_iso88591_A_3aq_b_y_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[62])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 361};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_r, __pyx_mstate->__pyx_n_u_datatype};
    __pyx_mstate_global->__pyx_codeobj_tab[63] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Create_f90_integer, __pyx_mstate->__pyx_kp_b_iso88591_A_q_3aq_b_1Cq_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[63])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 370};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_p, __pyx_mstate->__pyx_n_u_r, __pyx_mstate->__pyx_n_u_datatype};
    __pyx_mstate_global->__pyx_codeobj_tab[64] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Create_f90_real, __pyx_mstate->__pyx_kp_b_iso88591_A_0_3aq_b_Cq_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[64])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 379};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_p, __pyx_mstate->__pyx_n_u_r, __pyx_mstate->__pyx_n_u_datatype};
    __pyx_mstate_global->__pyx_codeobj_tab[65] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Create_f90_complex, __pyx_mstate->__pyx_kp_b_iso88591_A_381_3aq_b_1Cs_81_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[65])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 388};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_typeclass, __pyx_mstate->__pyx_n_u_size_2, __pyx_mstate->__pyx_n_u_datatype};
    __pyx_mstate_global->__pyx_codeobj_tab[66] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Match_size, __pyx_mstate->__pyx_kp_b_iso88591_A_6ha_3aq_b_1KvQha_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[66])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 400};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[67] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Commit, __pyx_mstate->__pyx_kp_b_iso88591_b_q_Q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[67])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 407};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_save};
    __pyx_mstate_global->__pyx_codeobj_tab[68] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Free, __pyx_mstate->__pyx_kp_b_iso88591_a_Q_b_Qat1_81G4z, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[68])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 418};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_lb_2, __pyx_mstate->__pyx_n_u_extent, __pyx_mstate->__pyx_n_u_datatype};
    __pyx_mstate_global->__pyx_codeobj_tab[69] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Create_resized, __pyx_mstate->__pyx_kp_b_iso88591_3at1A_b_XQha_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[69])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 429};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_lb_2, __pyx_mstate->__pyx_n_u_extent};
    __pyx_mstate_global->__pyx_codeobj_tab[70] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Get_true_extent, __pyx_mstate->__pyx_kp_b_iso88591_L_b_aq_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[70])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 465};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_combiner, __pyx_mstate->__pyx_n_u_ni, __pyx_mstate->__pyx_n_u_na, __pyx_mstate->__pyx_n_u_nc, __pyx_mstate->__pyx_n_u_nd};
    __pyx_mstate_global->__pyx_codeobj_tab[71] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Get_envelope, __pyx_mstate->__pyx_kp_b_iso88591_a_A_HHHA_b_q_at1D_Qa_D_D, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[71])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 22, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 480};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_combiner, __pyx_mstate->__pyx_n_u_ni, __pyx_mstate->__pyx_n_u_na, __pyx_mstate->__pyx_n_u_nc, __pyx_mstate->__pyx_n_u_nd, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_a, __pyx_mstate->__pyx_n_u_c, __pyx_mstate->__pyx_n_u_d, __pyx_mstate->__pyx_n_u_unused1, __pyx_mstate->__pyx_n_u_unused2, __pyx_mstate->__pyx_n_u_unused3, __pyx_mstate->__pyx_n_u_unused4, __pyx_mstate->__pyx_n_u_integers, __pyx_mstate->__pyx_n_u_addresses, __pyx_mstate->__pyx_n_u_counts, __pyx_mstate->__pyx_n_u_datatypes, __pyx_mstate->__pyx_n_u_k, __pyx_mstate->__pyx_n_u_k, __pyx_mstate->__pyx_n_u_k, __pyx_mstate->__pyx_n_u_k};
    __pyx_mstate_global->__pyx_codeobj_tab[72] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Get_contents, __pyx_mstate->__pyx_kp_b_iso88591_A_A_HHHA_b_q_at1D_Qa_a_1_A_q_xq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[72])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 511};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[73] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_decode, __pyx_mstate->__pyx_kp_b_iso88591_a_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[73])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 15, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 543};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_inbuf, __pyx_mstate->__pyx_n_u_outbuf, __pyx_mstate->__pyx_n_u_position, __pyx_mstate->__pyx_n_u_comm, __pyx_mstate->__pyx_n_u_lb_2, __pyx_mstate->__pyx_n_u_extent, __pyx_mstate->__pyx_n_u_ibptr, __pyx_mstate->__pyx_n_u_obptr, __pyx_mstate->__pyx_n_u_iblen, __pyx_mstate->__pyx_n_u_oblen, __pyx_mstate->__pyx_n_u_unused1, __pyx_mstate->__pyx_n_u_unused2, __pyx_mstate->__pyx_n_u_icount, __pyx_mstate->__pyx_n_u_ocount};
    __pyx_mstate_global->__pyx_codeobj_tab[74] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Pack, __pyx_mstate->__pyx_kp_b_iso88591_A_L_b_Qd_1D_k_z_7_1_z_7_1_c_b_84, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[74])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 15, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 569};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_inbuf, __pyx_mstate->__pyx_n_u_position, __pyx_mstate->__pyx_n_u_outbuf, __pyx_mstate->__pyx_n_u_comm, __pyx_mstate->__pyx_n_u_lb_2, __pyx_mstate->__pyx_n_u_extent, __pyx_mstate->__pyx_n_u_ibptr, __pyx_mstate->__pyx_n_u_obptr, __pyx_mstate->__pyx_n_u_iblen, __pyx_mstate->__pyx_n_u_oblen, __pyx_mstate->__pyx_n_u_unused1, __pyx_mstate->__pyx_n_u_unused2, __pyx_mstate->__pyx_n_u_icount, __pyx_mstate->__pyx_n_u_ocount};
    __pyx_mstate_global->__pyx_codeobj_tab[75] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Unpack, __pyx_mstate->__pyx_kp_b_iso88591_A_L_b_Qd_1D_k_z_7_1_z_7_1_c_b_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[75])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 595};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_count, __pyx_mstate->__pyx_n_u_comm, __pyx_mstate->__pyx_n_u_size_2};
    __pyx_mstate_global->__pyx_codeobj_tab[76] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Pack_size, __pyx_mstate->__pyx_kp_b_iso88591_A_a_b_q_4q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[76])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 16, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 614};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_datarep, __pyx_mstate->__pyx_n_u_inbuf, __pyx_mstate->__pyx_n_u_outbuf, __pyx_mstate->__pyx_n_u_position, __pyx_mstate->__pyx_n_u_cdatarep, __pyx_mstate->__pyx_n_u_lb_2, __pyx_mstate->__pyx_n_u_extent, __pyx_mstate->__pyx_n_u_ibptr, __pyx_mstate->__pyx_n_u_obptr, __pyx_mstate->__pyx_n_u_iblen, __pyx_mstate->__pyx_n_u_oblen, __pyx_mstate->__pyx_n_u_unused1, __pyx_mstate->__pyx_n_u_unused2, __pyx_mstate->__pyx_n_u_icount, __pyx_mstate->__pyx_n_u_ocount};
    __pyx_mstate_global->__pyx_codeobj_tab[77] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Pack_external, __pyx_mstate->__pyx_kp_b_iso88591_A_a_9AQ_L_b_Qd_1D_k_z_7_1_z_7_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[77])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 16, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 644};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_datarep, __pyx_mstate->__pyx_n_u_inbuf, __pyx_mstate->__pyx_n_u_position, __pyx_mstate->__pyx_n_u_outbuf, __pyx_mstate->__pyx_n_u_cdatarep, __pyx_mstate->__pyx_n_u_lb_2, __pyx_mstate->__pyx_n_u_extent, __pyx_mstate->__pyx_n_u_ibptr, __pyx_mstate->__pyx_n_u_obptr, __pyx_mstate->__pyx_n_u_iblen, __pyx_mstate->__pyx_n_u_oblen, __pyx_mstate->__pyx_n_u_unused1, __pyx_mstate->__pyx_n_u_unused2, __pyx_mstate->__pyx_n_u_icount, __pyx_mstate->__pyx_n_u_ocount};
    __pyx_mstate_global->__pyx_codeobj_tab[78] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Unpack_external, __pyx_mstate->__pyx_kp_b_iso88591_A_a_9AQ_L_b_Qd_1D_k_z_7_1_z_7_1_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[78])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 674};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_datarep, __pyx_mstate->__pyx_n_u_count, __pyx_mstate->__pyx_n_u_cdatarep, __pyx_mstate->__pyx_n_u_size_2};
    __pyx_mstate_global->__pyx_codeobj_tab[79] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Pack_external_size, __pyx_mstate->__pyx_kp_b_iso88591_A_a_a_9AQ_b_gT_1_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[79])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 696};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_keyval, __pyx_mstate->__pyx_n_u_attrval, __pyx_mstate->__pyx_n_u_flag};
    __pyx_mstate_global->__pyx_codeobj_tab[80] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Get_attr, __pyx_mstate->__pyx_kp_b_iso88591_81_Q_b_ixq_4vWA_83fG1_Qd_81, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[80])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 708};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_keyval, __pyx_mstate->__pyx_n_u_attrval};
    __pyx_mstate_global->__pyx_codeobj_tab[81] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Set_attr, __pyx_mstate->__pyx_kp_b_iso88591_at9HA, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[81])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 714};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_keyval};
    __pyx_mstate_global->__pyx_codeobj_tab[82] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Delete_attr, __pyx_mstate->__pyx_kp_b_iso88591_ha_at9A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[82])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 720};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_copy_fn, __pyx_mstate->__pyx_n_u_delete_fn, __pyx_mstate->__pyx_n_u_nopython, __pyx_mstate->__pyx_n_u_keyval, __pyx_mstate->__pyx_n_u_copy_2, __pyx_mstate->__pyx_n_u_del, __pyx_mstate->__pyx_n_u_state};
    __pyx_mstate_global->__pyx_codeobj_tab[83] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Create_keyval, __pyx_mstate->__pyx_kp_b_iso88591_A_a_A_2_31_y_Q_b_awfAXXQ_A_0_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[83])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 738};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_keyval, __pyx_mstate->__pyx_n_u_keyval_save};
    __pyx_mstate_global->__pyx_codeobj_tab[84] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Free_keyval, __pyx_mstate->__pyx_kp_b_iso88591_A_Q_q_b_AQa_A_0_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[84])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 751};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_name_2, __pyx_mstate->__pyx_n_u_nlen};
    __pyx_mstate_global->__pyx_codeobj_tab[85] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Get_name, __pyx_mstate->__pyx_kp_b_iso88591_b_ivQa_xq_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[85])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 760};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_name_2, __pyx_mstate->__pyx_n_u_cname};
    __pyx_mstate_global->__pyx_codeobj_tab[86] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Set_name, __pyx_mstate->__pyx_kp_b_iso88591_XQ_1_xq_aq_b_iq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[86])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 779};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[87] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_toint, __pyx_mstate->__pyx_kp_b_iso88591_q_Qd, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[87])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 2, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 785};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_arg};
    __pyx_mstate_global->__pyx_codeobj_tab[88] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_fromint, __pyx_mstate->__pyx_kp_b_iso88591_A_Q_z_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[88])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 795};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[89] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_py2f, __pyx_mstate->__pyx_kp_b_iso88591_a_1D, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[89])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 800};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_arg};
    __pyx_mstate_global->__pyx_codeobj_tab[90] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_f2py, __pyx_mstate->__pyx_kp_b_iso88591_A_q_z_aq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[90])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 809};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_s};
    __pyx_mstate_global->__pyx_codeobj_tab[91] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_tocode, __pyx_mstate->__pyx_kp_b_iso88591_a_2S_gU_1_j, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[91])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 817};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_code};
    __pyx_mstate_global->__pyx_codeobj_tab[92] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_fromcode, __pyx_mstate->__pyx_kp_b_iso88591_A_A_xq_A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[92])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 847};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_location, __pyx_mstate->__pyx_n_u_baseptr, __pyx_mstate->__pyx_n_u_address};
    __pyx_mstate_global->__pyx_codeobj_tab[93] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Get_address, __pyx_mstate->__pyx_kp_b_iso88591_a_t9AQ_Qiq_A_O1IQa_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[93])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 859};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_base, __pyx_mstate->__pyx_n_u_disp};
    __pyx_mstate_global->__pyx_codeobj_tab[94] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Aint_add, __pyx_mstate->__pyx_kp_b_iso88591_q_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[94])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 866};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_addr1, __pyx_mstate->__pyx_n_u_addr2};
    __pyx_mstate_global->__pyx_codeobj_tab[95] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Datatype_pyx, __pyx_mstate->__pyx_n_u_Aint_diff, __pyx_mstate->__pyx_kp_b_iso88591_81, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[95])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 24};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[96] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Status_pyx, __pyx_mstate->__pyx_n_u_reduce, __pyx_mstate->__pyx_kp_b_iso88591_A_T_4_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[96])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 27};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_state};
    __pyx_mstate_global->__pyx_codeobj_tab[97] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Status_pyx, __pyx_mstate->__pyx_n_u_getstate, __pyx_mstate->__pyx_kp_b_iso88591_a_d_Q_4xq_T_1_T_aq_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[97])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 43};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_state};
    __pyx_mstate_global->__pyx_codeobj_tab[98] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Status_pyx, __pyx_mstate->__pyx_n_u_setstate, __pyx_mstate->__pyx_kp_b_iso88591_5Q_Kq_Qa_HAU_1_JauAQ_83a_Qj_Qa, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[98])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 52};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_source};
    __pyx_mstate_global->__pyx_codeobj_tab[99] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Status_pyx, __pyx_mstate->__pyx_n_u_Get_source, __pyx_mstate->__pyx_kp_b_iso88591_A_b_Qat9AQ_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[99])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 60};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_source};
    __pyx_mstate_global->__pyx_codeobj_tab[100] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Status_pyx, __pyx_mstate->__pyx_n_u_Set_source, __pyx_mstate->__pyx_kp_b_iso88591_XQ_b_Qat9A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[100])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 74};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_tag};
    __pyx_mstate_global->__pyx_codeobj_tab[101] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Status_pyx, __pyx_mstate->__pyx_n_u_Get_tag, __pyx_mstate->__pyx_kp_b_iso88591_q_b_1D_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[101])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 82};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_tag};
    __pyx_mstate_global->__pyx_codeobj_tab[102] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Status_pyx, __pyx_mstate->__pyx_n_u_Set_tag, __pyx_mstate->__pyx_kp_b_iso88591_xq_b_1D, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[102])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 96};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_error};
    __pyx_mstate_global->__pyx_codeobj_tab[103] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Status_pyx, __pyx_mstate->__pyx_n_u_Get_error, __pyx_mstate->__pyx_kp_b_iso88591_1_b_AQd_1A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[103])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 104};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_error};
    __pyx_mstate_global->__pyx_codeobj_tab[104] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Status_pyx, __pyx_mstate->__pyx_n_u_Set_error, __pyx_mstate->__pyx_kp_b_iso88591_81_b_AQd_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[104])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 118};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_datatype, __pyx_mstate->__pyx_n_u_dtype, __pyx_mstate->__pyx_n_u_count};
    __pyx_mstate_global->__pyx_codeobj_tab[105] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Status_pyx, __pyx_mstate->__pyx_n_u_Get_count, __pyx_mstate->__pyx_kp_b_iso88591_iq_q_b_q_YgQa_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[105])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 135};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_datatype, __pyx_mstate->__pyx_n_u_dtype, __pyx_mstate->__pyx_n_u_elements};
    __pyx_mstate_global->__pyx_codeobj_tab[106] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Status_pyx, __pyx_mstate->__pyx_n_u_Get_elements, __pyx_mstate->__pyx_kp_b_iso88591_m1_b_1D_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[106])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 144};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_datatype, __pyx_mstate->__pyx_n_u_count, __pyx_mstate->__pyx_n_u_dtype};
    __pyx_mstate_global->__pyx_codeobj_tab[107] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Status_pyx, __pyx_mstate->__pyx_n_u_Set_elements, __pyx_mstate->__pyx_kp_b_iso88591_A_b_4y_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[107])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 158};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_flag};
    __pyx_mstate_global->__pyx_codeobj_tab[108] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Status_pyx, __pyx_mstate->__pyx_n_u_Is_cancelled, __pyx_mstate->__pyx_kp_b_iso88591_a_b_1D_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[108])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 166};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_flag};
    __pyx_mstate_global->__pyx_codeobj_tab[109] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Status_pyx, __pyx_mstate->__pyx_n_u_Set_cancelled, __pyx_mstate->__pyx_kp_b_iso88591_y_b_iq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[109])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 186};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_base, __pyx_mstate->__pyx_n_u_size_2};
    __pyx_mstate_global->__pyx_codeobj_tab[110] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Status_pyx, __pyx_mstate->__pyx_n_u_tomemory, __pyx_mstate->__pyx_kp_b_iso88591_1_4q_A_3gV6_s_at5, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[110])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 199};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_f_status, __pyx_mstate->__pyx_n_u_c_status, __pyx_mstate->__pyx_n_u_size_2, __pyx_mstate->__pyx_n_u_i};
    __pyx_mstate_global->__pyx_codeobj_tab[111] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Status_pyx, __pyx_mstate->__pyx_n_u_py2f, __pyx_mstate->__pyx_kp_b_iso88591_a_AT_q_b_az_q_D_U_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[111])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 208};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_arg, __pyx_mstate->__pyx_n_u_f_status, __pyx_mstate->__pyx_n_u_c_status, __pyx_mstate->__pyx_n_u_size_2, __pyx_mstate->__pyx_n_u_i};
    __pyx_mstate_global->__pyx_codeobj_tab[112] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Status_pyx, __pyx_mstate->__pyx_n_u_f2py, __pyx_mstate->__pyx_kp_b_iso88591_A_Q_q_E_awhauCq_b_az_aq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[112])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 19};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[113] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_reduce, __pyx_mstate->__pyx_kp_b_iso88591_A_Qa, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[113])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 27};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_handle};
    __pyx_mstate_global->__pyx_codeobj_tab[114] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_fromhandle, __pyx_mstate->__pyx_kp_b_iso88591_A_Qe1_A_Qe1_A_z_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[114])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 38};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[115] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_free, __pyx_mstate->__pyx_kp_b_iso88591_a_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[115])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 47};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[116] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_Wait, __pyx_mstate->__pyx_kp_b_iso88591_2_1_Qa_F_HA_T_4xs_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[116])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 58};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_flag, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[117] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_Test, __pyx_mstate->__pyx_kp_b_iso88591_2_1_Qa_F_HA_T_6_4xs_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[117])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 70};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_flag, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[118] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_Get_status, __pyx_mstate->__pyx_kp_b_iso88591_8_Qa_F_2_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[118])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 83};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_requests, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_index, __pyx_mstate->__pyx_n_u_statusp, __pyx_mstate->__pyx_n_u_rs};
    __pyx_mstate_global->__pyx_codeobj_tab[119] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_Waitany, __pyx_mstate->__pyx_kp_b_iso88591_A_q_Qa_XQa_1_b_1_Kq_q_ha_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[119])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 103};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_requests, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_index, __pyx_mstate->__pyx_n_u_flag, __pyx_mstate->__pyx_n_u_statusp, __pyx_mstate->__pyx_n_u_rs};
    __pyx_mstate_global->__pyx_codeobj_tab[120] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_Testany, __pyx_mstate->__pyx_kp_b_iso88591_A_q_Qa_XQa_1_b_1_Kq_q_a_ha_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[120])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 124};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_requests, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_index, __pyx_mstate->__pyx_n_u_flag, __pyx_mstate->__pyx_n_u_statusp, __pyx_mstate->__pyx_n_u_rs};
    __pyx_mstate_global->__pyx_codeobj_tab[121] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_Get_status_any, __pyx_mstate->__pyx_kp_b_iso88591_A_q_Qa_XQa_1_b_Kq_q_a_ha_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[121])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 145};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_requests, __pyx_mstate->__pyx_n_u_statuses, __pyx_mstate->__pyx_n_u_rs};
    __pyx_mstate_global->__pyx_codeobj_tab[122] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_Waitall, __pyx_mstate->__pyx_kp_b_iso88591_A_XQa_Q_b_1_Kr_haq_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[122])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 163};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_requests, __pyx_mstate->__pyx_n_u_statuses, __pyx_mstate->__pyx_n_u_flag, __pyx_mstate->__pyx_n_u_rs};
    __pyx_mstate_global->__pyx_codeobj_tab[123] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_Testall, __pyx_mstate->__pyx_kp_b_iso88591_A_XQa_Q_b_1_Kq_b_haq_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[123])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 182};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_requests, __pyx_mstate->__pyx_n_u_statuses, __pyx_mstate->__pyx_n_u_flag, __pyx_mstate->__pyx_n_u_rs};
    __pyx_mstate_global->__pyx_codeobj_tab[124] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_Get_status_all, __pyx_mstate->__pyx_kp_b_iso88591_A_XQa_Q_b_Kq_b_haq_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[124])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 201};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_requests, __pyx_mstate->__pyx_n_u_statuses, __pyx_mstate->__pyx_n_u_indices, __pyx_mstate->__pyx_n_u_rs};
    __pyx_mstate_global->__pyx_codeobj_tab[125] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_Waitsome, __pyx_mstate->__pyx_kp_b_iso88591_A_a_XQa_Q_a_b_A_Kq_Rz_1_b_A_haq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[125])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 222};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_requests, __pyx_mstate->__pyx_n_u_statuses, __pyx_mstate->__pyx_n_u_indices, __pyx_mstate->__pyx_n_u_rs};
    __pyx_mstate_global->__pyx_codeobj_tab[126] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_Testsome, __pyx_mstate->__pyx_kp_b_iso88591_A_a_XQa_Q_a_b_A_Kq_Rz_1_b_A_haq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[126])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 243};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_requests, __pyx_mstate->__pyx_n_u_statuses, __pyx_mstate->__pyx_n_u_indices, __pyx_mstate->__pyx_n_u_rs};
    __pyx_mstate_global->__pyx_codeobj_tab[127] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_Get_status_some, __pyx_mstate->__pyx_kp_b_iso88591_A_a_XQa_Q_a_b_1_Kq_Rz_1_b_A_haq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[127])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 267};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[128] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_Cancel, __pyx_mstate->__pyx_kp_b_iso88591_F_Jaq_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[128])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 276};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_save};
    __pyx_mstate_global->__pyx_codeobj_tab[129] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_Free, __pyx_mstate->__pyx_kp_b_iso88591_a_A_F_AQd_81G4z, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[129])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 287};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[130] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_toint, __pyx_mstate->__pyx_kp_b_iso88591_q_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[130])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 2, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 293};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_arg};
    __pyx_mstate_global->__pyx_codeobj_tab[131] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_fromint, __pyx_mstate->__pyx_kp_b_iso88591_A_Q_Qe1_A_8_Qe1_A_8_z_Qa, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[131])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 307};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[132] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_py2f, __pyx_mstate->__pyx_kp_b_iso88591_a_at1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[132])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 312};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_arg};
    __pyx_mstate_global->__pyx_codeobj_tab[133] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_f2py, __pyx_mstate->__pyx_kp_b_iso88591_A_q_Qe1_A_AQ_Qe1_A_AQ_z, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[133])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 325};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_msg};
    __pyx_mstate_global->__pyx_codeobj_tab[134] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_wait, __pyx_mstate->__pyx_kp_b_iso88591_A_q_QfA_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[134])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 335};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_flag, __pyx_mstate->__pyx_n_u_msg};
    __pyx_mstate_global->__pyx_codeobj_tab[135] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_test, __pyx_mstate->__pyx_kp_b_iso88591_A_1_QfAV1_fA, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[135])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 346};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_flag, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[136] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_get_status, __pyx_mstate->__pyx_kp_b_iso88591_A_q_Qa_F_2_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[136])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 359};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_requests, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_index, __pyx_mstate->__pyx_n_u_msg};
    __pyx_mstate_global->__pyx_codeobj_tab[137] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_waitany, __pyx_mstate->__pyx_kp_b_iso88591_A_q_1G1_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[137])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 372};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_requests, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_index, __pyx_mstate->__pyx_n_u_flag, __pyx_mstate->__pyx_n_u_msg};
    __pyx_mstate_global->__pyx_codeobj_tab[138] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_testany, __pyx_mstate->__pyx_kp_b_iso88591_A_q_1G1F_V1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[138])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 386};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_requests, __pyx_mstate->__pyx_n_u_status};
    __pyx_mstate_global->__pyx_codeobj_tab[139] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_get_status_any, __pyx_mstate->__pyx_kp_b_iso88591_A_q_woQj, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[139])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 397};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_requests, __pyx_mstate->__pyx_n_u_statuses, __pyx_mstate->__pyx_n_u_msg};
    __pyx_mstate_global->__pyx_codeobj_tab[140] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_waitall, __pyx_mstate->__pyx_kp_b_iso88591_A_1_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[140])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 409};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_requests, __pyx_mstate->__pyx_n_u_statuses, __pyx_mstate->__pyx_n_u_flag, __pyx_mstate->__pyx_n_u_msg};
    __pyx_mstate_global->__pyx_codeobj_tab[141] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_testall, __pyx_mstate->__pyx_kp_b_iso88591_A_1F_fA, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[141])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 422};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_requests, __pyx_mstate->__pyx_n_u_statuses};
    __pyx_mstate_global->__pyx_codeobj_tab[142] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_get_status_all, __pyx_mstate->__pyx_kp_b_iso88591_A_woQj, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[142])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 433};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_requests, __pyx_mstate->__pyx_n_u_statuses};
    __pyx_mstate_global->__pyx_codeobj_tab[143] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_waitsome, __pyx_mstate->__pyx_kp_b_iso88591_A_Qj, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[143])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 444};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_requests, __pyx_mstate->__pyx_n_u_statuses};
    __pyx_mstate_global->__pyx_codeobj_tab[144] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_testsome, __pyx_mstate->__pyx_kp_b_iso88591_A_Qj, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[144])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 455};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_requests, __pyx_mstate->__pyx_n_u_statuses};
    __pyx_mstate_global->__pyx_codeobj_tab[145] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_get_status_some, __pyx_mstate->__pyx_kp_b_iso88591_A_w_az, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[145])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 466};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[146] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_cancel, __pyx_mstate->__pyx_kp_b_iso88591_F_Jaq_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[146])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 482};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[147] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_Start, __pyx_mstate->__pyx_kp_b_iso88591_q_F_IQat1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[147])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 488};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_requests, __pyx_mstate->__pyx_n_u_rs};
    __pyx_mstate_global->__pyx_codeobj_tab[148] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_Startall, __pyx_mstate->__pyx_kp_b_iso88591_A_31_XQa_1_b_ARxr_ha, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[148])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 503};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_partition};
    __pyx_mstate_global->__pyx_codeobj_tab[149] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_Pready, __pyx_mstate->__pyx_kp_b_iso88591_A_b_d, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[149])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 512};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_partition_low, __pyx_mstate->__pyx_n_u_partition_high};
    __pyx_mstate_global->__pyx_codeobj_tab[150] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_Pready_range, __pyx_mstate->__pyx_kp_b_iso88591_A_b_0_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[150])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 522};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_partitions, __pyx_mstate->__pyx_n_u_length, __pyx_mstate->__pyx_n_u_array_of_partitions};
    __pyx_mstate_global->__pyx_codeobj_tab[151] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_Pready_list, __pyx_mstate->__pyx_kp_b_iso88591_A_4A_XQl_81A_b_q_T, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[151])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 533};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_partition, __pyx_mstate->__pyx_n_u_flag};
    __pyx_mstate_global->__pyx_codeobj_tab[152] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_Parrived, __pyx_mstate->__pyx_kp_b_iso88591_A_b_AT_Qa_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[152])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {6, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 555};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_query_fn, __pyx_mstate->__pyx_n_u_free_fn, __pyx_mstate->__pyx_n_u_cancel_fn, __pyx_mstate->__pyx_n_u_args, __pyx_mstate->__pyx_n_u_kwargs, __pyx_mstate->__pyx_n_u_request, __pyx_mstate->__pyx_n_u_state};
    __pyx_mstate_global->__pyx_codeobj_tab[153] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_Start, __pyx_mstate->__pyx_kp_b_iso88591_A_0q_a_0_Qa_WA_i_F_a_7_7_gQ_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[153])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 577};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_grequest};
    __pyx_mstate_global->__pyx_codeobj_tab[154] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_Complete, __pyx_mstate->__pyx_kp_b_iso88591_4xs_t83d_l_1_D_O4q_F_1_O4q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[154])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 589};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_obj};
    __pyx_mstate_global->__pyx_codeobj_tab[155] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Request_pyx, __pyx_mstate->__pyx_n_u_complete, __pyx_mstate->__pyx_kp_b_iso88591_F_1_J_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[155])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 19};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[156] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Message_pyx, __pyx_mstate->__pyx_n_u_reduce, __pyx_mstate->__pyx_kp_b_iso88591_A_Qa, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[156])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 27};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_handle};
    __pyx_mstate_global->__pyx_codeobj_tab[157] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Message_pyx, __pyx_mstate->__pyx_n_u_fromhandle, __pyx_mstate->__pyx_kp_b_iso88591_A_z_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[157])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 34};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[158] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Message_pyx, __pyx_mstate->__pyx_n_u_free, __pyx_mstate->__pyx_kp_b_iso88591_a_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[158])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 43};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_comm, __pyx_mstate->__pyx_n_u_source, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_cmessage, __pyx_mstate->__pyx_n_u_statusp, __pyx_mstate->__pyx_n_u_message};
    __pyx_mstate_global->__pyx_codeobj_tab[159] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Message_pyx, __pyx_mstate->__pyx_n_u_Probe, __pyx_mstate->__pyx_kp_b_iso88591_A_q_q_A_Qa_F_Ja_E_Yaz_y_1A_z_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[159])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 9, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 62};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_comm, __pyx_mstate->__pyx_n_u_source, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_flag, __pyx_mstate->__pyx_n_u_cmessage, __pyx_mstate->__pyx_n_u_statusp, __pyx_mstate->__pyx_n_u_message};
    __pyx_mstate_global->__pyx_codeobj_tab[160] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Message_pyx, __pyx_mstate->__pyx_n_u_Iprobe, __pyx_mstate->__pyx_kp_b_iso88591_A_q_q_A_Qa_F_Kq_U_iq_az_5_3gQ_y, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[160])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 86};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_message, __pyx_mstate->__pyx_n_u_source, __pyx_mstate->__pyx_n_u_rmsg, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[161] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Message_pyx, __pyx_mstate->__pyx_n_u_Recv, __pyx_mstate->__pyx_kp_b_iso88591_A_q_4q_83a_Q_q_Q_Qa_F_Kq_d_a_Ya, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[161])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 106};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_message, __pyx_mstate->__pyx_n_u_source, __pyx_mstate->__pyx_n_u_rmsg, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[162] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Message_pyx, __pyx_mstate->__pyx_n_u_Irecv, __pyx_mstate->__pyx_kp_b_iso88591_Q_4q_83a_Q_q_Q_y_1A_F_L_d_a_Yaw, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[162])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 127};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_comm, __pyx_mstate->__pyx_n_u_source, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_message, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[163] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Message_pyx, __pyx_mstate->__pyx_n_u_probe, __pyx_mstate->__pyx_kp_b_iso88591_A_q_q_y_1A_Qa_z_Qhe4q_wiq_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[163])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 144};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_comm, __pyx_mstate->__pyx_n_u_source, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_flag, __pyx_mstate->__pyx_n_u_message, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[164] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Message_pyx, __pyx_mstate->__pyx_n_u_iprobe, __pyx_mstate->__pyx_kp_b_iso88591_A_q_q_y_1A_Qa_z_axuD_y_5_3gQ_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[164])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 163};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_rmsg, __pyx_mstate->__pyx_n_u_message, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[165] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Message_pyx, __pyx_mstate->__pyx_n_u_recv, __pyx_mstate->__pyx_kp_b_iso88591_2_1_4q_4q_Qa_6_1_5_D_4xs_D_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[165])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 175};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_rmsg, __pyx_mstate->__pyx_n_u_message, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[166] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Message_pyx, __pyx_mstate->__pyx_n_u_irecv, __pyx_mstate->__pyx_kp_b_iso88591_q_4q_4q_y_1A_z_QfAYawa_5_D_4xs, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[166])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 190};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[167] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Message_pyx, __pyx_mstate->__pyx_n_u_toint, __pyx_mstate->__pyx_kp_b_iso88591_q_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[167])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 2, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 196};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_arg};
    __pyx_mstate_global->__pyx_codeobj_tab[168] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Message_pyx, __pyx_mstate->__pyx_n_u_fromint, __pyx_mstate->__pyx_kp_b_iso88591_A_Q_z_Qa, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[168])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 206};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[169] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Message_pyx, __pyx_mstate->__pyx_n_u_py2f, __pyx_mstate->__pyx_kp_b_iso88591_a_at1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[169])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 211};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_arg};
    __pyx_mstate_global->__pyx_codeobj_tab[170] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Message_pyx, __pyx_mstate->__pyx_n_u_f2py, __pyx_mstate->__pyx_kp_b_iso88591_A_q_z, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[170])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 19};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[171] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Op_pyx, __pyx_mstate->__pyx_n_u_reduce, __pyx_mstate->__pyx_kp_b_iso88591_A_y, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[171])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 31};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_handle};
    __pyx_mstate_global->__pyx_codeobj_tab[172] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Op_pyx, __pyx_mstate->__pyx_n_u_fromhandle, __pyx_mstate->__pyx_kp_b_iso88591_A_z_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[172])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 38};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[173] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Op_pyx, __pyx_mstate->__pyx_n_u_free, __pyx_mstate->__pyx_kp_b_iso88591_a_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[173])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 47};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_function, __pyx_mstate->__pyx_n_u_commute, __pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_fn_i, __pyx_mstate->__pyx_n_u_fn_c};
    __pyx_mstate_global->__pyx_codeobj_tab[174] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Op_pyx, __pyx_mstate->__pyx_n_u_Create, __pyx_mstate->__pyx_kp_b_iso88591_A_Q_t3aq_1F_AV1A_b_q_iq_A_b_QfIQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[174])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 70};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_save};
    __pyx_mstate_global->__pyx_codeobj_tab[175] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Op_pyx, __pyx_mstate->__pyx_n_u_Free, __pyx_mstate->__pyx_kp_b_iso88591_a_4q_b_1AT_81G4z_1A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[175])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 82};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_flag};
    __pyx_mstate_global->__pyx_codeobj_tab[176] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Op_pyx, __pyx_mstate->__pyx_n_u_Is_commutative, __pyx_mstate->__pyx_kp_b_iso88591_b_4y_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[176])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 95};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_inbuf, __pyx_mstate->__pyx_n_u_inoutbuf, __pyx_mstate->__pyx_n_u_m};
    __pyx_mstate_global->__pyx_codeobj_tab[177] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Op_pyx, __pyx_mstate->__pyx_n_u_Reduce_local, __pyx_mstate->__pyx_kp_b_iso88591_5_Kq_az_awa_a_F_a_WAWAYaxt1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[177])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 133};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[178] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Op_pyx, __pyx_mstate->__pyx_n_u_toint, __pyx_mstate->__pyx_kp_b_iso88591_q_1D, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[178])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 2, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 139};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_arg};
    __pyx_mstate_global->__pyx_codeobj_tab[179] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Op_pyx, __pyx_mstate->__pyx_n_u_fromint, __pyx_mstate->__pyx_kp_b_iso88591_A_Q_z, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[179])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 149};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[180] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Op_pyx, __pyx_mstate->__pyx_n_u_py2f, __pyx_mstate->__pyx_kp_b_iso88591_a_z_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[180])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 154};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_arg};
    __pyx_mstate_global->__pyx_codeobj_tab[181] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Op_pyx, __pyx_mstate->__pyx_n_u_f2py, __pyx_mstate->__pyx_kp_b_iso88591_A_q_z_AQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[181])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 19};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[182] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Group_pyx, __pyx_mstate->__pyx_n_u_reduce, __pyx_mstate->__pyx_kp_b_iso88591_A_Qa, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[182])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 27};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_handle};
    __pyx_mstate_global->__pyx_codeobj_tab[183] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Group_pyx, __pyx_mstate->__pyx_n_u_fromhandle, __pyx_mstate->__pyx_kp_b_iso88591_A_z_oQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[183])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 34};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[184] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Group_pyx, __pyx_mstate->__pyx_n_u_free, __pyx_mstate->__pyx_kp_b_iso88591_a_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[184])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 43};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_size_2};
    __pyx_mstate_global->__pyx_codeobj_tab[185] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Group_pyx, __pyx_mstate->__pyx_n_u_Get_size, __pyx_mstate->__pyx_kp_b_iso88591_b_at9AQ_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[185])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 56};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_rank};
    __pyx_mstate_global->__pyx_codeobj_tab[186] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Group_pyx, __pyx_mstate->__pyx_n_u_Get_rank, __pyx_mstate->__pyx_kp_b_iso88591_b_at9AQ_q_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[186])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 13, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 69};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_ranks, __pyx_mstate->__pyx_n_u_group, __pyx_mstate->__pyx_n_u_group1, __pyx_mstate->__pyx_n_u_group2, __pyx_mstate->__pyx_n_u_n, __pyx_mstate->__pyx_n_u_iranks1, __pyx_mstate->__pyx_n_u_iranks2, __pyx_mstate->__pyx_n_u_unused1, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_unused2, __pyx_mstate->__pyx_n_u_ranks2, __pyx_mstate->__pyx_n_u_i};
    __pyx_mstate_global->__pyx_codeobj_tab[187] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Group_pyx, __pyx_mstate->__pyx_n_u_Translate_ranks, __pyx_mstate->__pyx_kp_b_iso88591_A_a_A_4A_q_6_hawas_1_N_4y_has_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[187])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 105};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_group, __pyx_mstate->__pyx_n_u_flag};
    __pyx_mstate_global->__pyx_codeobj_tab[188] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Group_pyx, __pyx_mstate->__pyx_n_u_Compare, __pyx_mstate->__pyx_kp_b_iso88591_Q_b_iq_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[188])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 117};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_group};
    __pyx_mstate_global->__pyx_codeobj_tab[189] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Group_pyx, __pyx_mstate->__pyx_n_u_Dup, __pyx_mstate->__pyx_kp_b_iso88591_Q_7_Qd_1_b_q_I_auA_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[189])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 125};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_group1, __pyx_mstate->__pyx_n_u_group2, __pyx_mstate->__pyx_n_u_group};
    __pyx_mstate_global->__pyx_codeobj_tab[190] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Group_pyx, __pyx_mstate->__pyx_n_u_Union, __pyx_mstate->__pyx_kp_b_iso88591_A_6j_7_Qa_b_q_ivYauA_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[190])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 135};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_group1, __pyx_mstate->__pyx_n_u_group2, __pyx_mstate->__pyx_n_u_group};
    __pyx_mstate_global->__pyx_codeobj_tab[191] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Group_pyx, __pyx_mstate->__pyx_n_u_Intersection, __pyx_mstate->__pyx_kp_b_iso88591_A_Zq_7_Qa_b_a_ivYauA_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[191])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 147};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_group1, __pyx_mstate->__pyx_n_u_group2, __pyx_mstate->__pyx_n_u_group};
    __pyx_mstate_global->__pyx_codeobj_tab[192] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Group_pyx, __pyx_mstate->__pyx_n_u_Difference, __pyx_mstate->__pyx_kp_b_iso88591_A_Q_7_Qa_b_A_ivYauA_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[192])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 157};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_ranks, __pyx_mstate->__pyx_n_u_n, __pyx_mstate->__pyx_n_u_iranks, __pyx_mstate->__pyx_n_u_group};
    __pyx_mstate_global->__pyx_codeobj_tab[193] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Group_pyx, __pyx_mstate->__pyx_n_u_Incl, __pyx_mstate->__pyx_kp_b_iso88591_A_AQ_7_Qd_1_b_at9Cxq_Q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[193])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 167};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_ranks, __pyx_mstate->__pyx_n_u_n, __pyx_mstate->__pyx_n_u_iranks, __pyx_mstate->__pyx_n_u_group};
    __pyx_mstate_global->__pyx_codeobj_tab[194] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Group_pyx, __pyx_mstate->__pyx_n_u_Excl, __pyx_mstate->__pyx_kp_b_iso88591_A_AQ_7_Qd_1_b_at9Cxq_Q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[194])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 177};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_ranks, __pyx_mstate->__pyx_n_u_p, __pyx_mstate->__pyx_n_u_ranges, __pyx_mstate->__pyx_n_u_n, __pyx_mstate->__pyx_n_u_unused1, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_group};
    __pyx_mstate_global->__pyx_codeobj_tab[195] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Group_pyx, __pyx_mstate->__pyx_n_u_Range_incl, __pyx_mstate->__pyx_kp_b_iso88591_C1_a_U_Qa_xq_31A_E_aq_vQa_Qd_1D, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[195])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 192};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_ranks, __pyx_mstate->__pyx_n_u_p, __pyx_mstate->__pyx_n_u_ranges, __pyx_mstate->__pyx_n_u_n, __pyx_mstate->__pyx_n_u_unused1, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_group};
    __pyx_mstate_global->__pyx_codeobj_tab[196] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Group_pyx, __pyx_mstate->__pyx_n_u_Range_excl, __pyx_mstate->__pyx_kp_b_iso88591_C1_a_U_Qa_xq_31A_E_aq_vQa_Qd_1D, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[196])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 207};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_session, __pyx_mstate->__pyx_n_u_pset_name, __pyx_mstate->__pyx_n_u_cname, __pyx_mstate->__pyx_n_u_group};
    __pyx_mstate_global->__pyx_codeobj_tab[197] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Group_pyx, __pyx_mstate->__pyx_n_u_Create_from_session_pset, __pyx_mstate->__pyx_kp_b_iso88591_A_1_HA_7_Qa_b_1_9G1E_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[197])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 226};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_save};
    __pyx_mstate_global->__pyx_codeobj_tab[198] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Group_pyx, __pyx_mstate->__pyx_n_u_Free, __pyx_mstate->__pyx_kp_b_iso88591_a_d_b_aq_A_81G4z, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[198])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 237};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[199] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Group_pyx, __pyx_mstate->__pyx_n_u_toint, __pyx_mstate->__pyx_kp_b_iso88591_q_at1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[199])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 2, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 243};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_arg};
    __pyx_mstate_global->__pyx_codeobj_tab[200] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Group_pyx, __pyx_mstate->__pyx_n_u_fromint, __pyx_mstate->__pyx_kp_b_iso88591_A_Q_z_1A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[200])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 253};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[201] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Group_pyx, __pyx_mstate->__pyx_n_u_py2f, __pyx_mstate->__pyx_kp_b_iso88591_a_AT, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[201])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 258};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_arg};
    __pyx_mstate_global->__pyx_codeobj_tab[202] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Group_pyx, __pyx_mstate->__pyx_n_u_f2py, __pyx_mstate->__pyx_kp_b_iso88591_A_q_z_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[202])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 19};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[203] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Info_pyx, __pyx_mstate->__pyx_n_u_reduce, __pyx_mstate->__pyx_kp_b_iso88591_A_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[203])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 27};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_handle};
    __pyx_mstate_global->__pyx_codeobj_tab[204] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Info_pyx, __pyx_mstate->__pyx_n_u_fromhandle, __pyx_mstate->__pyx_kp_b_iso88591_A_z__A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[204])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 34};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[205] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Info_pyx, __pyx_mstate->__pyx_n_u_free, __pyx_mstate->__pyx_kp_b_iso88591_a_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[205])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 43};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_items, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_key, __pyx_mstate->__pyx_n_u_value};
    __pyx_mstate_global->__pyx_codeobj_tab[206] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Info_pyx, __pyx_mstate->__pyx_n_u_Create, __pyx_mstate->__pyx_kp_b_iso88591_A_s_1_b_q_Q_6_F_wawa_G5_Q_AU_q_E, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[206])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 72};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_args, __pyx_mstate->__pyx_n_u_argc, __pyx_mstate->__pyx_n_u_argv, __pyx_mstate->__pyx_n_u_info};
    __pyx_mstate_global->__pyx_codeobj_tab[207] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Info_pyx, __pyx_mstate->__pyx_n_u_Create_env, __pyx_mstate->__pyx_kp_b_iso88591_A_5Ya_1_s_1_1F_1_e4t1G81_b_1F_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[207])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 85};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_save};
    __pyx_mstate_global->__pyx_codeobj_tab[208] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Info_pyx, __pyx_mstate->__pyx_n_u_Free, __pyx_mstate->__pyx_kp_b_iso88591_a_T_b_Qat1_81G4z, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[208])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 93};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_info};
    __pyx_mstate_global->__pyx_codeobj_tab[209] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Info_pyx, __pyx_mstate->__pyx_n_u_Dup, __pyx_mstate->__pyx_kp_b_iso88591_Q_s_4q_b_AT_4q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[209])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 101};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_key, __pyx_mstate->__pyx_n_u_ckey, __pyx_mstate->__pyx_n_u_cvalue, __pyx_mstate->__pyx_n_u_buflen, __pyx_mstate->__pyx_n_u_flag, __pyx_mstate->__pyx_n_u_unused};
    __pyx_mstate_global->__pyx_codeobj_tab[210] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Info_pyx, __pyx_mstate->__pyx_n_u_Get, __pyx_mstate->__pyx_kp_b_iso88591_xq_A_hauAQ_havQc_q_b_1D_q_4vWA, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[210])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 115};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_key, __pyx_mstate->__pyx_n_u_value, __pyx_mstate->__pyx_n_u_ckey, __pyx_mstate->__pyx_n_u_cvalue};
    __pyx_mstate_global->__pyx_codeobj_tab[211] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Info_pyx, __pyx_mstate->__pyx_n_u_Set, __pyx_mstate->__pyx_kp_b_iso88591_81_A_hauAQ_b_AT, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[211])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 125};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_key, __pyx_mstate->__pyx_n_u_ckey};
    __pyx_mstate_global->__pyx_codeobj_tab[212] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Info_pyx, __pyx_mstate->__pyx_n_u_Delete, __pyx_mstate->__pyx_kp_b_iso88591_hauAQ_b_q_IQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[212])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 133};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_nkeys};
    __pyx_mstate_global->__pyx_codeobj_tab[213] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Info_pyx, __pyx_mstate->__pyx_n_u_Get_nkeys, __pyx_mstate->__pyx_kp_b_iso88591_1_b_4y_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[213])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 141};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_n, __pyx_mstate->__pyx_n_u_ckey};
    __pyx_mstate_global->__pyx_codeobj_tab[214] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Info_pyx, __pyx_mstate->__pyx_n_u_Get_nthkey, __pyx_mstate->__pyx_kp_b_iso88591_AU_b_1D_A_A_vQa, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[214])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 154};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[215] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Info_pyx, __pyx_mstate->__pyx_n_u_toint, __pyx_mstate->__pyx_kp_b_iso88591_q_Qd, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[215])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 2, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 160};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_arg};
    __pyx_mstate_global->__pyx_codeobj_tab[216] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Info_pyx, __pyx_mstate->__pyx_n_u_fromint, __pyx_mstate->__pyx_kp_b_iso88591_A_Q_z_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[216])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 170};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[217] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Info_pyx, __pyx_mstate->__pyx_n_u_py2f, __pyx_mstate->__pyx_kp_b_iso88591_a_1D, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[217])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 175};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_arg};
    __pyx_mstate_global->__pyx_codeobj_tab[218] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Info_pyx, __pyx_mstate->__pyx_n_u_f2py, __pyx_mstate->__pyx_kp_b_iso88591_A_q_z_aq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[218])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 216};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_key, __pyx_mstate->__pyx_n_u_default, __pyx_mstate->__pyx_n_u_value};
    __pyx_mstate_global->__pyx_codeobj_tab[219] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Info_pyx, __pyx_mstate->__pyx_n_u_get, __pyx_mstate->__pyx_kp_b_iso88591_1_4vWA_D_AQ_6_F_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[219])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 223};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_keys, __pyx_mstate->__pyx_n_u_nkeys, __pyx_mstate->__pyx_n_u_key, __pyx_mstate->__pyx_n_u_k};
    __pyx_mstate_global->__pyx_codeobj_tab[220] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Info_pyx, __pyx_mstate->__pyx_n_u_keys, __pyx_mstate->__pyx_kp_b_iso88591_a_4vWA_Zq_E_aq_k_q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[220])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 234};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_values, __pyx_mstate->__pyx_n_u_nkeys, __pyx_mstate->__pyx_n_u_key, __pyx_mstate->__pyx_n_u_val, __pyx_mstate->__pyx_n_u_k};
    __pyx_mstate_global->__pyx_codeobj_tab[221] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Info_pyx, __pyx_mstate->__pyx_n_u_values, __pyx_mstate->__pyx_kp_b_iso88591_4vWA_1_Zq_E_aq_k_d_1_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[221])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 246};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_items, __pyx_mstate->__pyx_n_u_nkeys, __pyx_mstate->__pyx_n_u_key, __pyx_mstate->__pyx_n_u_value, __pyx_mstate->__pyx_n_u_k};
    __pyx_mstate_global->__pyx_codeobj_tab[222] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Info_pyx, __pyx_mstate->__pyx_n_u_items, __pyx_mstate->__pyx_kp_b_iso88591_q_4vWA_Zq_E_aq_k_D_AQ_q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[222])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS), 258};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_items, __pyx_mstate->__pyx_n_u_kwds, __pyx_mstate->__pyx_n_u_key, __pyx_mstate->__pyx_n_u_value};
    __pyx_mstate_global->__pyx_codeobj_tab[223] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Info_pyx, __pyx_mstate->__pyx_n_u_update, __pyx_mstate->__pyx_kp_b_iso88591_A_Fa_4vV1_7_7_uE_D_e1A_Ya_D_a_E, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[223])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS), 275};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_key, __pyx_mstate->__pyx_n_u_default, __pyx_mstate->__pyx_n_u_value};
    __pyx_mstate_global->__pyx_codeobj_tab[224] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Info_pyx, __pyx_mstate->__pyx_n_u_pop, __pyx_mstate->__pyx_kp_b_iso88591_a_A_1_D_AQ_6_q_1_1_Q_1_haq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[224])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 288};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_key, __pyx_mstate->__pyx_n_u_value, __pyx_mstate->__pyx_n_u_nkeys};
    __pyx_mstate_global->__pyx_codeobj_tab[225] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Info_pyx, __pyx_mstate->__pyx_n_u_popitem, __pyx_mstate->__pyx_kp_b_iso88591_4vV1_Zq_6_CvQ_d_QfBa_D_G1A_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[225])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 299};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[226] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Info_pyx, __pyx_mstate->__pyx_n_u_copy, __pyx_mstate->__pyx_kp_b_iso88591_a_4vWF_Qd_1_t4q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[226])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 304};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_key, __pyx_mstate->__pyx_n_u_k, __pyx_mstate->__pyx_n_u_nkeys};
    __pyx_mstate_global->__pyx_codeobj_tab[227] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Info_pyx, __pyx_mstate->__pyx_n_u_clear, __pyx_mstate->__pyx_kp_b_iso88591_q_4vWA_Ja_b_k_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[227])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 19};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[228] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Errhandler_py, __pyx_mstate->__pyx_n_u_reduce, __pyx_mstate->__pyx_kp_b_iso88591_A_Qa, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[228])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 27};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_handle};
    __pyx_mstate_global->__pyx_codeobj_tab[229] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Errhandler_py, __pyx_mstate->__pyx_n_u_fromhandle, __pyx_mstate->__pyx_kp_b_iso88591_A_z_4, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[229])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 34};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[230] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Errhandler_py, __pyx_mstate->__pyx_n_u_free, __pyx_mstate->__pyx_kp_b_iso88591_a_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[230])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 43};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_save};
    __pyx_mstate_global->__pyx_codeobj_tab[231] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Errhandler_py, __pyx_mstate->__pyx_n_u_Free, __pyx_mstate->__pyx_kp_b_iso88591_a_4q_b_1AT_81G4z, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[231])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 54};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[232] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Errhandler_py, __pyx_mstate->__pyx_n_u_toint, __pyx_mstate->__pyx_kp_b_iso88591_q_1D_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[232])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 2, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 60};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_arg};
    __pyx_mstate_global->__pyx_codeobj_tab[233] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Errhandler_py, __pyx_mstate->__pyx_n_u_fromint, __pyx_mstate->__pyx_kp_b_iso88591_A_Q_z_0, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[233])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 70};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[234] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Errhandler_py, __pyx_mstate->__pyx_n_u_py2f, __pyx_mstate->__pyx_kp_b_iso88591_a_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[234])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 75};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_arg};
    __pyx_mstate_global->__pyx_codeobj_tab[235] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Errhandler_py, __pyx_mstate->__pyx_n_u_f2py, __pyx_mstate->__pyx_kp_b_iso88591_A_q_z_AQ_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[235])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 19};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[236] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Session_pyx, __pyx_mstate->__pyx_n_u_reduce, __pyx_mstate->__pyx_kp_b_iso88591_A_Qa, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[236])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 27};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_handle};
    __pyx_mstate_global->__pyx_codeobj_tab[237] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Session_pyx, __pyx_mstate->__pyx_n_u_fromhandle, __pyx_mstate->__pyx_kp_b_iso88591_A_z_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[237])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 34};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[238] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Session_pyx, __pyx_mstate->__pyx_n_u_free, __pyx_mstate->__pyx_kp_b_iso88591_a_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[238])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 42};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_errhandler, __pyx_mstate->__pyx_n_u_cerrhdl, __pyx_mstate->__pyx_n_u_session};
    __pyx_mstate_global->__pyx_codeobj_tab[239] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Session_pyx, __pyx_mstate->__pyx_n_u_Init, __pyx_mstate->__pyx_kp_b_iso88591_A_31_nAQ_y_1A_b_7_awa_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[239])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 58};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_save};
    __pyx_mstate_global->__pyx_codeobj_tab[240] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Session_pyx, __pyx_mstate->__pyx_n_u_Finalize, __pyx_mstate->__pyx_kp_b_iso88591_A_b_AQd_81G4z, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[240])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 66};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_num_psets};
    __pyx_mstate_global->__pyx_codeobj_tab[241] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Session_pyx, __pyx_mstate->__pyx_n_u_Get_num_psets, __pyx_mstate->__pyx_kp_b_iso88591_wnA_a_b_Yaq_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[241])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 75};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_n, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_nlen, __pyx_mstate->__pyx_n_u_pset_name, __pyx_mstate->__pyx_n_u_unused};
    __pyx_mstate_global->__pyx_codeobj_tab[242] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Session_pyx, __pyx_mstate->__pyx_n_u_Get_nth_pset, __pyx_mstate->__pyx_kp_b_iso88591_2_q_q_hat1C_Qa_b_Yc_vQa, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[242])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 86};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_info};
    __pyx_mstate_global->__pyx_codeobj_tab[243] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Session_pyx, __pyx_mstate->__pyx_n_u_Get_info, __pyx_mstate->__pyx_kp_b_iso88591_s_1_b_A_a_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[243])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 95};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pset_name, __pyx_mstate->__pyx_n_u_cname, __pyx_mstate->__pyx_n_u_info};
    __pyx_mstate_global->__pyx_codeobj_tab[244] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Session_pyx, __pyx_mstate->__pyx_n_u_Get_pset_info, __pyx_mstate->__pyx_kp_b_iso88591_xq_1_HA_s_1_b_Q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[244])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 106};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pset_name, __pyx_mstate->__pyx_n_u_cname, __pyx_mstate->__pyx_n_u_group};
    __pyx_mstate_global->__pyx_codeobj_tab[245] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Session_pyx, __pyx_mstate->__pyx_n_u_Create_group, __pyx_mstate->__pyx_kp_b_iso88591_ha_1_HA_7_Qa_b_1_a_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[245])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 120};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_base, __pyx_mstate->__pyx_n_u_size_2};
    __pyx_mstate_global->__pyx_codeobj_tab[246] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Session_pyx, __pyx_mstate->__pyx_n_u_Attach_buffer, __pyx_mstate->__pyx_kp_b_iso88591_31_a_m1E_F_7q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[246])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 131};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_base, __pyx_mstate->__pyx_n_u_size_2};
    __pyx_mstate_global->__pyx_codeobj_tab[247] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Session_pyx, __pyx_mstate->__pyx_n_u_Detach_buffer, __pyx_mstate->__pyx_kp_b_iso88591_q_a_F_7q_vQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[247])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 141};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[248] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Session_pyx, __pyx_mstate->__pyx_n_u_Flush_buffer, __pyx_mstate->__pyx_kp_b_iso88591_a_F_4AT, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[248])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 147};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[249] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Session_pyx, __pyx_mstate->__pyx_n_u_Iflush_buffer, __pyx_mstate->__pyx_kp_b_iso88591_q_y_1A_F_5Q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[249])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 159};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_errhandler_fn, __pyx_mstate->__pyx_n_u_errhandler, __pyx_mstate->__pyx_n_u_fn, __pyx_mstate->__pyx_n_u_index};
    __pyx_mstate_global->__pyx_codeobj_tab[250] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Session_pyx, __pyx_mstate->__pyx_n_u_Create_errhandler, __pyx_mstate->__pyx_kp_b_iso88591_A_AQ_31_1O1A_1_az_aq_q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[250])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 177};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_errhandler};
    __pyx_mstate_global->__pyx_codeobj_tab[251] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Session_pyx, __pyx_mstate->__pyx_n_u_Get_errhandler, __pyx_mstate->__pyx_kp_b_iso88591_AQ_b_4y_1_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[251])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 185};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_errhandler};
    __pyx_mstate_global->__pyx_codeobj_tab[252] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Session_pyx, __pyx_mstate->__pyx_n_u_Set_errhandler, __pyx_mstate->__pyx_kp_b_iso88591_4O1_b_4y, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[252])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 191};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_errorcode};
    __pyx_mstate_global->__pyx_codeobj_tab[253] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Session_pyx, __pyx_mstate->__pyx_n_u_Call_errhandler, __pyx_mstate->__pyx_kp_b_iso88591_XQ_b_1D, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[253])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 200};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[254] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Session_pyx, __pyx_mstate->__pyx_n_u_toint, __pyx_mstate->__pyx_kp_b_iso88591_q_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[254])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 2, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 206};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_arg};
    __pyx_mstate_global->__pyx_codeobj_tab[255] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Session_pyx, __pyx_mstate->__pyx_n_u_fromint, __pyx_mstate->__pyx_kp_b_iso88591_A_Q_z_Qa, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[255])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 216};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[256] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Session_pyx, __pyx_mstate->__pyx_n_u_py2f, __pyx_mstate->__pyx_kp_b_iso88591_a_at1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[256])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 221};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_arg};
    __pyx_mstate_global->__pyx_codeobj_tab[257] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Session_pyx, __pyx_mstate->__pyx_n_u_f2py, __pyx_mstate->__pyx_kp_b_iso88591_A_q_z, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[257])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 52};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[258] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_reduce, __pyx_mstate->__pyx_kp_b_iso88591_A_Qa, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[258])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 60};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_handle};
    __pyx_mstate_global->__pyx_codeobj_tab[259] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_fromhandle, __pyx_mstate->__pyx_kp_b_iso88591_A_z__A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[259])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 67};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[260] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_free, __pyx_mstate->__pyx_kp_b_iso88591_a_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[260])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 76};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_group};
    __pyx_mstate_global->__pyx_codeobj_tab[261] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Get_group, __pyx_mstate->__pyx_kp_b_iso88591_1_7_Qa_F_N_4y_a_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[261])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 92};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_size_2};
    __pyx_mstate_global->__pyx_codeobj_tab[262] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Get_size, __pyx_mstate->__pyx_kp_b_iso88591_b_Qd_1A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[262])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 105};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_rank};
    __pyx_mstate_global->__pyx_codeobj_tab[263] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Get_rank, __pyx_mstate->__pyx_kp_b_iso88591_b_Qd_1A_q_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[263])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 118};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_comm, __pyx_mstate->__pyx_n_u_flag};
    __pyx_mstate_global->__pyx_codeobj_tab[264] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Compare, __pyx_mstate->__pyx_kp_b_iso88591_F_A_Yaq_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[264])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 130};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[265] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Clone, __pyx_mstate->__pyx_kp_b_iso88591_q_s_4q_F_L_Yat1_at1_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[265])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 139};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_cinfo, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[266] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Dup, __pyx_mstate->__pyx_kp_b_iso88591_9A_haq_s_4q_5_1_b_A_IQd_b_6a_IW, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[266])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 154};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[267] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Dup_with_info, __pyx_mstate->__pyx_kp_b_iso88591_y_s_4q_F_2_Yat1_at1_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[267])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 164};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_cinfo, __pyx_mstate->__pyx_n_u_comm, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[268] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Idup, __pyx_mstate->__pyx_kp_b_iso88591_nIQ_haq_s_4q_y_1A_5_1_b_Q_A_Yaw, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[268])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 182};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_comm, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[269] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Idup_with_info, __pyx_mstate->__pyx_kp_b_iso88591_s_4q_y_1A_F_31_Q_T_7_at1_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[269])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 194};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_group, __pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[270] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Create, __pyx_mstate->__pyx_kp_b_iso88591_A_Zq_l_q_l_s_1_F_O1_iq_A_at1_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[270])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 207};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_color, __pyx_mstate->__pyx_n_u_key, __pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[271] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Split, __pyx_mstate->__pyx_kp_b_iso88591_v_vQ_Zq_l_q_l_s_1_F_N_Qd_at1_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[271])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 220};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_split_type, __pyx_mstate->__pyx_n_u_key, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[272] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Split_type, __pyx_mstate->__pyx_kp_b_iso88591_A_q_Zq_l_q_l_s_1_F_q_U_iq_A_at1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[272])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 241};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_save};
    __pyx_mstate_global->__pyx_codeobj_tab[273] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Free, __pyx_mstate->__pyx_kp_b_iso88591_a_T_F_M_4q_81G4z, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[273])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 252};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[274] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Revoke, __pyx_mstate->__pyx_kp_b_iso88591_F_O1D, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[274])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 258};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_flag};
    __pyx_mstate_global->__pyx_codeobj_tab[275] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Is_revoked, __pyx_mstate->__pyx_kp_b_iso88591_A_F_q_IQa_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[275])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 266};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_group};
    __pyx_mstate_global->__pyx_codeobj_tab[276] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Get_failed, __pyx_mstate->__pyx_kp_b_iso88591_A_7_Qa_F_q_IQe1_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[276])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 274};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_num_to_ack, __pyx_mstate->__pyx_n_u_num_acked, __pyx_mstate->__pyx_n_u_c_num_to_ack};
    __pyx_mstate_global->__pyx_codeobj_tab[277] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Ack_failed, __pyx_mstate->__pyx_kp_b_iso88591_1_Q_gQ_1_M_iq_F_q_q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[277])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 288};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_flag};
    __pyx_mstate_global->__pyx_codeobj_tab[278] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Agree, __pyx_mstate->__pyx_kp_b_iso88591_ha_F_N_4y_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[278])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 295};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_flag, __pyx_mstate->__pyx_n_u_flag_ptr, __pyx_mstate->__pyx_n_u_flag_len, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[279] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Iagree, __pyx_mstate->__pyx_kp_b_iso88591_a_Q_z_AZs_9Cs_y_1A_F_O1_1G1_z_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[279])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 310};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[280] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Shrink, __pyx_mstate->__pyx_kp_b_iso88591_Zq_l_q_l_s_1_F_O1D_a_at1_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[280])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 322};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_comm, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[281] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Ishrink, __pyx_mstate->__pyx_kp_b_iso88591_Zq_l_q_l_s_1_y_1A_F_A_iq_q_at1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[281])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 339};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_info};
    __pyx_mstate_global->__pyx_codeobj_tab[282] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Set_info, __pyx_mstate->__pyx_kp_b_iso88591_1_F_Q_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[282])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 346};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_info};
    __pyx_mstate_global->__pyx_codeobj_tab[283] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Get_info, __pyx_mstate->__pyx_kp_b_iso88591_s_1_F_Q_a_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[283])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 369};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_base, __pyx_mstate->__pyx_n_u_size_2};
    __pyx_mstate_global->__pyx_codeobj_tab[284] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Attach_buffer, __pyx_mstate->__pyx_kp_b_iso88591_31_a_m1E_F_4A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[284])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 380};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_base, __pyx_mstate->__pyx_n_u_size_2};
    __pyx_mstate_global->__pyx_codeobj_tab[285] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Detach_buffer, __pyx_mstate->__pyx_kp_b_iso88591_q_a_F_4A_vQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[285])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 390};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[286] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Flush_buffer, __pyx_mstate->__pyx_kp_b_iso88591_a_F_1_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[286])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 396};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[287] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Iflush_buffer, __pyx_mstate->__pyx_kp_b_iso88591_q_y_1A_F_2_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[287])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 408};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_dest, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_smsg};
    __pyx_mstate_global->__pyx_codeobj_tab[288] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Send, __pyx_mstate->__pyx_kp_b_iso88591_A_q_q_Q_F_Ja_d_a_t1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[288])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 426};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_source, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_rmsg, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[289] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Recv, __pyx_mstate->__pyx_kp_b_iso88591_A_q_q_q_Q_Qa_F_Ja_d_a_E_Ya, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[289])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {8, 0, 0, 11, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 447};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_dest, __pyx_mstate->__pyx_n_u_sendtag, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_source, __pyx_mstate->__pyx_n_u_recvtag, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_smsg, __pyx_mstate->__pyx_n_u_rmsg, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[290] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Sendrecv, __pyx_mstate->__pyx_kp_b_iso88591_A_1_1_q_q_q_Qa_F_N_d_hha_d_hha, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[290])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {7, 0, 0, 10, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 475};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_dest, __pyx_mstate->__pyx_n_u_sendtag, __pyx_mstate->__pyx_n_u_source, __pyx_mstate->__pyx_n_u_recvtag, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_rank, __pyx_mstate->__pyx_n_u_rmsg, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[291] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Sendrecv_replace, __pyx_mstate->__pyx_kp_b_iso88591_A_1_1_q_7__G1_7__G1_q_Q_Qa_F_2_d, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[291])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 507};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_dest, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_smsg, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[292] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Isend, __pyx_mstate->__pyx_kp_b_iso88591_A_q_q_Q_y_1A_F_Kq_d_a_t9AWA_z_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[292])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 524};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_source, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_rmsg, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[293] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Irecv, __pyx_mstate->__pyx_kp_b_iso88591_A_q_q_Q_y_1A_F_Kq_d_a_E_Yawa_z_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[293])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {7, 0, 0, 10, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 541};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_dest, __pyx_mstate->__pyx_n_u_sendtag, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_source, __pyx_mstate->__pyx_n_u_recvtag, __pyx_mstate->__pyx_n_u_smsg, __pyx_mstate->__pyx_n_u_rmsg, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[294] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Isendrecv, __pyx_mstate->__pyx_kp_b_iso88591_A_1_1_q_q_y_1A_F_O1_d_hha_d_hha, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[294])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {6, 0, 0, 9, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 563};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_dest, __pyx_mstate->__pyx_n_u_sendtag, __pyx_mstate->__pyx_n_u_source, __pyx_mstate->__pyx_n_u_recvtag, __pyx_mstate->__pyx_n_u_rank, __pyx_mstate->__pyx_n_u_rmsg, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[295] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Isendrecv_replace, __pyx_mstate->__pyx_kp_b_iso88591_A_1_1_7__G1_7__G1_q_Q_y_1A_F_31, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[295])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 596};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_source, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[296] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Probe, __pyx_mstate->__pyx_kp_b_iso88591_A_q_q_Qa_F_IQ_E_Ya_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[296])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 612};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_source, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_flag, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[297] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Iprobe, __pyx_mstate->__pyx_kp_b_iso88591_A_q_q_Qa_F_Ja_E_YavQ_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[297])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 630};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_source, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_cmessage, __pyx_mstate->__pyx_n_u_statusp, __pyx_mstate->__pyx_n_u_message};
    __pyx_mstate_global->__pyx_codeobj_tab[298] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Mprobe, __pyx_mstate->__pyx_kp_b_iso88591_A_q_q_A_Qa_F_Ja_E_Yaz_y_1A_z_q_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[298])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 647};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_source, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_flag, __pyx_mstate->__pyx_n_u_cmessage, __pyx_mstate->__pyx_n_u_statusp, __pyx_mstate->__pyx_n_u_message};
    __pyx_mstate_global->__pyx_codeobj_tab[299] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Improbe, __pyx_mstate->__pyx_kp_b_iso88591_A_q_q_A_Qa_F_Kq_U_iq_az_5_3gQ_y_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[299])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 669};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_dest, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_smsg, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[300] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Send_init, __pyx_mstate->__pyx_kp_b_iso88591_A_q_q_Q_Qa_F_O1_d_a_t9AWA_z_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[300])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 686};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_source, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_rmsg, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[301] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Recv_init, __pyx_mstate->__pyx_kp_b_iso88591_A_q_q_Q_Qa_F_O1_d_a_E_Yawa_z_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[301])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {6, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 706};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_partitions, __pyx_mstate->__pyx_n_u_dest, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_smsg, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[302] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Psend_init, __pyx_mstate->__pyx_kp_b_iso88591_A_q_0_fA_Qa_F_N_l_hd_t9D_z_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[302])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {6, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 725};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_partitions, __pyx_mstate->__pyx_n_u_source, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_rmsg, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[303] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Precv_init, __pyx_mstate->__pyx_kp_b_iso88591_A_q_0_ha_Qa_F_N_l_hd_E_Yd_1G1_z, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[303])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 749};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_dest, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_smsg};
    __pyx_mstate_global->__pyx_codeobj_tab[304] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Bsend, __pyx_mstate->__pyx_kp_b_iso88591_A_q_q_Q_F_Kq_d_a_t1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[304])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 763};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_dest, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_smsg};
    __pyx_mstate_global->__pyx_codeobj_tab[305] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Ssend, __pyx_mstate->__pyx_kp_b_iso88591_A_q_q_Q_F_Kq_d_a_t1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[305])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 777};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_dest, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_smsg};
    __pyx_mstate_global->__pyx_codeobj_tab[306] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Rsend, __pyx_mstate->__pyx_kp_b_iso88591_A_q_q_Q_F_Kq_d_a_t1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[306])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 793};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_dest, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_smsg, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[307] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Ibsend, __pyx_mstate->__pyx_kp_b_iso88591_A_q_q_Q_y_1A_F_L_d_a_t9AWA_z_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[307])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 810};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_dest, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_smsg, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[308] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Issend, __pyx_mstate->__pyx_kp_b_iso88591_A_q_q_Q_y_1A_F_L_d_a_t9AWA_z_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[308])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 827};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_dest, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_smsg, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[309] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Irsend, __pyx_mstate->__pyx_kp_b_iso88591_A_q_q_Q_y_1A_F_L_d_a_t9AWA_z_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[309])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 846};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_dest, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_smsg, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[310] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Bsend_init, __pyx_mstate->__pyx_kp_b_iso88591_A_q_q_Q_Qa_F_A_d_a_t9AWA_z_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[310])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 863};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_dest, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_smsg, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[311] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Ssend_init, __pyx_mstate->__pyx_kp_b_iso88591_A_q_q_Q_Qa_F_A_d_a_t9AWA_z_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[311])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 880};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_dest, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_smsg, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[312] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Rsend_init, __pyx_mstate->__pyx_kp_b_iso88591_A_q_q_Q_Qa_F_A_d_a_t9AWA_z_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[312])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 903};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[313] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Barrier, __pyx_mstate->__pyx_kp_b_iso88591_F_Kq_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[313])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 912};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_root, __pyx_mstate->__pyx_n_u_m};
    __pyx_mstate_global->__pyx_codeobj_tab[314] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Bcast, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_1E_t1_F_Kq_WAYaq_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[314])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 926};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_root, __pyx_mstate->__pyx_n_u_m};
    __pyx_mstate_global->__pyx_codeobj_tab[315] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Gather, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_AS_A_F_L_WAYaq_WAYaq_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[315])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 942};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_root, __pyx_mstate->__pyx_n_u_m};
    __pyx_mstate_global->__pyx_codeobj_tab[316] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Gatherv, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_AS_A_F_M_WA_1_WAZq_1_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[316])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 961};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_root, __pyx_mstate->__pyx_n_u_m};
    __pyx_mstate_global->__pyx_codeobj_tab[317] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Scatter, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_Qc_6_Q_F_M_WAYaq_WAYaq_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[317])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 977};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_root, __pyx_mstate->__pyx_n_u_m};
    __pyx_mstate_global->__pyx_codeobj_tab[318] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Scatterv, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_Qc_6_Q_F_N_WAZq_1_WA_1_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[318])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 996};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_m};
    __pyx_mstate_global->__pyx_codeobj_tab[319] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Allgather, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_q_9IT_F_O1_WAYaq_WAYaq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[319])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1014};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_m};
    __pyx_mstate_global->__pyx_codeobj_tab[320] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Allgatherv, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_q_9IT_F_A_WA_1_WAZq_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[320])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1032};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_m};
    __pyx_mstate_global->__pyx_codeobj_tab[321] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Alltoall, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_as_9D_F_N_WAYaq_WAYaq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[321])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1049};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_m};
    __pyx_mstate_global->__pyx_codeobj_tab[322] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Alltoallv, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_as_9D_F_O1_WAZq_1_WAZq_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[322])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1067};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_m};
    __pyx_mstate_global->__pyx_codeobj_tab[323] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Alltoallw, __pyx_mstate->__pyx_kp_b_iso88591_A_q_a_F_O1_WAZq_1_WAZq_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[323])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1088};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_op, __pyx_mstate->__pyx_n_u_root, __pyx_mstate->__pyx_n_u_m};
    __pyx_mstate_global->__pyx_codeobj_tab[324] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Reduce, __pyx_mstate->__pyx_kp_b_iso88591_A_A_Kq_AYivT_F_L_WAWAYaq_ivT, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[324])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1104};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_op, __pyx_mstate->__pyx_n_u_m};
    __pyx_mstate_global->__pyx_codeobj_tab[325] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Allreduce, __pyx_mstate->__pyx_kp_b_iso88591_A_A_Kq_q_a_F_O1_WAWAYaq_it1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[325])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1119};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_op, __pyx_mstate->__pyx_n_u_m};
    __pyx_mstate_global->__pyx_codeobj_tab[326] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Reduce_scatter_block, __pyx_mstate->__pyx_kp_b_iso88591_A_A_Kq_9IT_F_6a_WAWAYaq_it1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[326])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1134};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_recvcounts, __pyx_mstate->__pyx_n_u_op, __pyx_mstate->__pyx_n_u_m};
    __pyx_mstate_global->__pyx_codeobj_tab[327] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Reduce_scatter, __pyx_mstate->__pyx_kp_b_iso88591_A_1_A_Kq_AYa_Q_F_0_WAWAZq_it1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[327])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1154};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[328] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Ibarrier, __pyx_mstate->__pyx_kp_b_iso88591_y_1A_F_L_Yawa_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[328])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1162};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_root, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[329] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Ibcast, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_1E_t1_y_1A_F_L_WAYaq_iq_q_z, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[329])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1179};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_root, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[330] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Igather, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_AS_A_y_1A_F_M_WAYaq_WAYaq_i, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[330])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1198};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_root, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[331] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Igatherv, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_AS_A_y_1A_F_N_WA_1_WAZq_1_i, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[331])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1217};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_root, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[332] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Iscatter, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_Qc_6_Q_y_1A_F_N_WAYaq_WAYaq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[332])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1236};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_root, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[333] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Iscatterv, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_Qc_6_Q_y_1A_F_O1_WAZq_1_WA, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[333])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1255};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[334] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Iallgather, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_q_9IT_y_1A_F_A_WAYaq_WAYaq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[334])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1273};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[335] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Iallgatherv, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_q_9IT_y_1A_F_Q_WA_1_WAZq_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[335])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1290};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[336] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Ialltoall, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_as_9D_y_1A_F_O1_WAYaq_WAYaq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[336])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1308};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[337] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Ialltoallv, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_as_9D_y_1A_F_A_WAZq_1_WAZq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[337])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1326};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[338] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Ialltoallw, __pyx_mstate->__pyx_kp_b_iso88591_A_q_a_y_1A_F_A_WAZq_1_WAZq_1_z_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[338])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1344};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_op, __pyx_mstate->__pyx_n_u_root, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[339] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Ireduce, __pyx_mstate->__pyx_kp_b_iso88591_A_A_Kq_AYivT_y_1A_F_M_WAWAYaq_iv, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[339])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1362};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_op, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[340] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Iallreduce, __pyx_mstate->__pyx_kp_b_iso88591_A_A_Kq_q_a_y_1A_F_A_WAWAYaq_it9A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[340])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1379};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_op, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[341] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Ireduce_scatter_block, __pyx_mstate->__pyx_kp_b_iso88591_A_A_Kq_9IT_y_1A_F_7q_WAWAYaq_it9, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[341])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1396};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_recvcounts, __pyx_mstate->__pyx_n_u_op, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[342] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Ireduce_scatter, __pyx_mstate->__pyx_kp_b_iso88591_A_1_A_Kq_AYa_Q_y_1A_F_1_WAWAZq_i, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[342])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1418};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[343] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Barrier_init, __pyx_mstate->__pyx_kp_b_iso88591_A_Qa_F_A_IT_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[343])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1431};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_root, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[344] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Bcast_init, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_1E_t1_Qa_F_A_WAYaq_it9AWA_z, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[344])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1449};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_root, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[345] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Gather_init, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_AS_A_Qa_F_Q_WAYaq_WAYaq_it9, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[345])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1469};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_root, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[346] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Gatherv_init, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_AS_A_Qa_F_a_WA_1_WAZq_1_it9, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[346])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1489};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_root, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[347] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Scatter_init, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_Qc_6_Q_Qa_F_a_WAYaq_WAYaq_i, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[347])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1509};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_root, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[348] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Scatterv_init, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_Qc_6_Q_Qa_F_q_WAZq_1_WA_1_i, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[348])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1529};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[349] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Allgather_init, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_q_9IT_Qa_F_0_WAYaq_WAYaq_Ya, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[349])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1548};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[350] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Allgatherv_init, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_q_9IT_Qa_F_1_WA_1_WAZq_1_Ya, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[350])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1566};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[351] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Alltoall_init, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_as_9D_Qa_F_q_WAYaq_WAYaq_Ya, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[351])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1585};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[352] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Alltoallv_init, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_as_9D_Qa_F_0_WAZq_1_WAZq_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[352])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1604};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[353] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Alltoallw_init, __pyx_mstate->__pyx_kp_b_iso88591_A_q_a_Qa_F_0_WAZq_1_WAZq_1_Yawa, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[353])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {6, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1623};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_op, __pyx_mstate->__pyx_n_u_root, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[354] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Reduce_init, __pyx_mstate->__pyx_kp_b_iso88591_A_A_Kq_AYivT_Qa_F_Q_WAWAYaq_ivT, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[354])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1642};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_op, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[355] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Allreduce_init, __pyx_mstate->__pyx_kp_b_iso88591_A_A_Kq_q_a_Qa_F_0_WAWAYaq_it9D_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[355])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1660};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_op, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[356] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Reduce_scatter_block_init, __pyx_mstate->__pyx_kp_b_iso88591_A_A_Kq_9IT_Qa_F_1_WAWAYaq_it9D_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[356])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {6, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1678};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_recvcounts, __pyx_mstate->__pyx_n_u_op, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[357] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Reduce_scatter_init, __pyx_mstate->__pyx_kp_b_iso88591_A_1_A_Kq_AYa_Q_Qa_F_5Q_WAWAZq_it, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[357])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1701};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_flag};
    __pyx_mstate_global->__pyx_codeobj_tab[358] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Is_inter, __pyx_mstate->__pyx_kp_b_iso88591_b_1D_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[358])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1714};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[359] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Is_intra, __pyx_mstate->__pyx_kp_b_iso88591_t4y, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[359])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1725};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_topo};
    __pyx_mstate_global->__pyx_codeobj_tab[360] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Get_topology, __pyx_mstate->__pyx_kp_b_iso88591_a_b_Qd_1A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[360])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1746};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[361] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Get_parent, __pyx_mstate->__pyx_kp_b_iso88591_A_a_F_q_Q_at1_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[361])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1756};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[362] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Disconnect, __pyx_mstate->__pyx_kp_b_iso88591_A_F_q_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[362])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1762};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_fd, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[363] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Join, __pyx_mstate->__pyx_kp_b_iso88591_A_k_AQ_F_M_at1_at1_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[363])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1775};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_keyval, __pyx_mstate->__pyx_n_u_attrval, __pyx_mstate->__pyx_n_u_flag};
    __pyx_mstate_global->__pyx_codeobj_tab[364] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Get_attr, __pyx_mstate->__pyx_kp_b_iso88591_81_Q_b_ixq_4vWA_83fG1_3k_3gQ_3a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[364])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1801};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_keyval, __pyx_mstate->__pyx_n_u_attrval};
    __pyx_mstate_global->__pyx_codeobj_tab[365] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Set_attr, __pyx_mstate->__pyx_kp_b_iso88591_at9HA, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[365])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1807};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_keyval};
    __pyx_mstate_global->__pyx_codeobj_tab[366] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Delete_attr, __pyx_mstate->__pyx_kp_b_iso88591_ha_at9A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[366])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1813};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_copy_fn, __pyx_mstate->__pyx_n_u_delete_fn, __pyx_mstate->__pyx_n_u_nopython, __pyx_mstate->__pyx_n_u_keyval, __pyx_mstate->__pyx_n_u_copy_2, __pyx_mstate->__pyx_n_u_del, __pyx_mstate->__pyx_n_u_state};
    __pyx_mstate_global->__pyx_codeobj_tab[367] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Create_keyval, __pyx_mstate->__pyx_kp_b_iso88591_A_Q_2_31_y_Q_b_awfAXXQ_A_HA_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[367])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1831};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_keyval, __pyx_mstate->__pyx_n_u_keyval_save};
    __pyx_mstate_global->__pyx_codeobj_tab[368] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Free_keyval, __pyx_mstate->__pyx_kp_b_iso88591_A_Q_q_b_AQa_A_A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[368])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1844};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_errhandler_fn, __pyx_mstate->__pyx_n_u_errhandler, __pyx_mstate->__pyx_n_u_fn, __pyx_mstate->__pyx_n_u_index};
    __pyx_mstate_global->__pyx_codeobj_tab[369] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Create_errhandler, __pyx_mstate->__pyx_kp_b_iso88591_A_AQ_0_1O1A_at1Ja_aq_q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[369])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1862};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_errhandler};
    __pyx_mstate_global->__pyx_codeobj_tab[370] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Get_errhandler, __pyx_mstate->__pyx_kp_b_iso88591_AQ_b_q_IQj_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[370])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1870};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_errhandler};
    __pyx_mstate_global->__pyx_codeobj_tab[371] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Set_errhandler, __pyx_mstate->__pyx_kp_b_iso88591_4O1_b_q_IZq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[371])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1876};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_errorcode};
    __pyx_mstate_global->__pyx_codeobj_tab[372] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Call_errhandler, __pyx_mstate->__pyx_kp_b_iso88591_XQ_b_Ya, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[372])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1882};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_errorcode};
    __pyx_mstate_global->__pyx_codeobj_tab[373] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Abort, __pyx_mstate->__pyx_kp_b_iso88591_6_q_b_iq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[373])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1896};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_name_2, __pyx_mstate->__pyx_n_u_nlen};
    __pyx_mstate_global->__pyx_codeobj_tab[374] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Get_name, __pyx_mstate->__pyx_kp_b_iso88591_b_ivQa_xq_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[374])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1905};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_name_2, __pyx_mstate->__pyx_n_u_cname};
    __pyx_mstate_global->__pyx_codeobj_tab[375] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Set_name, __pyx_mstate->__pyx_kp_b_iso88591_XQ_1_xq_aq_b_iq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[375])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1924};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[376] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_toint, __pyx_mstate->__pyx_kp_b_iso88591_q_Qd, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[376])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 2, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1930};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_arg};
    __pyx_mstate_global->__pyx_codeobj_tab[377] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_fromint, __pyx_mstate->__pyx_kp_b_iso88591_A_Q_z_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[377])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1940};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[378] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_py2f, __pyx_mstate->__pyx_kp_b_iso88591_a_1D, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[378])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1945};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_arg};
    __pyx_mstate_global->__pyx_codeobj_tab[379] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_f2py, __pyx_mstate->__pyx_kp_b_iso88591_A_q_z_aq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[379])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1954};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_obj, __pyx_mstate->__pyx_n_u_dest, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[380] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_send, __pyx_mstate->__pyx_kp_b_iso88591_A_q_T_z_vU, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[380])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1964};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_obj, __pyx_mstate->__pyx_n_u_dest, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[381] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_bsend, __pyx_mstate->__pyx_kp_b_iso88591_A_q_T_5_e1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[381])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1974};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_obj, __pyx_mstate->__pyx_n_u_dest, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[382] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_ssend, __pyx_mstate->__pyx_kp_b_iso88591_A_q_T_5_e1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[382])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1984};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_source, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_comm, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[383] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_recv, __pyx_mstate->__pyx_kp_b_iso88591_A_Q_q_q_T_Qa_z_xuF, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[383])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {8, 0, 0, 10, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1996};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendobj, __pyx_mstate->__pyx_n_u_dest, __pyx_mstate->__pyx_n_u_sendtag, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_source, __pyx_mstate->__pyx_n_u_recvtag, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_comm, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[384] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_sendrecv, __pyx_mstate->__pyx_kp_b_iso88591_A_1_1_q_T_Qa_Qixq_xq_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[384])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2013};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_obj, __pyx_mstate->__pyx_n_u_dest, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_comm, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[385] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_isend, __pyx_mstate->__pyx_kp_b_iso88591_A_q_T_y_1A_z_AU_V1G1_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[385])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2025};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_obj, __pyx_mstate->__pyx_n_u_dest, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_comm, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[386] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_ibsend, __pyx_mstate->__pyx_kp_b_iso88591_A_q_T_y_1A_z_Qe6_fAWA_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[386])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2037};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_obj, __pyx_mstate->__pyx_n_u_dest, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_comm, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[387] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_issend, __pyx_mstate->__pyx_kp_b_iso88591_A_q_T_y_1A_z_Qe6_fAWA_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[387])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2049};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_source, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_comm, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[388] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_irecv, __pyx_mstate->__pyx_kp_b_iso88591_A_Q_q_T_y_1A_z_AU_vQgQ_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[388])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2061};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_source, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_comm, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[389] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_probe, __pyx_mstate->__pyx_kp_b_iso88591_A_q_q_T_Qa_85_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[389])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2072};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_source, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_comm, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[390] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_iprobe, __pyx_mstate->__pyx_kp_b_iso88591_A_q_q_T_Qa_1HE_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[390])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2083};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_source, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_comm, __pyx_mstate->__pyx_n_u_statusp, __pyx_mstate->__pyx_n_u_message};
    __pyx_mstate_global->__pyx_codeobj_tab[391] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_mprobe, __pyx_mstate->__pyx_kp_b_iso88591_A_q_q_T_Qa_y_1A_z_Qhe1_wiq_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[391])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2097};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_source, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_flag, __pyx_mstate->__pyx_n_u_comm, __pyx_mstate->__pyx_n_u_statusp, __pyx_mstate->__pyx_n_u_message};
    __pyx_mstate_global->__pyx_codeobj_tab[392] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_improbe, __pyx_mstate->__pyx_kp_b_iso88591_A_q_q_T_Qa_y_1A_z_axuF_1_y_5_3gQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[392])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2113};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[393] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_barrier, __pyx_mstate->__pyx_kp_b_iso88591_T_AQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[393])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2122};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_obj, __pyx_mstate->__pyx_n_u_root, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[394] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_bcast, __pyx_mstate->__pyx_kp_b_iso88591_A_T_5_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[394])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2131};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendobj, __pyx_mstate->__pyx_n_u_root, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[395] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_gather, __pyx_mstate->__pyx_kp_b_iso88591_A_T_1IV1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[395])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2140};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendobj, __pyx_mstate->__pyx_n_u_root, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[396] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_scatter, __pyx_mstate->__pyx_kp_b_iso88591_A_T_AYfA, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[396])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2149};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendobj, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[397] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_allgather, __pyx_mstate->__pyx_kp_b_iso88591_A_T_ay, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[397])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2157};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendobj, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[398] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_alltoall, __pyx_mstate->__pyx_kp_b_iso88591_A_T_Qiq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[398])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2165};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendobj, __pyx_mstate->__pyx_n_u_op, __pyx_mstate->__pyx_n_u_root, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[399] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_reduce_2, __pyx_mstate->__pyx_kp_b_iso88591_A_Q_T_1IT_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[399])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2175};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendobj, __pyx_mstate->__pyx_n_u_op, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[400] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_allreduce, __pyx_mstate->__pyx_kp_b_iso88591_A_Q_T_ay_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[400])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2201};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_group, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[401] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Create_group, __pyx_mstate->__pyx_kp_b_iso88591_8_fA_k_AQ_F_1_iuAT_at1_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[401])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2211};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_group, __pyx_mstate->__pyx_n_u_stringtag, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_errhandler, __pyx_mstate->__pyx_n_u_cstringtag, __pyx_mstate->__pyx_n_u_cerrhdl, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[402] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Create_from_group, __pyx_mstate->__pyx_kp_b_iso88591_A_31_HA_nAQ_k_AQ_F_6a_d_9AT_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[402])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2230};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_dims, __pyx_mstate->__pyx_n_u_periods, __pyx_mstate->__pyx_n_u_reorder, __pyx_mstate->__pyx_n_u_ndims, __pyx_mstate->__pyx_n_u_idims, __pyx_mstate->__pyx_n_u_iperiods, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[403] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Create_cart, __pyx_mstate->__pyx_kp_b_iso88591_A_Q_7q_xq_awaq_83fJa_Qiwj_A_9G1A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[403])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 9, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2251};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_index, __pyx_mstate->__pyx_n_u_edges, __pyx_mstate->__pyx_n_u_reorder, __pyx_mstate->__pyx_n_u_nnodes, __pyx_mstate->__pyx_n_u_iindex, __pyx_mstate->__pyx_n_u_nedges, __pyx_mstate->__pyx_n_u_iedges, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[404] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Create_graph, __pyx_mstate->__pyx_kp_b_iso88591_A_Q_q_q_6_Bb_F_6_Ba_a_a_k_AQ_F_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[404])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {7, 0, 0, 14, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2275};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sources, __pyx_mstate->__pyx_n_u_destinations, __pyx_mstate->__pyx_n_u_sourceweights, __pyx_mstate->__pyx_n_u_destweights, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_reorder, __pyx_mstate->__pyx_n_u_indegree, __pyx_mstate->__pyx_n_u_isource, __pyx_mstate->__pyx_n_u_outdegree, __pyx_mstate->__pyx_n_u_idest, __pyx_mstate->__pyx_n_u_isourceweight, __pyx_mstate->__pyx_n_u_idestweight, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[405] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Create_dist_graph_adjacent, __pyx_mstate->__pyx_kp_b_iso88591_A_a_A_Q_1_1_87_hay_1A_q_Qa_q_81N, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[405])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {7, 0, 0, 15, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2309};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sources, __pyx_mstate->__pyx_n_u_degrees, __pyx_mstate->__pyx_n_u_destinations, __pyx_mstate->__pyx_n_u_weights, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_reorder, __pyx_mstate->__pyx_n_u_nv, __pyx_mstate->__pyx_n_u_ne_2, __pyx_mstate->__pyx_n_u_isource, __pyx_mstate->__pyx_n_u_idegree, __pyx_mstate->__pyx_n_u_idest, __pyx_mstate->__pyx_n_u_iweight, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[406] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Create_dist_graph, __pyx_mstate->__pyx_kp_b_iso88591_A_Q_ha_Q_1_9AT_T_E_auF_xq_d_1_4q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[406])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2338};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_local_leader, __pyx_mstate->__pyx_n_u_peer_comm, __pyx_mstate->__pyx_n_u_remote_leader, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[407] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Create_intercomm, __pyx_mstate->__pyx_kp_b_iso88591_A_q_k_AQ_F_0_Ya_a_at1_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[407])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2359};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_dims, __pyx_mstate->__pyx_n_u_periods, __pyx_mstate->__pyx_n_u_ndims, __pyx_mstate->__pyx_n_u_idims, __pyx_mstate->__pyx_n_u_iperiods, __pyx_mstate->__pyx_n_u_rank};
    __pyx_mstate_global->__pyx_codeobj_tab[408] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Cart_map, __pyx_mstate->__pyx_kp_b_iso88591_A_7q_xq_awaq_83fJa_Qiwj_A_9G1A_b, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[408])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2376};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_index, __pyx_mstate->__pyx_n_u_edges, __pyx_mstate->__pyx_n_u_nnodes, __pyx_mstate->__pyx_n_u_iindex, __pyx_mstate->__pyx_n_u_nedges, __pyx_mstate->__pyx_n_u_iedges, __pyx_mstate->__pyx_n_u_rank};
    __pyx_mstate_global->__pyx_codeobj_tab[409] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Graph_map, __pyx_mstate->__pyx_kp_b_iso88591_A_q_q_6_Bb_F_6_Ba_a_a_b_Qd_8881A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[409])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2401};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_op, __pyx_mstate->__pyx_n_u_m};
    __pyx_mstate_global->__pyx_codeobj_tab[410] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Scan, __pyx_mstate->__pyx_kp_b_iso88591_A_A_Kq_9IT_F_Ja_WAWAYaq_it1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[410])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2418};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_op, __pyx_mstate->__pyx_n_u_m};
    __pyx_mstate_global->__pyx_codeobj_tab[411] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Exscan, __pyx_mstate->__pyx_kp_b_iso88591_A_A_Kq_AYit1_F_L_WAWAYaq_it1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[411])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2435};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_op, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[412] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Iscan, __pyx_mstate->__pyx_kp_b_iso88591_A_A_Kq_9IT_y_1A_F_Kq_WAWAYaq_it9, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[412])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2452};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_op, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[413] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Iexscan, __pyx_mstate->__pyx_kp_b_iso88591_A_A_Kq_AYit1_y_1A_F_M_WAWAYaq_it, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[413])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2471};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_op, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[414] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Scan_init, __pyx_mstate->__pyx_kp_b_iso88591_A_A_Kq_9IT_Qa_F_O1_WAWAYaq_it9D, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[414])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2490};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_op, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[415] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Exscan_init, __pyx_mstate->__pyx_kp_b_iso88591_A_A_Kq_AYit1_Qa_F_Q_WAWAYaq_it9D, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[415])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2511};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendobj, __pyx_mstate->__pyx_n_u_op, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[416] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_scan, __pyx_mstate->__pyx_kp_b_iso88591_A_Q_T_z_4q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[416])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2520};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendobj, __pyx_mstate->__pyx_n_u_op, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[417] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_exscan, __pyx_mstate->__pyx_kp_b_iso88591_A_Q_T_1IT, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[417])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {7, 0, 0, 16, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2534};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_command, __pyx_mstate->__pyx_n_u_args, __pyx_mstate->__pyx_n_u_maxprocs, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_root, __pyx_mstate->__pyx_n_u_errcodes, __pyx_mstate->__pyx_n_u_cmd, __pyx_mstate->__pyx_n_u_argv, __pyx_mstate->__pyx_n_u_ierrcodes, __pyx_mstate->__pyx_n_u_rank, __pyx_mstate->__pyx_n_u_unused1, __pyx_mstate->__pyx_n_u_unused2, __pyx_mstate->__pyx_n_u_unused3, __pyx_mstate->__pyx_n_u_comm, __pyx_mstate->__pyx_n_u_i};
    __pyx_mstate_global->__pyx_codeobj_tab[418] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Spawn, __pyx_mstate->__pyx_kp_b_iso88591_A_Q_A_Q_1_a_b_Qd_1A_5_1_k_1A_l_6, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[418])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {7, 0, 0, 26, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2570};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_command, __pyx_mstate->__pyx_n_u_args, __pyx_mstate->__pyx_n_u_maxprocs, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_root, __pyx_mstate->__pyx_n_u_errcodes, __pyx_mstate->__pyx_n_u_count, __pyx_mstate->__pyx_n_u_cmds, __pyx_mstate->__pyx_n_u_argvs, __pyx_mstate->__pyx_n_u_infos, __pyx_mstate->__pyx_n_u_imaxprocs, __pyx_mstate->__pyx_n_u_ierrcodes, __pyx_mstate->__pyx_n_u_rank, __pyx_mstate->__pyx_n_u_unused1, __pyx_mstate->__pyx_n_u_unused2, __pyx_mstate->__pyx_n_u_unused3, __pyx_mstate->__pyx_n_u_unused4, __pyx_mstate->__pyx_n_u_unused5, __pyx_mstate->__pyx_n_u_np, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_comm, __pyx_mstate->__pyx_n_u_p, __pyx_mstate->__pyx_n_u_q, __pyx_mstate->__pyx_n_u__136, __pyx_mstate->__pyx_n_u_j};
    __pyx_mstate_global->__pyx_codeobj_tab[419] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Spawn_multiple, __pyx_mstate->__pyx_kp_b_iso88591_A_q_a_1_1_Q_q_a_a_b_Qd_1A_5_1_l, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[419])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2624};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_port_name, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_root, __pyx_mstate->__pyx_n_u_cportname, __pyx_mstate->__pyx_n_u_rank, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[420] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Accept, __pyx_mstate->__pyx_kp_b_iso88591_A_q_b_Qd_1A_5_1_AQ_k_AQ_F_O1_t9A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[420])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2647};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_port_name, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_root, __pyx_mstate->__pyx_n_u_cportname, __pyx_mstate->__pyx_n_u_rank, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[421] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Connect, __pyx_mstate->__pyx_kp_b_iso88591_A_q_b_Qd_1A_5_1_AQ_k_AQ_F_A_t9A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[421])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2743};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_m};
    __pyx_mstate_global->__pyx_codeobj_tab[422] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Neighbor_allgather, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_IYd_F_4A_WAYaq_WAYaq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[422])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2758};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_m};
    __pyx_mstate_global->__pyx_codeobj_tab[423] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Neighbor_allgatherv, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_IYd_F_5Q_WAYaq_WAZq_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[423])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2773};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_m};
    __pyx_mstate_global->__pyx_codeobj_tab[424] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Neighbor_alltoall, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_q_9IT_F_31_WAYaq_WAYaq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[424])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2788};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_m};
    __pyx_mstate_global->__pyx_codeobj_tab[425] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Neighbor_alltoallv, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_q_9IT_F_4A_WAZq_1_WAZq_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[425])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2803};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_m};
    __pyx_mstate_global->__pyx_codeobj_tab[426] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Neighbor_alltoallw, __pyx_mstate->__pyx_kp_b_iso88591_A_4q_F_4A_WAZq_1_WAZq_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[426])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2821};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[427] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Ineighbor_allgather, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_IYd_y_1A_F_5Q_WAYaq_WAYaq_z, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[427])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2839};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[428] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Ineighbor_allgatherv, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_IYd_y_1A_F_6a_WAYaq_WAZq_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[428])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2857};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[429] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Ineighbor_alltoall, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_q_9IT_y_1A_F_4A_WAYaq_WAYaq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[429])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2875};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[430] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Ineighbor_alltoallv, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_q_9IT_y_1A_F_5Q_WAZq_1_WAZq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[430])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2893};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[431] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Ineighbor_alltoallw, __pyx_mstate->__pyx_kp_b_iso88591_A_4q_y_1A_F_5Q_WAZq_1_WAZq_1_z_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[431])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2914};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[432] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Neighbor_allgather_init, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_IYd_Qa_F_9_WAYaq_WAYaq_Yawa, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[432])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2933};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[433] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Neighbor_allgatherv_init, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_IYd_Qa_F_WAYaq_WAZq_1_Yawa, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[433])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2952};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[434] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Neighbor_alltoall_init, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_q_9IT_Qa_F_8_WAYaq_WAYaq_Ya, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[434])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2971};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[435] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Neighbor_alltoallv_init, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_q_9IT_Qa_F_9_WAZq_1_WAZq_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[435])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2990};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendbuf, __pyx_mstate->__pyx_n_u_recvbuf, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[436] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Neighbor_alltoallw_init, __pyx_mstate->__pyx_kp_b_iso88591_A_4q_Qa_F_9_WAZq_1_WAZq_1_Yawa_z, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[436])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3011};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendobj, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[437] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_neighbor_allgather, __pyx_mstate->__pyx_kp_b_iso88591_T_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[437])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3016};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sendobj, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[438] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_neighbor_alltoall, __pyx_mstate->__pyx_kp_b_iso88591_q_T_ay, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[438])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3038};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_dim};
    __pyx_mstate_global->__pyx_codeobj_tab[439] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Get_dim, __pyx_mstate->__pyx_kp_b_iso88591_q_b_q_IQa_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[439])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 14, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3056};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_ndim, __pyx_mstate->__pyx_n_u_idims, __pyx_mstate->__pyx_n_u_unused1, __pyx_mstate->__pyx_n_u_iperiods, __pyx_mstate->__pyx_n_u_unused2, __pyx_mstate->__pyx_n_u_icoords, __pyx_mstate->__pyx_n_u_unused3, __pyx_mstate->__pyx_n_u_dims, __pyx_mstate->__pyx_n_u_periods, __pyx_mstate->__pyx_n_u_coords, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_i};
    __pyx_mstate_global->__pyx_codeobj_tab[440] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Get_topo, __pyx_mstate->__pyx_kp_b_iso88591_b_q_IQa_xq_aq_Q_xq_aq_A_xq_aq_b, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[440])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3097};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_coords, __pyx_mstate->__pyx_n_u_ndim, __pyx_mstate->__pyx_n_u_icoords, __pyx_mstate->__pyx_n_u_rank};
    __pyx_mstate_global->__pyx_codeobj_tab[441] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Get_cart_rank, __pyx_mstate->__pyx_kp_b_iso88591_6a_a_b_r_Yaq_b_Qd_9AQ_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[441])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3108};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_rank, __pyx_mstate->__pyx_n_u_ndim, __pyx_mstate->__pyx_n_u_icoords, __pyx_mstate->__pyx_n_u_unused, __pyx_mstate->__pyx_n_u_coords, __pyx_mstate->__pyx_n_u_i};
    __pyx_mstate_global->__pyx_codeobj_tab[442] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Get_coords, __pyx_mstate->__pyx_kp_b_iso88591_81_a_b_q_IQa_havQa_b_q_IV6_QgQc, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[442])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3122};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_direction, __pyx_mstate->__pyx_n_u_disp, __pyx_mstate->__pyx_n_u_source, __pyx_mstate->__pyx_n_u_dest};
    __pyx_mstate_global->__pyx_codeobj_tab[443] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Shift, __pyx_mstate->__pyx_kp_b_iso88591_0_b_at9KvQhaq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[443])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3133};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_remain_dims, __pyx_mstate->__pyx_n_u_ndim, __pyx_mstate->__pyx_n_u_iremdims, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[444] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Sub, __pyx_mstate->__pyx_kp_b_iso88591_2_q_b_q_IQa_ha_F_1_Zs_1_F_L_Yj, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[444])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3148};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_nnodes, __pyx_mstate->__pyx_n_u_dims, __pyx_mstate->__pyx_n_u_ndims, __pyx_mstate->__pyx_n_u_idims, __pyx_mstate->__pyx_n_u_unused, __pyx_mstate->__pyx_n_u_i};
    __pyx_mstate_global->__pyx_codeobj_tab[445] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Compute_dims, __pyx_mstate->__pyx_kp_b_iso88591_1_nAQ_q_2Q_c_6_O1HG1_1E_T_e1A_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[445])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3180};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_nnodes, __pyx_mstate->__pyx_n_u_nedges};
    __pyx_mstate_global->__pyx_codeobj_tab[446] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Get_dims, __pyx_mstate->__pyx_kp_b_iso88591_a_b_iq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[446])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 11, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3203};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_nindex, __pyx_mstate->__pyx_n_u_nedges, __pyx_mstate->__pyx_n_u_iindex, __pyx_mstate->__pyx_n_u_unused1, __pyx_mstate->__pyx_n_u_iedges, __pyx_mstate->__pyx_n_u_unused2, __pyx_mstate->__pyx_n_u_index, __pyx_mstate->__pyx_n_u_edges, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_i};
    __pyx_mstate_global->__pyx_codeobj_tab[447] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Get_topo, __pyx_mstate->__pyx_kp_b_iso88591_a_b_4y_1_xq_1_xq_b_Qd_8881_AV1C, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[447])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3236};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_rank, __pyx_mstate->__pyx_n_u_nneighbors};
    __pyx_mstate_global->__pyx_codeobj_tab[448] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Get_neighbors_count, __pyx_mstate->__pyx_kp_b_iso88591_HA_a_b_ivQa_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[448])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3250};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_rank, __pyx_mstate->__pyx_n_u_nneighbors, __pyx_mstate->__pyx_n_u_ineighbors, __pyx_mstate->__pyx_n_u_unused, __pyx_mstate->__pyx_n_u_neighbors, __pyx_mstate->__pyx_n_u_i};
    __pyx_mstate_global->__pyx_codeobj_tab[449] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Get_neighbors, __pyx_mstate->__pyx_kp_b_iso88591_ha_q_b_IV1A_ha_1A_b_1_IV_q_1Ct5, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[449])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3286};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_indegree, __pyx_mstate->__pyx_n_u_outdegree, __pyx_mstate->__pyx_n_u_weighted};
    __pyx_mstate_global->__pyx_codeobj_tab[450] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Get_dist_neighbors_count, __pyx_mstate->__pyx_kp_b_iso88591_A_Q_A_b_a_IQj_AQ_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[450])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 21, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3297};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_maxindegree, __pyx_mstate->__pyx_n_u_maxoutdegree, __pyx_mstate->__pyx_n_u_weighted, __pyx_mstate->__pyx_n_u_sources, __pyx_mstate->__pyx_n_u_destinations, __pyx_mstate->__pyx_n_u_sourceweights, __pyx_mstate->__pyx_n_u_destweights, __pyx_mstate->__pyx_n_u_unused1, __pyx_mstate->__pyx_n_u_unused2, __pyx_mstate->__pyx_n_u_unused3, __pyx_mstate->__pyx_n_u_unused4, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_src, __pyx_mstate->__pyx_n_u_dst, __pyx_mstate->__pyx_n_u_sw, __pyx_mstate->__pyx_n_u_dw, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_i};
    __pyx_mstate_global->__pyx_codeobj_tab[451] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Get_dist_neighbors, __pyx_mstate->__pyx_kp_b_iso88591_A_1_q_b_a_IQm1N_1_2_1_ha_AQ_U_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[451])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {8, 0, 0, 11, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3350};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_local_group, __pyx_mstate->__pyx_n_u_local_leader, __pyx_mstate->__pyx_n_u_remote_group, __pyx_mstate->__pyx_n_u_remote_leader, __pyx_mstate->__pyx_n_u_stringtag, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_errhandler, __pyx_mstate->__pyx_n_u_cstringtag, __pyx_mstate->__pyx_n_u_cerrhdl, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[452] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Create_from_groups, __pyx_mstate->__pyx_kp_b_iso88591_A_31_HA_nAQ_k_AQ_F_A_y_IYat1_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[452])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3377};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_group};
    __pyx_mstate_global->__pyx_codeobj_tab[453] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Get_remote_group, __pyx_mstate->__pyx_kp_b_iso88591_7_Qa_F_1_q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[453])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3391};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_size_2};
    __pyx_mstate_global->__pyx_codeobj_tab[454] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Get_remote_size, __pyx_mstate->__pyx_kp_b_iso88591_b_AT_1_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[454])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3407};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_high, __pyx_mstate->__pyx_n_u_comm};
    __pyx_mstate_global->__pyx_codeobj_tab[455] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Merge, __pyx_mstate->__pyx_kp_b_iso88591_wj_k_AQ_F_q_q_A_at1_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[455])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3442};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_base, __pyx_mstate->__pyx_n_u_size_2};
    __pyx_mstate_global->__pyx_codeobj_tab[456] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Attach_buffer, __pyx_mstate->__pyx_kp_b_iso88591_a_q_QfAQ_b_1F_Qc, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[456])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3453};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_base, __pyx_mstate->__pyx_n_u_size_2};
    __pyx_mstate_global->__pyx_codeobj_tab[457] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Detach_buffer, __pyx_mstate->__pyx_kp_b_iso88591_q_a_b_1AV1A_AS_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[457])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 0, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3463};
    PyObject* const varnames[] = {0};
    __pyx_mstate_global->__pyx_codeobj_tab[458] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Flush_buffer, __pyx_mstate->__pyx_kp_b_iso88591_a_b, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[458])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3470};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[459] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Iflush_buffer, __pyx_mstate->__pyx_kp_b_iso88591_q_9Cq_b_7_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[459])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3485};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_cportname};
    __pyx_mstate_global->__pyx_codeobj_tab[460] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Open_port, __pyx_mstate->__pyx_kp_b_iso88591_a_Qe1_b_Qd_1_Q_1_6, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[460])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3496};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_port_name, __pyx_mstate->__pyx_n_u_cportname};
    __pyx_mstate_global->__pyx_codeobj_tab[461] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Close_port, __pyx_mstate->__pyx_kp_b_iso88591_1_AQ_b_aq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[461])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3508};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_service_name, __pyx_mstate->__pyx_n_u_port_name, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_csrvcname, __pyx_mstate->__pyx_n_u_cportname, __pyx_mstate->__pyx_n_u_cinfo};
    __pyx_mstate_global->__pyx_codeobj_tab[462] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Publish_name, __pyx_mstate->__pyx_kp_b_iso88591_a_1_81N_1_1_AQ_7_b_G1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[462])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3524};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_service_name, __pyx_mstate->__pyx_n_u_port_name, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_csrvcname, __pyx_mstate->__pyx_n_u_cportname, __pyx_mstate->__pyx_n_u_cinfo};
    __pyx_mstate_global->__pyx_codeobj_tab[463] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Unpublish_name, __pyx_mstate->__pyx_kp_b_iso88591_a_1_81N_1_1_AQ_7_b_gQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[463])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3540};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_service_name, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_csrvcname, __pyx_mstate->__pyx_n_u_cinfo, __pyx_mstate->__pyx_n_u_cportname};
    __pyx_mstate_global->__pyx_codeobj_tab[464] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Comm_pyx, __pyx_mstate->__pyx_n_u_Lookup_name, __pyx_mstate->__pyx_kp_b_iso88591_1_81N_1_7_Qe1_b_q_7_Q_1_6, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[464])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 45};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[465] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_reduce, __pyx_mstate->__pyx_kp_b_iso88591_A_Qa, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[465])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 53};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_handle};
    __pyx_mstate_global->__pyx_codeobj_tab[466] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_fromhandle, __pyx_mstate->__pyx_kp_b_iso88591_A_z_O1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[466])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 60};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[467] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_free, __pyx_mstate->__pyx_kp_b_iso88591_a_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[467])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 69};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_memory, __pyx_mstate->__pyx_n_u_disp_unit, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_comm, __pyx_mstate->__pyx_n_u_base, __pyx_mstate->__pyx_n_u_size_2, __pyx_mstate->__pyx_n_u_win};
    __pyx_mstate_global->__pyx_codeobj_tab[468] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Create, __pyx_mstate->__pyx_kp_b_iso88591_A_a_A_Q_9AQ_Q_7_Zq_q_uCq_F_A_Yas, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[468])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 94};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_size_2, __pyx_mstate->__pyx_n_u_disp_unit, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_comm, __pyx_mstate->__pyx_n_u_base, __pyx_mstate->__pyx_n_u_win};
    __pyx_mstate_global->__pyx_codeobj_tab[469] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Allocate, __pyx_mstate->__pyx_kp_b_iso88591_A_a_A_uCq_F_a_T_A_as_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[469])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 113};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_size_2, __pyx_mstate->__pyx_n_u_disp_unit, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_comm, __pyx_mstate->__pyx_n_u_base, __pyx_mstate->__pyx_n_u_win};
    __pyx_mstate_global->__pyx_codeobj_tab[470] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Allocate_shared, __pyx_mstate->__pyx_kp_b_iso88591_A_a_A_uCq_F_5Q_T_A_as_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[470])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 132};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_rank, __pyx_mstate->__pyx_n_u_base, __pyx_mstate->__pyx_n_u_size_2, __pyx_mstate->__pyx_n_u_disp_unit};
    __pyx_mstate_global->__pyx_codeobj_tab[471] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Shared_query, __pyx_mstate->__pyx_kp_b_iso88591_XQ_Q_F_2_V1Kq_vV4q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[471])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 144};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_comm, __pyx_mstate->__pyx_n_u_win};
    __pyx_mstate_global->__pyx_codeobj_tab[472] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Create_dynamic, __pyx_mstate->__pyx_kp_b_iso88591_A_A_uCq_F_2_Yas_as_Q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[472])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 160};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_memory, __pyx_mstate->__pyx_n_u_base, __pyx_mstate->__pyx_n_u_size_2};
    __pyx_mstate_global->__pyx_codeobj_tab[473] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Attach, __pyx_mstate->__pyx_kp_b_iso88591_Q_1HAV1A_F_N_4y_a_t83fD_4xq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[473])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 174};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_memory, __pyx_mstate->__pyx_n_u_base};
    __pyx_mstate_global->__pyx_codeobj_tab[474] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Detach, __pyx_mstate->__pyx_kp_b_iso88591_1HAV1_F_N_4y_t83fA_t81Ja, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[474])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 187};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_save};
    __pyx_mstate_global->__pyx_codeobj_tab[475] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Free, __pyx_mstate->__pyx_kp_b_iso88591_a_D_F_L_a_81G4z_Ja, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[475])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 199};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_info};
    __pyx_mstate_global->__pyx_codeobj_tab[476] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Set_info, __pyx_mstate->__pyx_kp_b_iso88591_1_F_AT_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[476])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 205};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_info};
    __pyx_mstate_global->__pyx_codeobj_tab[477] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Get_info, __pyx_mstate->__pyx_kp_b_iso88591_s_1_F_Bd_1D_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[477])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 224};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_group};
    __pyx_mstate_global->__pyx_codeobj_tab[478] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Get_group, __pyx_mstate->__pyx_kp_b_iso88591_1_5_F_Qd_1E_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[478])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 264};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_keyval, __pyx_mstate->__pyx_n_u_attrval, __pyx_mstate->__pyx_n_u_flag};
    __pyx_mstate_global->__pyx_codeobj_tab[479] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Get_attr, __pyx_mstate->__pyx_kp_b_iso88591_81_Q_b_Yhay_5_3gQ_83fG1_7_Q_Q_C, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[479])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 288};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_keyval, __pyx_mstate->__pyx_n_u_attrval};
    __pyx_mstate_global->__pyx_codeobj_tab[480] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Set_attr, __pyx_mstate->__pyx_kp_b_iso88591_at9HA, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[480])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 294};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_keyval};
    __pyx_mstate_global->__pyx_codeobj_tab[481] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Delete_attr, __pyx_mstate->__pyx_kp_b_iso88591_ha_at9A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[481])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 300};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_copy_fn, __pyx_mstate->__pyx_n_u_delete_fn, __pyx_mstate->__pyx_n_u_nopython, __pyx_mstate->__pyx_n_u_keyval, __pyx_mstate->__pyx_n_u_copy_2, __pyx_mstate->__pyx_n_u_del, __pyx_mstate->__pyx_n_u_state};
    __pyx_mstate_global->__pyx_codeobj_tab[482] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Create_keyval, __pyx_mstate->__pyx_kp_b_iso88591_A_A_1_2_y_Q_b_QgV1HHA_A_81_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[482])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 318};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_keyval, __pyx_mstate->__pyx_n_u_keyval_save};
    __pyx_mstate_global->__pyx_codeobj_tab[483] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Free_keyval, __pyx_mstate->__pyx_kp_b_iso88591_A_Q_q_b_1AQ_A_1_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[483])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 365};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[484] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_tomemory, __pyx_mstate->__pyx_kp_b_iso88591_y_s, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[484])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 383};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_origin, __pyx_mstate->__pyx_n_u_target_rank, __pyx_mstate->__pyx_n_u_target, __pyx_mstate->__pyx_n_u_msg};
    __pyx_mstate_global->__pyx_codeobj_tab[485] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Put, __pyx_mstate->__pyx_kp_b_iso88591_A_A_k_81HM_F_IQ_xs_3a_xs_3a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[485])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 400};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_origin, __pyx_mstate->__pyx_n_u_target_rank, __pyx_mstate->__pyx_n_u_target, __pyx_mstate->__pyx_n_u_msg};
    __pyx_mstate_global->__pyx_codeobj_tab[486] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Get, __pyx_mstate->__pyx_kp_b_iso88591_A_A_k_81HM_F_IQ_xs_3a_xs_3a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[486])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 417};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_origin, __pyx_mstate->__pyx_n_u_target_rank, __pyx_mstate->__pyx_n_u_target, __pyx_mstate->__pyx_n_u_op, __pyx_mstate->__pyx_n_u_msg};
    __pyx_mstate_global->__pyx_codeobj_tab[487] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Accumulate, __pyx_mstate->__pyx_kp_b_iso88591_A_A_A_k_81HM_F_A_xs_3a_xs_3a_it1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[487])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {6, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 435};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_origin, __pyx_mstate->__pyx_n_u_result, __pyx_mstate->__pyx_n_u_target_rank, __pyx_mstate->__pyx_n_u_target, __pyx_mstate->__pyx_n_u_op, __pyx_mstate->__pyx_n_u_msg};
    __pyx_mstate_global->__pyx_codeobj_tab[488] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Get_accumulate, __pyx_mstate->__pyx_kp_b_iso88591_A_A_A_k_q_Q_F_0_xs_3a_xs_3a_xs_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[488])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {6, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 455};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_origin, __pyx_mstate->__pyx_n_u_result, __pyx_mstate->__pyx_n_u_target_rank, __pyx_mstate->__pyx_n_u_target_disp, __pyx_mstate->__pyx_n_u_op, __pyx_mstate->__pyx_n_u_msg};
    __pyx_mstate_global->__pyx_codeobj_tab[489] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Fetch_and_op, __pyx_mstate->__pyx_kp_b_iso88591_A_A_k_a_F_A_83hc_Q_4q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[489])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {6, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 473};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_origin, __pyx_mstate->__pyx_n_u_compare, __pyx_mstate->__pyx_n_u_result, __pyx_mstate->__pyx_n_u_target_rank, __pyx_mstate->__pyx_n_u_target_disp, __pyx_mstate->__pyx_n_u_msg};
    __pyx_mstate_global->__pyx_codeobj_tab[490] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Compare_and_swap, __pyx_mstate->__pyx_kp_b_iso88591_A_k_q_F_0_83hc_A_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[490])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 493};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_origin, __pyx_mstate->__pyx_n_u_target_rank, __pyx_mstate->__pyx_n_u_target, __pyx_mstate->__pyx_n_u_msg, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[491] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Rput, __pyx_mstate->__pyx_kp_b_iso88591_A_A_k_81HM_y_1A_F_Ja_xs_3a_xs_3a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[491])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 513};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_origin, __pyx_mstate->__pyx_n_u_target_rank, __pyx_mstate->__pyx_n_u_target, __pyx_mstate->__pyx_n_u_msg, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[492] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Rget, __pyx_mstate->__pyx_kp_b_iso88591_A_A_k_81HM_y_1A_F_Ja_xs_3a_xs_3a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[492])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 533};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_origin, __pyx_mstate->__pyx_n_u_target_rank, __pyx_mstate->__pyx_n_u_target, __pyx_mstate->__pyx_n_u_op, __pyx_mstate->__pyx_n_u_msg, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[493] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Raccumulate, __pyx_mstate->__pyx_kp_b_iso88591_A_A_A_k_81HM_y_1A_F_Q_xs_3a_xs_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[493])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {6, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 554};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_origin, __pyx_mstate->__pyx_n_u_result, __pyx_mstate->__pyx_n_u_target_rank, __pyx_mstate->__pyx_n_u_target, __pyx_mstate->__pyx_n_u_op, __pyx_mstate->__pyx_n_u_msg, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[494] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Rget_accumulate, __pyx_mstate->__pyx_kp_b_iso88591_A_A_A_k_q_Q_y_1A_F_1_xs_3a_xs_3a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[494])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 583};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_assertion};
    __pyx_mstate_global->__pyx_codeobj_tab[495] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Fence, __pyx_mstate->__pyx_kp_b_iso88591_6_q_F_M_T, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[495])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 592};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_group, __pyx_mstate->__pyx_n_u_assertion};
    __pyx_mstate_global->__pyx_codeobj_tab[496] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Start, __pyx_mstate->__pyx_kp_b_iso88591_7vV1_F_M_T, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[496])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 599};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[497] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Complete, __pyx_mstate->__pyx_kp_b_iso88591_F_AT, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[497])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 605};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_group, __pyx_mstate->__pyx_n_u_assertion};
    __pyx_mstate_global->__pyx_codeobj_tab[498] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Post, __pyx_mstate->__pyx_kp_b_iso88591_6fF_F_L_T, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[498])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 612};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[499] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Wait, __pyx_mstate->__pyx_kp_b_iso88591_a_F_L_Q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[499])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 619};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_flag};
    __pyx_mstate_global->__pyx_codeobj_tab[500] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Test, __pyx_mstate->__pyx_kp_b_iso88591_a_F_L_Yaq_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[500])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 630};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_rank, __pyx_mstate->__pyx_n_u_lock_type, __pyx_mstate->__pyx_n_u_assertion};
    __pyx_mstate_global->__pyx_codeobj_tab[501] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Lock, __pyx_mstate->__pyx_kp_b_iso88591_A_Q_Q_F_L_v_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[501])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 642};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_rank};
    __pyx_mstate_global->__pyx_codeobj_tab[502] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Unlock, __pyx_mstate->__pyx_kp_b_iso88591_xq_F_N_6_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[502])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 648};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_assertion};
    __pyx_mstate_global->__pyx_codeobj_tab[503] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Lock_all, __pyx_mstate->__pyx_kp_b_iso88591_fF_F_A_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[503])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 654};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[504] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Unlock_all, __pyx_mstate->__pyx_kp_b_iso88591_A_F_at1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[504])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 663};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_rank};
    __pyx_mstate_global->__pyx_codeobj_tab[505] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Flush, __pyx_mstate->__pyx_kp_b_iso88591_ha_F_M_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[505])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 669};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[506] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Flush_all, __pyx_mstate->__pyx_kp_b_iso88591_1_F_Qd, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[506])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 675};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_rank};
    __pyx_mstate_global->__pyx_codeobj_tab[507] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Flush_local, __pyx_mstate->__pyx_kp_b_iso88591_HA_F_q_d, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[507])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 681};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[508] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Flush_local_all, __pyx_mstate->__pyx_kp_b_iso88591_F_31D, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[508])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 687};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[509] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Sync, __pyx_mstate->__pyx_kp_b_iso88591_a_F_L_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[509])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 696};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_errhandler_fn, __pyx_mstate->__pyx_n_u_errhandler, __pyx_mstate->__pyx_n_u_fn, __pyx_mstate->__pyx_n_u_index};
    __pyx_mstate_global->__pyx_codeobj_tab[510] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Create_errhandler, __pyx_mstate->__pyx_kp_b_iso88591_A_AQ_q_1O1A_Qd_Q_aq_q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[510])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 714};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_errhandler};
    __pyx_mstate_global->__pyx_codeobj_tab[511] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Get_errhandler, __pyx_mstate->__pyx_kp_b_iso88591_AQ_b_at9AZq_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[511])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 722};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_errhandler};
    __pyx_mstate_global->__pyx_codeobj_tab[512] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Set_errhandler, __pyx_mstate->__pyx_kp_b_iso88591_4O1_b_at9Ja, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[512])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 728};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_errorcode};
    __pyx_mstate_global->__pyx_codeobj_tab[513] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Call_errhandler, __pyx_mstate->__pyx_kp_b_iso88591_XQ_b_q_IQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[513])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 737};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_name_2, __pyx_mstate->__pyx_n_u_nlen};
    __pyx_mstate_global->__pyx_codeobj_tab[514] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Get_name, __pyx_mstate->__pyx_kp_b_iso88591_b_YfAQ_xq_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[514])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 746};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_name_2, __pyx_mstate->__pyx_n_u_cname};
    __pyx_mstate_global->__pyx_codeobj_tab[515] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_Set_name, __pyx_mstate->__pyx_kp_b_iso88591_XQ_1_xq_aq_b_Ya, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[515])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 765};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[516] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_toint, __pyx_mstate->__pyx_kp_b_iso88591_q_AT, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[516])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 2, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 771};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_arg};
    __pyx_mstate_global->__pyx_codeobj_tab[517] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_fromint, __pyx_mstate->__pyx_kp_b_iso88591_A_Q_z_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[517])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 781};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[518] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_py2f, __pyx_mstate->__pyx_kp_b_iso88591_a_4q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[518])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 786};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_arg};
    __pyx_mstate_global->__pyx_codeobj_tab[519] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_Win_pyx, __pyx_mstate->__pyx_n_u_f2py, __pyx_mstate->__pyx_kp_b_iso88591_A_q_z_Qa, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[519])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 69};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[520] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_reduce, __pyx_mstate->__pyx_kp_b_iso88591_A_Qa, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[520])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 77};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_handle};
    __pyx_mstate_global->__pyx_codeobj_tab[521] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_fromhandle, __pyx_mstate->__pyx_kp_b_iso88591_A_z__A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[521])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 84};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[522] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_free, __pyx_mstate->__pyx_kp_b_iso88591_a_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[522])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 93};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_comm, __pyx_mstate->__pyx_n_u_filename, __pyx_mstate->__pyx_n_u_amode, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_cfilename, __pyx_mstate->__pyx_n_u_file};
    __pyx_mstate_global->__pyx_codeobj_tab[523] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Open, __pyx_mstate->__pyx_kp_b_iso88591_A_q_az_s_1_F_M_G4y_Q_at1_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[523])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 112};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_save};
    __pyx_mstate_global->__pyx_codeobj_tab[524] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Close, __pyx_mstate->__pyx_kp_b_iso88591_q_T_F_N_1D_81G4z, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[524])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 120};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_filename, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_cfilename};
    __pyx_mstate_global->__pyx_codeobj_tab[525] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Delete, __pyx_mstate->__pyx_kp_b_iso88591_A_q_az_F_O1Kt1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[525])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 133};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_size_2};
    __pyx_mstate_global->__pyx_codeobj_tab[526] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Set_size, __pyx_mstate->__pyx_kp_b_iso88591_HA_F_Qd_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[526])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 139};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_size_2};
    __pyx_mstate_global->__pyx_codeobj_tab[527] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Preallocate, __pyx_mstate->__pyx_kp_b_iso88591_xq_F_0_Ya, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[527])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 145};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_size_2};
    __pyx_mstate_global->__pyx_codeobj_tab[528] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Get_size, __pyx_mstate->__pyx_kp_b_iso88591_q_F_Qd_1A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[528])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 158};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_amode};
    __pyx_mstate_global->__pyx_codeobj_tab[529] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Get_amode, __pyx_mstate->__pyx_kp_b_iso88591_1_F_at9AQ_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[529])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 174};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_group};
    __pyx_mstate_global->__pyx_codeobj_tab[530] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Get_group, __pyx_mstate->__pyx_kp_b_iso88591_1_7_Qa_F_at9AU_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[530])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 214};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_info};
    __pyx_mstate_global->__pyx_codeobj_tab[531] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Set_info, __pyx_mstate->__pyx_kp_b_iso88591_1_F_Qd_4q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[531])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 220};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_info};
    __pyx_mstate_global->__pyx_codeobj_tab[532] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Get_info, __pyx_mstate->__pyx_kp_b_iso88591_s_1_F_Qd_1D_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[532])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {6, 0, 0, 9, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 239};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_disp, __pyx_mstate->__pyx_n_u_etype, __pyx_mstate->__pyx_n_u_filetype, __pyx_mstate->__pyx_n_u_datarep, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_cdatarep, __pyx_mstate->__pyx_n_u_cetype, __pyx_mstate->__pyx_n_u_cftype};
    __pyx_mstate_global->__pyx_codeobj_tab[533] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Set_view, __pyx_mstate->__pyx_kp_b_iso88591_A_1_1_Q_q_a_87_9AQ_5_1_9G6_F_Q_x, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[533])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 258};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_disp, __pyx_mstate->__pyx_n_u_cetype, __pyx_mstate->__pyx_n_u_cftype, __pyx_mstate->__pyx_n_u_cdatarep, __pyx_mstate->__pyx_n_u_etype, __pyx_mstate->__pyx_n_u_ftype, __pyx_mstate->__pyx_n_u_datarep};
    __pyx_mstate_global->__pyx_codeobj_tab[534] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Get_view, __pyx_mstate->__pyx_kp_b_iso88591_q_1_1_a_F_Q_1_l_1_l_1_fAQ_gWA, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[534])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 281};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_offset, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[535] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Read_at, __pyx_mstate->__pyx_kp_b_iso88591_A_q_1_Qa_F_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[535])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 295};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_offset, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[536] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Read_at_all, __pyx_mstate->__pyx_kp_b_iso88591_A_q_1_Qa_F_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[536])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 309};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_offset, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[537] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Write_at, __pyx_mstate->__pyx_kp_b_iso88591_A_q_1A_Qa_F_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[537])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 323};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_offset, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[538] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Write_at_all, __pyx_mstate->__pyx_kp_b_iso88591_A_q_1A_Qa_F_31, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[538])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 337};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_offset, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[539] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Iread_at, __pyx_mstate->__pyx_kp_b_iso88591_A_1_y_1A_F_q_7_z_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[539])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 352};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_offset, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[540] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Iread_at_all, __pyx_mstate->__pyx_kp_b_iso88591_A_1_y_1A_F_31_7_z_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[540])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 367};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_offset, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[541] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Iwrite_at, __pyx_mstate->__pyx_kp_b_iso88591_A_1A_y_1A_F_0_7_z_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[541])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 382};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_offset, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[542] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Iwrite_at_all, __pyx_mstate->__pyx_kp_b_iso88591_A_1A_y_1A_F_4A_7_z_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[542])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 400};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[543] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Read, __pyx_mstate->__pyx_kp_b_iso88591_A_q_1_Qa_F_O1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[543])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 413};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[544] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Read_all, __pyx_mstate->__pyx_kp_b_iso88591_A_q_1_Qa_F_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[544])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 426};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[545] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Write, __pyx_mstate->__pyx_kp_b_iso88591_A_q_1A_Qa_F_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[545])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 439};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[546] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Write_all, __pyx_mstate->__pyx_kp_b_iso88591_A_q_1A_Qa_F_0, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[546])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 452};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[547] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Iread, __pyx_mstate->__pyx_kp_b_iso88591_A_1_y_1A_F_A_7_z_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[547])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 466};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[548] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Iread_all, __pyx_mstate->__pyx_kp_b_iso88591_A_1_y_1A_F_0_7_z_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[548])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 480};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[549] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Iwrite, __pyx_mstate->__pyx_kp_b_iso88591_A_1A_y_1A_F_Q_7_z_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[549])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 494};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[550] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Iwrite_all, __pyx_mstate->__pyx_kp_b_iso88591_A_1A_y_1A_F_1_7_z_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[550])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 508};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_offset, __pyx_mstate->__pyx_n_u_whence};
    __pyx_mstate_global->__pyx_codeobj_tab[551] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Seek, __pyx_mstate->__pyx_kp_b_iso88591_36_a_F_M_ixq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[551])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 514};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_offset};
    __pyx_mstate_global->__pyx_codeobj_tab[552] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Get_position, __pyx_mstate->__pyx_kp_b_iso88591_a_F_1_iq_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[552])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 525};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_offset, __pyx_mstate->__pyx_n_u_disp};
    __pyx_mstate_global->__pyx_codeobj_tab[553] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Get_byte_offset, __pyx_mstate->__pyx_kp_b_iso88591_XQ_q_F_4A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[553])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 540};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[554] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Read_shared, __pyx_mstate->__pyx_kp_b_iso88591_A_q_1_Qa_F_2_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[554])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 553};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[555] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Write_shared, __pyx_mstate->__pyx_kp_b_iso88591_A_q_1A_Qa_F_31_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[555])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 566};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[556] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Iread_shared, __pyx_mstate->__pyx_kp_b_iso88591_A_1_y_1A_F_31_7_z_q_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[556])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 580};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_request};
    __pyx_mstate_global->__pyx_codeobj_tab[557] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Iwrite_shared, __pyx_mstate->__pyx_kp_b_iso88591_A_1A_y_1A_F_4A_7_z_q_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[557])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 594};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[558] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Read_ordered, __pyx_mstate->__pyx_kp_b_iso88591_A_q_1_Qa_F_31, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[558])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 607};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[559] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Write_ordered, __pyx_mstate->__pyx_kp_b_iso88591_A_q_1A_Qa_F_4A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[559])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 620};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_offset, __pyx_mstate->__pyx_n_u_whence};
    __pyx_mstate_global->__pyx_codeobj_tab[560] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Seek_shared, __pyx_mstate->__pyx_kp_b_iso88591_A_F_0, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[560])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 631};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_offset};
    __pyx_mstate_global->__pyx_codeobj_tab[561] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Get_position_shared, __pyx_mstate->__pyx_kp_b_iso88591_Q_F_8_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[561])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 648};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_offset, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_m};
    __pyx_mstate_global->__pyx_codeobj_tab[562] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Read_at_all_begin, __pyx_mstate->__pyx_kp_b_iso88591_A_1_F_8, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[562])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 660};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[563] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Read_at_all_end, __pyx_mstate->__pyx_kp_b_iso88591_A_q_1_Qa_F_4A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[563])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 673};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_offset, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_m};
    __pyx_mstate_global->__pyx_codeobj_tab[564] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Write_at_all_begin, __pyx_mstate->__pyx_kp_b_iso88591_A_1A_F_9, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[564])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 685};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[565] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Write_at_all_end, __pyx_mstate->__pyx_kp_b_iso88591_A_q_1A_Qa_F_5Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[565])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 700};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_m};
    __pyx_mstate_global->__pyx_codeobj_tab[566] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Read_all_begin, __pyx_mstate->__pyx_kp_b_iso88591_A_1_F_5Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[566])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 711};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[567] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Read_all_end, __pyx_mstate->__pyx_kp_b_iso88591_A_q_1_Qa_F_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[567])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 724};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_m};
    __pyx_mstate_global->__pyx_codeobj_tab[568] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Write_all_begin, __pyx_mstate->__pyx_kp_b_iso88591_A_1A_F_6a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[568])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 735};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[569] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Write_all_end, __pyx_mstate->__pyx_kp_b_iso88591_A_q_1A_Qa_F_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[569])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 750};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_m};
    __pyx_mstate_global->__pyx_codeobj_tab[570] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Read_ordered_begin, __pyx_mstate->__pyx_kp_b_iso88591_A_1_F_9, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[570])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 761};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[571] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Read_ordered_end, __pyx_mstate->__pyx_kp_b_iso88591_A_q_1_Qa_F_5Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[571])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 774};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_m};
    __pyx_mstate_global->__pyx_codeobj_tab[572] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Write_ordered_begin, __pyx_mstate->__pyx_kp_b_iso88591_A_1A_F, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[572])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 785};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_buf, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_statusp};
    __pyx_mstate_global->__pyx_codeobj_tab[573] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Write_ordered_end, __pyx_mstate->__pyx_kp_b_iso88591_A_q_1A_Qa_F_6a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[573])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 801};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_datatype, __pyx_mstate->__pyx_n_u_extent};
    __pyx_mstate_global->__pyx_codeobj_tab[574] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Get_type_extent, __pyx_mstate->__pyx_kp_b_iso88591_1_a_F_6a_1_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[574])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 813};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_flag};
    __pyx_mstate_global->__pyx_codeobj_tab[575] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Set_atomicity, __pyx_mstate->__pyx_kp_b_iso88591_y_F_2_4y, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[575])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 819};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_flag};
    __pyx_mstate_global->__pyx_codeobj_tab[576] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Get_atomicity, __pyx_mstate->__pyx_kp_b_iso88591_q_F_2_4y_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[576])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 835};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[577] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Sync, __pyx_mstate->__pyx_kp_b_iso88591_a_F_M_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[577])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 844};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_errhandler_fn, __pyx_mstate->__pyx_n_u_errhandler, __pyx_mstate->__pyx_n_u_fn, __pyx_mstate->__pyx_n_u_index};
    __pyx_mstate_global->__pyx_codeobj_tab[578] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Create_errhandler, __pyx_mstate->__pyx_kp_b_iso88591_A_AQ_0_1O1A_at1Ja_aq_q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[578])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 862};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_errhandler};
    __pyx_mstate_global->__pyx_codeobj_tab[579] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Get_errhandler, __pyx_mstate->__pyx_kp_b_iso88591_AQ_b_q_IQj_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[579])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 870};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_errhandler};
    __pyx_mstate_global->__pyx_codeobj_tab[580] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Set_errhandler, __pyx_mstate->__pyx_kp_b_iso88591_4O1_b_q_IZq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[580])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 876};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_errorcode};
    __pyx_mstate_global->__pyx_codeobj_tab[581] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Call_errhandler, __pyx_mstate->__pyx_kp_b_iso88591_XQ_b_Ya, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[581])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 885};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[582] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_toint, __pyx_mstate->__pyx_kp_b_iso88591_q_Qd, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[582])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 2, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 891};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_arg};
    __pyx_mstate_global->__pyx_codeobj_tab[583] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_fromint, __pyx_mstate->__pyx_kp_b_iso88591_A_Q_z_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[583])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 901};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[584] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_py2f, __pyx_mstate->__pyx_kp_b_iso88591_a_1D, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[584])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 906};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cls, __pyx_mstate->__pyx_n_u_arg};
    __pyx_mstate_global->__pyx_codeobj_tab[585] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_f2py, __pyx_mstate->__pyx_kp_b_iso88591_A_q_z_aq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[585])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 10, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 925};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_datarep, __pyx_mstate->__pyx_n_u_read_fn, __pyx_mstate->__pyx_n_u_write_fn, __pyx_mstate->__pyx_n_u_extent_fn, __pyx_mstate->__pyx_n_u_cdatarep, __pyx_mstate->__pyx_n_u_state, __pyx_mstate->__pyx_n_u_rd, __pyx_mstate->__pyx_n_u_wr, __pyx_mstate->__pyx_n_u_ex, __pyx_mstate->__pyx_n_u_xs};
    __pyx_mstate_global->__pyx_codeobj_tab[586] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_File_pyx, __pyx_mstate->__pyx_n_u_Register_datarep, __pyx_mstate->__pyx_kp_b_iso88591_hay_9Ja_1_1_1_HA_y_vU_y_vU_2_1J, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[586])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 100};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_size_2, __pyx_mstate->__pyx_n_u_info, __pyx_mstate->__pyx_n_u_base};
    __pyx_mstate_global->__pyx_codeobj_tab[587] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_MPI_pyx, __pyx_mstate->__pyx_n_u_Alloc_mem, __pyx_mstate->__pyx_kp_b_iso88591_a_a_M_IQa_6, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[587])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 109};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_mem, __pyx_mstate->__pyx_n_u_base, __pyx_mstate->__pyx_n_u_buf};
    __pyx_mstate_global->__pyx_codeobj_tab[588] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_MPI_pyx, __pyx_mstate->__pyx_n_u_Free_mem, __pyx_mstate->__pyx_kp_b_iso88591_Q_a_hauAV6_L_xq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[588])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 0, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 122};
    PyObject* const varnames[] = {0};
    __pyx_mstate_global->__pyx_codeobj_tab[589] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_MPI_pyx, __pyx_mstate->__pyx_n_u_Init, __pyx_mstate->__pyx_kp_b_iso88591_a_HAV1_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[589])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 0, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 130};
    PyObject* const varnames[] = {0};
    __pyx_mstate_global->__pyx_codeobj_tab[590] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_MPI_pyx, __pyx_mstate->__pyx_n_u_Finalize, __pyx_mstate->__pyx_kp_b_iso88591_A_L, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[590])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 154};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_required, __pyx_mstate->__pyx_n_u_provided};
    __pyx_mstate_global->__pyx_codeobj_tab[591] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_MPI_pyx, __pyx_mstate->__pyx_n_u_Init_thread, __pyx_mstate->__pyx_kp_b_iso88591_f_8_O1F_1_a_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[591])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 164};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_provided};
    __pyx_mstate_global->__pyx_codeobj_tab[592] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_MPI_pyx, __pyx_mstate->__pyx_n_u_Query_thread, __pyx_mstate->__pyx_kp_b_iso88591_a_AQa_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[592])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 173};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_flag};
    __pyx_mstate_global->__pyx_codeobj_tab[593] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_MPI_pyx, __pyx_mstate->__pyx_n_u_Is_thread_main, __pyx_mstate->__pyx_kp_b_iso88591_A_aq_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[593])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 182};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_flag};
    __pyx_mstate_global->__pyx_codeobj_tab[594] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_MPI_pyx, __pyx_mstate->__pyx_n_u_Is_initialized, __pyx_mstate->__pyx_kp_b_iso88591_A_O1AQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[594])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 191};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_flag};
    __pyx_mstate_global->__pyx_codeobj_tab[595] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_MPI_pyx, __pyx_mstate->__pyx_n_u_Is_finalized, __pyx_mstate->__pyx_kp_b_iso88591_a_A_M_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[595])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 210};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_version, __pyx_mstate->__pyx_n_u_subversion};
    __pyx_mstate_global->__pyx_codeobj_tab[596] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_MPI_pyx, __pyx_mstate->__pyx_n_u_Get_version, __pyx_mstate->__pyx_kp_b_iso88591_Q_q_O1AYaq_IQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[596])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 220};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_name_2, __pyx_mstate->__pyx_n_u_nlen};
    __pyx_mstate_global->__pyx_codeobj_tab[597] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_MPI_pyx, __pyx_mstate->__pyx_n_u_Get_library_version, __pyx_mstate->__pyx_kp_b_iso88591_Q_A_1F_1_81F, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[597])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 233};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_version, __pyx_mstate->__pyx_n_u_subversion};
    __pyx_mstate_global->__pyx_codeobj_tab[598] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_MPI_pyx, __pyx_mstate->__pyx_n_u_Get_abi_version, __pyx_mstate->__pyx_kp_b_iso88591_q_q_1_IQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[598])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 243};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_info};
    __pyx_mstate_global->__pyx_codeobj_tab[599] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_MPI_pyx, __pyx_mstate->__pyx_n_u_Get_abi_info, __pyx_mstate->__pyx_kp_b_iso88591_a_V3aq_AQd_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[599])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 252};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_info};
    __pyx_mstate_global->__pyx_codeobj_tab[600] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_MPI_pyx, __pyx_mstate->__pyx_n_u_Get_abi_fortran_info, __pyx_mstate->__pyx_kp_b_iso88591_a_V3aq_AQd_1_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[600])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 264};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_name_2, __pyx_mstate->__pyx_n_u_nlen};
    __pyx_mstate_global->__pyx_codeobj_tab[601] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_MPI_pyx, __pyx_mstate->__pyx_n_u_Get_processor_name, __pyx_mstate->__pyx_kp_b_iso88591_A_A_6_81F, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[601])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 274};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_info};
    __pyx_mstate_global->__pyx_codeobj_tab[602] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_MPI_pyx, __pyx_mstate->__pyx_n_u_Get_hw_resource_info, __pyx_mstate->__pyx_kp_b_iso88591_a_V3aq_AQd_1_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[602])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 0, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 286};
    PyObject* const varnames[] = {0};
    __pyx_mstate_global->__pyx_codeobj_tab[603] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_MPI_pyx, __pyx_mstate->__pyx_n_u_Wtime, __pyx_mstate->__pyx_kp_b_iso88591_q_9A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[603])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 0, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 293};
    PyObject* const varnames[] = {0};
    __pyx_mstate_global->__pyx_codeobj_tab[604] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_MPI_pyx, __pyx_mstate->__pyx_n_u_Wtick, __pyx_mstate->__pyx_kp_b_iso88591_q_9A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[604])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 303};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_level};
    __pyx_mstate_global->__pyx_codeobj_tab[605] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_MPI_pyx, __pyx_mstate->__pyx_n_u_Pcontrol, __pyx_mstate->__pyx_kp_b_iso88591_vRr_F_CvRq_L, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[605])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_datatype, __pyx_mstate->__pyx_n_u_tc};
    __pyx_mstate_global->__pyx_codeobj_tab[606] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_typestr_pxi, __pyx_mstate->__pyx_n_u_typecode, __pyx_mstate->__pyx_kp_b_iso88591_a_axq_5_3j, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[606])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 11};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_datatype, __pyx_mstate->__pyx_n_u_align};
    __pyx_mstate_global->__pyx_codeobj_tab[607] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_typestr_pxi, __pyx_mstate->__pyx_n_u_typealign, __pyx_mstate->__pyx_kp_b_iso88591_q_Qha_9F_G1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[607])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 274};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_datatype, __pyx_mstate->__pyx_n_u_combiner, __pyx_mstate->__pyx_n_u_params, __pyx_mstate->__pyx_n_u_free};
    __pyx_mstate_global->__pyx_codeobj_tab[608] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_typedec_pxi, __pyx_mstate->__pyx_n_u_datatype_create, __pyx_mstate->__pyx_kp_b_iso88591_q_Zxq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[608])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 286};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_datatype, __pyx_mstate->__pyx_n_u_mark};
    __pyx_mstate_global->__pyx_codeobj_tab[609] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_typedec_pxi, __pyx_mstate->__pyx_n_u_datatype_decode, __pyx_mstate->__pyx_kp_b_iso88591_q_Q_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[609])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 341};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_name_2, __pyx_mstate->__pyx_n_u_major, __pyx_mstate->__pyx_n_u_minor, __pyx_mstate->__pyx_n_u_micro};
    __pyx_mstate_global->__pyx_codeobj_tab[610] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_MPI_pyx, __pyx_mstate->__pyx_n_u_get_vendor, __pyx_mstate->__pyx_kp_b_iso88591_A_9IQ_AQfAWAWAQ_F_87, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[610])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 365};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_arg};
    __pyx_mstate_global->__pyx_codeobj_tab[611] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_MPI_pyx, __pyx_mstate->__pyx_n_u_sizeof, __pyx_mstate->__pyx_kp_b_iso88591_y_m7_y_m7_y_m7_y_m7_y_m7_y_m7_y, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[611])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 384};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_arg, __pyx_mstate->__pyx_n_u_ptr};
    __pyx_mstate_global->__pyx_codeobj_tab[612] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_MPI_pyx, __pyx_mstate->__pyx_n_u_addressof, __pyx_mstate->__pyx_kp_b_iso88591_HA_Q_z_q_gRxt1_1E_gRz_Q_1E_gRy, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[612])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 418};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_arg};
    __pyx_mstate_global->__pyx_codeobj_tab[613] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_mpi4py_MPI_src_MPI_pyx, __pyx_mstate->__pyx_n_u_handleof, __pyx_mstate->__pyx_kp_b_iso88591_81_z_q_S_A_1E_z_Q_1E_y_A_1E_y_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[613])) goto bad;
  }
  Py_DECREF(tuple_dedup_map);
  return 0;
  bad:
  Py_DECREF(tuple_dedup_map);
  return -1;
}
/* #### Code section: init_globals ### */

static int __Pyx_InitGlobals(void) {
  /* PythonCompatibility.init */
  if (likely(__Pyx_init_co_variables() == 0)); else
  
  if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error)

  /* CommonTypesMetaclass.init */
  if (likely(__pyx_CommonTypesMetaclass_init(__pyx_m) == 0)); else
  
  if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error)

  /* CachedMethodType.init */
  #if CYTHON_COMPILING_IN_LIMITED_API
  {
      PyObject *typesModule=NULL;
      typesModule = PyImport_ImportModule("types");
      if (typesModule) {
          __pyx_mstate_global->__Pyx_CachedMethodType = PyObject_GetAttrString(typesModule, "MethodType");
          Py_DECREF(typesModule);
      }
  } // error handling follows
  #endif
  
  if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error)

  /* CythonFunctionShared.init */
  if (likely(__pyx_CyFunction_init(__pyx_m) == 0)); else
  
  if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error)

  return 0;
  __pyx_L1_error:;
  return -1;
}
/* #### Code section: cleanup_globals ### */

static void __Pyx_CleanupGlobals(__pyx_mstatetype *__pyx_mstate) {
  CYTHON_UNUSED_VAR(__pyx_mstate);
  /* CachedMethodType.cleanup */
  #if CYTHON_COMPILING_IN_LIMITED_API
  Py_CLEAR(__pyx_mstate_global->__Pyx_CachedMethodType);
  #endif
  
/* CodeObjectCache.cleanup */
  {
    struct __Pyx_CodeObjectCache *code_cache = &__pyx_mstate_global->__pyx_code_cache;
    if (code_cache->entries) {
        __Pyx_CodeObjectCacheEntry* entries = code_cache->entries;
        int i, count = code_cache->count;
        code_cache->count = 0;
        code_cache->max_count = 0;
        code_cache->entries = NULL;
        for (i=0; i<count; i++) {
            Py_DECREF(entries[i].code_object);
        }
        PyMem_Free(entries);
    }
  }
  
Py_CLEAR(__pyx_mstate->__pyx_umethod_PyDict_Type_get.method);
  Py_CLEAR(__pyx_mstate->__pyx_umethod_PyDict_Type_items.method);
  Py_CLEAR(__pyx_mstate->__pyx_umethod_PyDict_Type_pop.method);
  Py_CLEAR(__pyx_mstate->__pyx_umethod_PyDict_Type_values.method);
  Py_CLEAR(__pyx_mstate->__pyx_umethod_PyList_Type__index.method);
  Py_CLEAR(__pyx_mstate->__pyx_umethod_PyUnicode_Type__lower.method);
  for (size_t i=0; i<2; ++i) { Py_CLEAR(__pyx_mstate->__pyx_slice[i]); }
  for (size_t i=0; i<24; ++i) { Py_CLEAR(__pyx_mstate->__pyx_tuple[i]); }
}
/* #### Code section: cleanup_module ### */
static void __pyx_module_cleanup(CYTHON_UNUSED PyObject *self) {
  __pyx_mstatetype *__pyx_mstate;
  #if CYTHON_USE_MODULE_STATE
  if (!__Pyx_State_FindModule(&__pyx_moduledef)) return;
  #endif
  __pyx_mstate = __Pyx_PyModule_GetState(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___LOGICAL16__);
  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___BFLOAT16_T__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___FLOAT64_T__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___FLOAT32_T__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___FLOAT16_T__);
  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_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_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_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___BUFFER_AUTOMATIC__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___IN_PLACE__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___BOTTOM__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI__py_module_sentinel);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI_MPIException);
  __Pyx_CleanupGlobals(__pyx_mstate);
  /*--- Type import cleanup code ---*/
  /*--- Builtin cleanup code ---*/
  Py_CLEAR(__pyx_builtin_staticmethod);
  Py_CLEAR(__pyx_builtin_property);
  Py_CLEAR(__pyx_builtin_Ellipsis);
  Py_CLEAR(__pyx_builtin_NotImplemented);
  /*--- Intern cleanup code ---*/
  Py_CLEAR(__pyx_mstate->__pyx_empty_tuple);
  #if CYTHON_USE_FREELISTS
  while (__pyx_mstate->__pyx_freecount_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback > 0) {
    PyObject* o = (PyObject*)__pyx_mstate->__pyx_freelist_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback[--__pyx_mstate->__pyx_freecount_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback];
    PyTypeObject *tp = Py_TYPE(o);
    #if CYTHON_USE_TYPE_SLOTS
    (*tp->tp_free)(o);
    #else
    freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free);
    if (tp_free) tp_free(o);
    #endif
    #if CYTHON_USE_TYPE_SPECS
    Py_DECREF(tp);
    #endif
  }
  #endif
  Py_CLEAR(__pyx_mstate->__pyx_cython_runtime);
  Py_CLEAR(__pyx_mstate->__pyx_b);
  Py_CLEAR(__pyx_mstate->__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 (used by PyObjectGetAttrStrNoError) */
#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);
    for (i=0; i<n; i++) {
        if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
    }
    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 (used by PyObjectGetAttrStrNoError) */
#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 (used by PyObjectGetAttrStrNoError) */
#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);
    return PyObject_GetAttr(obj, attr_name);
}
#endif

/* PyObjectGetAttrStrNoError (used by GetBuiltinName) */
#if __PYX_LIMITED_VERSION_HEX < 0x030d0000
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 >= 0x030d0000
    (void) PyObject_GetOptionalAttr(obj, attr_name, &result);
    return result;
#else
#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS
    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_mstate_global->__pyx_b, name);
    if (unlikely(!result) && !PyErr_Occurred()) {
        PyErr_Format(PyExc_NameError,
            "name '%U' is not defined", name);
    }
    return result;
}

/* PyObjectCall (used by PyObjectFastCall) */
#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 (unlikely(Py_EnterRecursiveCall(" while calling a Python object")))
        return NULL;
    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 (used by PyObjectFastCall) */
#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 (unlikely(Py_EnterRecursiveCall(" while calling a Python object")))
        return NULL;
    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 (used by PyObjectFastCallMethod) */
#if PY_VERSION_HEX < 0x03090000 || CYTHON_COMPILING_IN_LIMITED_API
static PyObject* __Pyx_PyObject_FastCall_fallback(PyObject *func, PyObject * const*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
#if CYTHON_VECTORCALL && !CYTHON_COMPILING_IN_LIMITED_API
  #if PY_VERSION_HEX < 0x03090000
    #define __Pyx_PyVectorcall_Function(callable) _PyVectorcall_Function(callable)
  #elif CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE vectorcallfunc __Pyx_PyVectorcall_Function(PyObject *callable) {
    PyTypeObject *tp = Py_TYPE(callable);
    #if defined(__Pyx_CyFunction_USED)
    if (__Pyx_CyFunction_CheckExact(callable)) {
        return __Pyx_CyFunction_func_vectorcall(callable);
    }
    #endif
    if (!PyType_HasFeature(tp, Py_TPFLAGS_HAVE_VECTORCALL)) {
        return NULL;
    }
    assert(PyCallable_Check(callable));
    Py_ssize_t offset = tp->tp_vectorcall_offset;
    assert(offset > 0);
    vectorcallfunc ptr;
    memcpy(&ptr, (char *) callable + offset, sizeof(ptr));
    return ptr;
}
  #else
    #define __Pyx_PyVectorcall_Function(callable) PyVectorcall_Function(callable)
  #endif
#endif
static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject *const *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 (kwargs == NULL) {
        #if CYTHON_VECTORCALL
          #if CYTHON_COMPILING_IN_LIMITED_API
            return PyObject_Vectorcall(func, args, _nargs, NULL);
          #else
            vectorcallfunc f = __Pyx_PyVectorcall_Function(func);
            if (f) {
                return f(func, args, _nargs, NULL);
            }
          #endif
        #endif
    }
    if (nargs == 0) {
        return __Pyx_PyObject_Call(func, __pyx_mstate_global->__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
}

/* PyObjectFastCallMethod */
#if !CYTHON_VECTORCALL || PY_VERSION_HEX < 0x03090000
static PyObject *__Pyx_PyObject_FastCallMethod(PyObject *name, PyObject *const *args, size_t nargsf) {
    PyObject *result;
    PyObject *attr = PyObject_GetAttr(args[0], name);
    if (unlikely(!attr))
        return NULL;
    result = __Pyx_PyObject_FastCall(attr, args+1, nargsf - 1);
    Py_DECREF(attr);
    return result;
}
#endif

/* GetAttr3 */
#if __PYX_LIMITED_VERSION_HEX < 0x030d0000
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 >= 0x030d0000
    int res = PyObject_GetOptionalAttr(o, n, &r);
    return (res != 0) ? r : __Pyx_NewRef(d);
#else
  #if CYTHON_USE_TYPE_SLOTS
    if (likely(PyUnicode_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 (used by SaveResetException) */
#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

/* HasAttr (used by ImportImpl) */
#if __PYX_LIMITED_VERSION_HEX < 0x030d0000
static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
    PyObject *r;
    if (unlikely(!PyUnicode_Check(n))) {
        PyErr_SetString(PyExc_TypeError,
                        "hasattr(): attribute name must be string");
        return -1;
    }
    r = __Pyx_PyObject_GetAttrStrNoError(o, n);
    if (!r) {
        return (unlikely(PyErr_Occurred())) ? -1 : 0;
    } else {
        Py_DECREF(r);
        return 1;
    }
}
#endif

/* PyObjectCallOneArg (used by ImportImpl) */
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);
}

/* TupleAndListFromArray (used by ImportImpl) */
#if !CYTHON_COMPILING_IN_CPYTHON && CYTHON_METH_FASTCALL
static CYTHON_INLINE PyObject *
__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n)
{
    PyObject *res;
    Py_ssize_t i;
    if (n <= 0) {
        return __Pyx_NewRef(__pyx_mstate_global->__pyx_empty_tuple);
    }
    res = PyTuple_New(n);
    if (unlikely(res == NULL)) return NULL;
    for (i = 0; i < n; i++) {
        if (unlikely(__Pyx_PyTuple_SET_ITEM(res, i, src[i]) < (0))) {
            Py_DECREF(res);
            return NULL;
        }
        Py_INCREF(src[i]);
    }
    return res;
}
#elif 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) {
        return __Pyx_NewRef(__pyx_mstate_global->__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

/* ImportImpl (used by Import) */
static int __Pyx__Import_GetModule(PyObject *qualname, PyObject **module) {
    PyObject *imported_module = PyImport_GetModule(qualname);
    if (unlikely(!imported_module)) {
        *module = NULL;
        if (PyErr_Occurred()) {
            return -1;
        }
        return 0;
    }
    *module = imported_module;
    return 1;
}
static int __Pyx__Import_Lookup(PyObject *qualname, PyObject *const *imported_names, Py_ssize_t len_imported_names, PyObject **module) {
    PyObject *imported_module;
    PyObject *top_level_package_name;
    Py_ssize_t i;
    int status, module_found;
    Py_ssize_t dot_index;
    module_found = __Pyx__Import_GetModule(qualname, &imported_module);
    if (unlikely(!module_found || module_found == -1)) {
        *module = NULL;
        return module_found;
    }
    if (imported_names) {
        for (i = 0; i < len_imported_names; i++) {
            PyObject *imported_name = imported_names[i];
#if __PYX_LIMITED_VERSION_HEX < 0x030d0000
            int has_imported_attribute = PyObject_HasAttr(imported_module, imported_name);
#else
            int has_imported_attribute = PyObject_HasAttrWithError(imported_module, imported_name);
            if (unlikely(has_imported_attribute == -1)) goto error;
#endif
            if (!has_imported_attribute) {
                goto not_found;
            }
        }
        *module = imported_module;
        return 1;
    }
    dot_index = PyUnicode_FindChar(qualname, '.', 0, PY_SSIZE_T_MAX, 1);
    if (dot_index == -1) {
        *module = imported_module;
        return 1;
    }
    if (unlikely(dot_index == -2)) goto error;
    top_level_package_name = PyUnicode_Substring(qualname, 0, dot_index);
    if (unlikely(!top_level_package_name)) goto error;
    Py_DECREF(imported_module);
    status = __Pyx__Import_GetModule(top_level_package_name, module);
    Py_DECREF(top_level_package_name);
    return status;
error:
    Py_DECREF(imported_module);
    *module = NULL;
    return -1;
not_found:
    Py_DECREF(imported_module);
    *module = NULL;
    return 0;
}
static PyObject *__Pyx__Import(PyObject *name, PyObject *const *imported_names, Py_ssize_t len_imported_names, PyObject *qualname, PyObject *moddict, int level) {
    PyObject *module = 0;
    PyObject *empty_dict = 0;
    PyObject *from_list = 0;
    int module_found;
    if (!qualname) {
        qualname = name;
    }
    module_found = __Pyx__Import_Lookup(qualname, imported_names, len_imported_names, &module);
    if (likely(module_found == 1)) {
        return module;
    } else if (unlikely(module_found == -1)) {
        return NULL;
    }
    empty_dict = PyDict_New();
    if (unlikely(!empty_dict))
        goto bad;
    if (imported_names) {
#if CYTHON_COMPILING_IN_CPYTHON
        from_list = __Pyx_PyList_FromArray(imported_names, len_imported_names);
        if (unlikely(!from_list))
            goto bad;
#else
        from_list = PyList_New(len_imported_names);
        if (unlikely(!from_list)) goto bad;
        for (Py_ssize_t i=0; i<len_imported_names; ++i) {
            if (PyList_SetItem(from_list, i, __Pyx_NewRef(imported_names[i])) < 0) goto bad;
        }
#endif
    }
    if (level == -1) {
        const char* package_sep = strchr(__Pyx_MODULE_NAME, '.');
        if (package_sep != (0)) {
            module = PyImport_ImportModuleLevelObject(
                name, moddict, empty_dict, from_list, 1);
            if (unlikely(!module)) {
                if (unlikely(!PyErr_ExceptionMatches(PyExc_ImportError)))
                    goto bad;
                PyErr_Clear();
            }
        }
        level = 0;
    }
    if (!module) {
        module = PyImport_ImportModuleLevelObject(
            name, moddict, empty_dict, from_list, level);
    }
bad:
    Py_XDECREF(from_list);
    Py_XDECREF(empty_dict);
    return module;
}

/* Import */
static PyObject *__Pyx_Import(PyObject *name, PyObject *const *imported_names, Py_ssize_t len_imported_names, PyObject *qualname, int level) {
    return __Pyx__Import(name, imported_names, len_imported_names, qualname, __pyx_mstate_global->__pyx_d, level);
}

/* 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_mstate_global->__pyx_kp_u__2);
        if (unlikely(!module_dot)) { goto modbad; }
        full_name = PyUnicode_Concat(module_dot, name);
        if (unlikely(!full_name)) { goto modbad; }
        #if (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM  < 0x07030400) ||\
                CYTHON_COMPILING_IN_GRAAL
        {
            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, "cannot import name %S", name);
    }
    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);
}
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);
    }
}
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);
    for (i=0; i<n; i++) {
        if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
    }
    for (i=0; i<n; i++) {
        PyObject *t = PyTuple_GET_ITEM(tuple, i);
        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

/* BytesEquals (used by UnicodeEquals) */
static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_GRAAL ||\
        !(CYTHON_ASSUME_SAFE_SIZE && CYTHON_ASSUME_SAFE_MACROS)
    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 || CYTHON_COMPILING_IN_GRAAL
    return PyObject_RichCompareBool(s1, s2, equals);
#else
    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 (s1_is_unicode & s2_is_unicode) {
        Py_ssize_t length, length2;
        int kind;
        void *data1, *data2;
        #if !CYTHON_COMPILING_IN_LIMITED_API
        if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0))
            return -1;
        #endif
        length = __Pyx_PyUnicode_GET_LENGTH(s1);
        #if !CYTHON_ASSUME_SAFE_SIZE
        if (unlikely(length < 0)) return -1;
        #endif
        length2 = __Pyx_PyUnicode_GET_LENGTH(s2);
        #if !CYTHON_ASSUME_SAFE_SIZE
        if (unlikely(length2 < 0)) return -1;
        #endif
        if (length != length2) {
            goto return_ne;
        }
#if CYTHON_USE_UNICODE_INTERNALS
        {
            Py_hash_t hash1, hash2;
            hash1 = ((PyASCIIObject*)s1)->hash;
            hash2 = ((PyASCIIObject*)s2)->hash;
            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));
            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_result)
            return -1;
        result = __Pyx_PyObject_IsTrue(py_result);
        Py_DECREF(py_result);
        return result;
    }
return_eq:
    return (equals == Py_EQ);
return_ne:
    return (equals == Py_NE);
#endif
}

/* CIntToDigits (used by CIntToPyUnicode) */
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 (used by COrdinalToPyUnicode) */
static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, const 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;
    void *udata;
    uval = PyUnicode_New(ulength, 127);
    if (unlikely(!uval)) return NULL;
    udata = PyUnicode_DATA(uval);
    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 = PySequence_Repeat(padding, uoffset - prepend_sign);
                    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 = PyUnicode_Concat(padding, uval);
            Py_DECREF(uval);
            uval = tmp;
        }
        if (likely(uval) && sign) {
            PyObject *tmp = PyUnicode_Concat(sign, uval);
            Py_DECREF(uval);
            uval = tmp;
        }
done_or_error:
        Py_XDECREF(padding);
        Py_XDECREF(sign);
    }
#endif
    return uval;
}

/* COrdinalToPyUnicode (used by CIntToPyUnicode) */
static CYTHON_INLINE int __Pyx_CheckUnicodeValue(int value) {
    return value <= 1114111;
}
static PyObject* __Pyx_PyUnicode_FromOrdinal_Padded(int value, Py_ssize_t ulength, char padding_char) {
    Py_ssize_t padding_length = ulength - 1;
    if (likely((padding_length <= 250) && (value < 0xD800 || value > 0xDFFF))) {
        char chars[256];
        if (value <= 255) {
            memset(chars, padding_char, (size_t) padding_length);
            chars[ulength-1] = (char) value;
            return PyUnicode_DecodeLatin1(chars, ulength, NULL);
        }
        char *cpos = chars + sizeof(chars);
        if (value < 0x800) {
            *--cpos = (char) (0x80 | (value & 0x3f));
            value >>= 6;
            *--cpos = (char) (0xc0 | (value & 0x1f));
        } else if (value < 0x10000) {
            *--cpos = (char) (0x80 | (value & 0x3f));
            value >>= 6;
            *--cpos = (char) (0x80 | (value & 0x3f));
            value >>= 6;
            *--cpos = (char) (0xe0 | (value & 0x0f));
        } else {
            *--cpos = (char) (0x80 | (value & 0x3f));
            value >>= 6;
            *--cpos = (char) (0x80 | (value & 0x3f));
            value >>= 6;
            *--cpos = (char) (0x80 | (value & 0x3f));
            value >>= 6;
            *--cpos = (char) (0xf0 | (value & 0x07));
        }
        cpos -= padding_length;
        memset(cpos, padding_char, (size_t) padding_length);
        return PyUnicode_DecodeUTF8(cpos, chars + sizeof(chars) - cpos, NULL);
    }
    if (value <= 127 && CYTHON_USE_UNICODE_INTERNALS) {
        const char chars[1] = {(char) value};
        return __Pyx_PyUnicode_BuildFromAscii(ulength, chars, 1, 0, padding_char);
    }
    {
        PyObject *uchar, *padding_uchar, *padding, *result;
        padding_uchar = PyUnicode_FromOrdinal(padding_char);
        if (unlikely(!padding_uchar)) return NULL;
        padding = PySequence_Repeat(padding_uchar, padding_length);
        Py_DECREF(padding_uchar);
        if (unlikely(!padding)) return NULL;
        uchar = PyUnicode_FromOrdinal(value);
        if (unlikely(!uchar)) {
            Py_DECREF(padding);
            return NULL;
        }
        result = PyUnicode_Concat(padding, uchar);
        Py_DECREF(padding);
        Py_DECREF(uchar);
        return result;
    }
}

/* CIntToPyUnicode */
static CYTHON_INLINE PyObject* __Pyx_uchar___Pyx_PyUnicode_From_int(int value, Py_ssize_t width, char padding_char) {
#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 (unlikely(!(is_unsigned || value == 0 || value > 0) ||
                    !(sizeof(value) <= 2 || value & ~ (int) 0x01fffff || __Pyx_CheckUnicodeValue((int) value)))) {
        PyErr_SetString(PyExc_OverflowError, "%c arg not in range(0x110000)");
        return NULL;
    }
    if (width <= 1) {
        return PyUnicode_FromOrdinal((int) value);
    }
    return __Pyx_PyUnicode_FromOrdinal_Padded((int) value, width, padding_char);
}
static CYTHON_INLINE PyObject* __Pyx____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** values, 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;
    if (max_char > 1114111) max_char = 1114111;
    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);
    assert(kind_shift == 2 || kind_shift == 1 || kind_shift == 0);
    if (unlikely((PY_SSIZE_T_MAX >> kind_shift) - result_ulength < 0))
        goto overflow;
    char_pos = 0;
    for (i=0; i < value_count; i++) {
        int ukind;
        Py_ssize_t ulength;
        void *udata;
        PyObject *uval = values[i];
        #if !CYTHON_COMPILING_IN_LIMITED_API
        if (__Pyx_PyUnicode_READY(uval) == (-1))
            goto bad;
        #endif
        ulength = __Pyx_PyUnicode_GET_LENGTH(uval);
        #if !CYTHON_ASSUME_SAFE_SIZE
        if (unlikely(ulength < 0)) goto bad;
        #endif
        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 (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 || 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
    Py_ssize_t i;
    PyObject *result = NULL;
    PyObject *value_tuple = PyTuple_New(value_count);
    if (unlikely(!value_tuple)) return NULL;
    CYTHON_UNUSED_VAR(max_char);
    CYTHON_UNUSED_VAR(result_ulength);
    for (i=0; i<value_count; i++) {
        if (__Pyx_PyTuple_SET_ITEM(value_tuple, i, values[i]) != (0)) goto bad;
        Py_INCREF(values[i]);
    }
    result = PyUnicode_Join(__pyx_mstate_global->__pyx_empty_unicode, value_tuple);
bad:
    Py_DECREF(value_tuple);
    return result;
#endif
}

/* RaiseException */
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;
}

/* fastcall */
#if CYTHON_METH_FASTCALL
static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s)
{
    Py_ssize_t i, n = __Pyx_PyTuple_GET_SIZE(kwnames);
    #if !CYTHON_ASSUME_SAFE_SIZE
    if (unlikely(n == -1)) return NULL;
    #endif
    for (i = 0; i < n; i++)
    {
        PyObject *namei = __Pyx_PyTuple_GET_ITEM(kwnames, i);
        #if !CYTHON_ASSUME_SAFE_MACROS
        if (unlikely(!namei)) return NULL;
        #endif
        if (s == namei) return kwvalues[i];
    }
    for (i = 0; i < n; i++)
    {
        PyObject *namei = __Pyx_PyTuple_GET_ITEM(kwnames, i);
        #if !CYTHON_ASSUME_SAFE_MACROS
        if (unlikely(!namei)) return NULL;
        #endif
        int eq = __Pyx_PyUnicode_Equals(s, namei, 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_COMPILING_IN_LIMITED_API
CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues) {
    Py_ssize_t i, nkwargs;
    PyObject *dict;
#if !CYTHON_ASSUME_SAFE_SIZE
    nkwargs = PyTuple_Size(kwnames);
    if (unlikely(nkwargs < 0)) return NULL;
#else
    nkwargs = PyTuple_GET_SIZE(kwnames);
#endif
    dict = PyDict_New();
    if (unlikely(!dict))
        return NULL;
    for (i=0; i<nkwargs; i++) {
#if !CYTHON_ASSUME_SAFE_MACROS
        PyObject *key = PyTuple_GetItem(kwnames, i);
        if (!key) goto bad;
#else
        PyObject *key = PyTuple_GET_ITEM(kwnames, i);
#endif
        if (unlikely(PyDict_SetItem(dict, key, kwvalues[i]) < 0))
            goto bad;
    }
    return dict;
bad:
    Py_DECREF(dict);
    return NULL;
}
#endif
#endif

/* UnpackUnboundCMethod (used by CallUnboundCMethod0) */
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030C0000
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;
}
#elif CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03090000
static PyObject *__Pyx_SelflessCall(PyObject *method, PyObject **args, Py_ssize_t nargs, PyObject *kwnames) {
        return _PyObject_Vectorcall
            (method, args ? args+1 : NULL, nargs ? nargs-1 : 0, kwnames);
}
#else
static PyObject *__Pyx_SelflessCall(PyObject *method, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) {
    return
#if PY_VERSION_HEX < 0x03090000
    _PyObject_Vectorcall
#else
    PyObject_Vectorcall
#endif
        (method, args ? args+1 : NULL, nargs ? (size_t) nargs-1 : 0, kwnames);
}
#endif
static PyMethodDef __Pyx_UnboundCMethod_Def = {
     "CythonUnboundCMethod",
     __PYX_REINTERPRET_FUNCION(PyCFunction, __Pyx_SelflessCall),
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030C0000
     METH_VARARGS | METH_KEYWORDS,
#else
     METH_FASTCALL | METH_KEYWORDS,
#endif
     NULL
};
static int __Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction* target) {
    PyObject *method, *result=NULL;
    method = __Pyx_PyObject_GetAttrStr(target->type, *target->method_name);
    if (unlikely(!method))
        return -1;
    result = method;
#if CYTHON_COMPILING_IN_CPYTHON
    if (likely(__Pyx_TypeCheck(method, &PyMethodDescr_Type)))
    {
        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);
            result = unbound_method;
        }
    }
#if !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    if (unlikely(target->method)) {
        Py_DECREF(result);
    } else
#endif
    target->method = result;
    return 0;
}

/* CallUnboundCMethod0 */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self) {
    int was_initialized = __Pyx_CachedCFunction_GetAndSetInitializing(cfunc);
    if (likely(was_initialized == 2 && cfunc->func)) {
        if (likely(cfunc->flag == METH_NOARGS))
            return __Pyx_CallCFunction(cfunc, self, NULL);
        if (likely(cfunc->flag == METH_FASTCALL))
            return __Pyx_CallCFunctionFast(cfunc, self, NULL, 0);
        if (cfunc->flag == (METH_FASTCALL | METH_KEYWORDS))
            return __Pyx_CallCFunctionFastWithKeywords(cfunc, self, NULL, 0, NULL);
        if (likely(cfunc->flag == (METH_VARARGS | METH_KEYWORDS)))
            return __Pyx_CallCFunctionWithKeywords(cfunc, self, __pyx_mstate_global->__pyx_empty_tuple, NULL);
        if (cfunc->flag == METH_VARARGS)
            return __Pyx_CallCFunction(cfunc, self, __pyx_mstate_global->__pyx_empty_tuple);
        return __Pyx__CallUnboundCMethod0(cfunc, self);
    }
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    else if (unlikely(was_initialized == 1)) {
        __Pyx_CachedCFunction tmp_cfunc = {
#ifndef __cplusplus
            0
#endif
        };
        tmp_cfunc.type = cfunc->type;
        tmp_cfunc.method_name = cfunc->method_name;
        return __Pyx__CallUnboundCMethod0(&tmp_cfunc, self);
    }
#endif
    PyObject *result = __Pyx__CallUnboundCMethod0(cfunc, self);
    __Pyx_CachedCFunction_SetFinishedInitializing(cfunc);
    return result;
}
#endif
static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self) {
    PyObject *result;
    if (unlikely(!cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL;
    result = __Pyx_PyObject_CallOneArg(cfunc->method, self);
    return result;
}

/* py_dict_items (used by OwnedDictNext) */
static CYTHON_INLINE PyObject* __Pyx_PyDict_Items(PyObject* d) {
    return __Pyx_CallUnboundCMethod0(&__pyx_mstate_global->__pyx_umethod_PyDict_Type_items, d);
}

/* py_dict_values (used by OwnedDictNext) */
static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d) {
    return __Pyx_CallUnboundCMethod0(&__pyx_mstate_global->__pyx_umethod_PyDict_Type_values, d);
}

/* OwnedDictNext (used by ParseKeywordsImpl) */
#if CYTHON_AVOID_BORROWED_REFS
static int __Pyx_PyDict_NextRef(PyObject *p, PyObject **ppos, PyObject **pkey, PyObject **pvalue) {
    PyObject *next = NULL;
    if (!*ppos) {
        if (pvalue) {
            PyObject *dictview = pkey ? __Pyx_PyDict_Items(p) : __Pyx_PyDict_Values(p);
            if (unlikely(!dictview)) goto bad;
            *ppos = PyObject_GetIter(dictview);
            Py_DECREF(dictview);
        } else {
            *ppos = PyObject_GetIter(p);
        }
        if (unlikely(!*ppos)) goto bad;
    }
    next = PyIter_Next(*ppos);
    if (!next) {
        if (PyErr_Occurred()) goto bad;
        return 0;
    }
    if (pkey && pvalue) {
        *pkey = __Pyx_PySequence_ITEM(next, 0);
        if (unlikely(*pkey)) goto bad;
        *pvalue = __Pyx_PySequence_ITEM(next, 1);
        if (unlikely(*pvalue)) goto bad;
        Py_DECREF(next);
    } else if (pkey) {
        *pkey = next;
    } else {
        assert(pvalue);
        *pvalue = next;
    }
    return 1;
  bad:
    Py_XDECREF(next);
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d0000
    PyErr_FormatUnraisable("Exception ignored in __Pyx_PyDict_NextRef");
#else
    PyErr_WriteUnraisable(__pyx_mstate_global->__pyx_n_u_Pyx_PyDict_NextRef);
#endif
    if (pkey) *pkey = NULL;
    if (pvalue) *pvalue = NULL;
    return 0;
}
#else // !CYTHON_AVOID_BORROWED_REFS
static int __Pyx_PyDict_NextRef(PyObject *p, Py_ssize_t *ppos, PyObject **pkey, PyObject **pvalue) {
    int result = PyDict_Next(p, ppos, pkey, pvalue);
    if (likely(result == 1)) {
        if (pkey) Py_INCREF(*pkey);
        if (pvalue) Py_INCREF(*pvalue);
    }
    return result;
}
#endif

/* RaiseDoubleKeywords (used by ParseKeywordsImpl) */
static void __Pyx_RaiseDoubleKeywordsError(
    const char* func_name,
    PyObject* kw_name)
{
    PyErr_Format(PyExc_TypeError,
        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
}

/* CallUnboundCMethod2 */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2) {
    int was_initialized = __Pyx_CachedCFunction_GetAndSetInitializing(cfunc);
    if (likely(was_initialized == 2 && cfunc->func)) {
        PyObject *args[2] = {arg1, arg2};
        if (cfunc->flag == METH_FASTCALL) {
            return __Pyx_CallCFunctionFast(cfunc, self, args, 2);
        }
        if (cfunc->flag == (METH_FASTCALL | METH_KEYWORDS))
            return __Pyx_CallCFunctionFastWithKeywords(cfunc, self, args, 2, NULL);
    }
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    else if (unlikely(was_initialized == 1)) {
        __Pyx_CachedCFunction tmp_cfunc = {
#ifndef __cplusplus
            0
#endif
        };
        tmp_cfunc.type = cfunc->type;
        tmp_cfunc.method_name = cfunc->method_name;
        return __Pyx__CallUnboundCMethod2(&tmp_cfunc, self, arg1, arg2);
    }
#endif
    PyObject *result = __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2);
    __Pyx_CachedCFunction_SetFinishedInitializing(cfunc);
    return result;
}
#endif
static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2){
    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)) {
        PyObject *result = NULL;
        PyObject *args = PyTuple_New(2);
        if (unlikely(!args)) return NULL;
        Py_INCREF(arg1);
        PyTuple_SET_ITEM(args, 0, arg1);
        Py_INCREF(arg2);
        PyTuple_SET_ITEM(args, 1, arg2);
        if (cfunc->flag & METH_KEYWORDS)
            result = __Pyx_CallCFunctionWithKeywords(cfunc, self, args, NULL);
        else
            result = __Pyx_CallCFunction(cfunc, self, args);
        Py_DECREF(args);
        return result;
    }
#endif
    {
        PyObject *args[4] = {NULL, self, arg1, arg2};
        return __Pyx_PyObject_FastCall(cfunc->method, args+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET);
    }
}

/* ParseKeywordsImpl (used by ParseKeywords) */
static int __Pyx_ValidateDuplicatePosArgs(
    PyObject *kwds,
    PyObject ** const argnames[],
    PyObject ** const *first_kw_arg,
    const char* function_name)
{
    PyObject ** const *name = argnames;
    while (name != first_kw_arg) {
        PyObject *key = **name;
        int found = PyDict_Contains(kwds, key);
        if (unlikely(found)) {
            if (found == 1) __Pyx_RaiseDoubleKeywordsError(function_name, key);
            goto bad;
        }
        name++;
    }
    return 0;
bad:
    return -1;
}
#if CYTHON_USE_UNICODE_INTERNALS
static CYTHON_INLINE int __Pyx_UnicodeKeywordsEqual(PyObject *s1, PyObject *s2) {
    int kind;
    Py_ssize_t len = PyUnicode_GET_LENGTH(s1);
    if (len != PyUnicode_GET_LENGTH(s2)) return 0;
    kind = PyUnicode_KIND(s1);
    if (kind != PyUnicode_KIND(s2)) return 0;
    const void *data1 = PyUnicode_DATA(s1);
    const void *data2 = PyUnicode_DATA(s2);
    return (memcmp(data1, data2, (size_t) len * (size_t) kind) == 0);
}
#endif
static int __Pyx_MatchKeywordArg_str(
    PyObject *key,
    PyObject ** const argnames[],
    PyObject ** const *first_kw_arg,
    size_t *index_found,
    const char *function_name)
{
    PyObject ** const *name;
    #if CYTHON_USE_UNICODE_INTERNALS
    Py_hash_t key_hash = ((PyASCIIObject*)key)->hash;
    if (unlikely(key_hash == -1)) {
        key_hash = PyObject_Hash(key);
        if (unlikely(key_hash == -1))
            goto bad;
    }
    #endif
    name = first_kw_arg;
    while (*name) {
        PyObject *name_str = **name;
        #if CYTHON_USE_UNICODE_INTERNALS
        if (key_hash == ((PyASCIIObject*)name_str)->hash && __Pyx_UnicodeKeywordsEqual(name_str, key)) {
            *index_found = (size_t) (name - argnames);
            return 1;
        }
        #else
        #if CYTHON_ASSUME_SAFE_SIZE
        if (PyUnicode_GET_LENGTH(name_str) == PyUnicode_GET_LENGTH(key))
        #endif
        {
            int cmp = PyUnicode_Compare(name_str, key);
            if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
            if (cmp == 0) {
                *index_found = (size_t) (name - argnames);
                return 1;
            }
        }
        #endif
        name++;
    }
    name = argnames;
    while (name != first_kw_arg) {
        PyObject *name_str = **name;
        #if CYTHON_USE_UNICODE_INTERNALS
        if (unlikely(key_hash == ((PyASCIIObject*)name_str)->hash)) {
            if (__Pyx_UnicodeKeywordsEqual(name_str, key))
                goto arg_passed_twice;
        }
        #else
        #if CYTHON_ASSUME_SAFE_SIZE
        if (PyUnicode_GET_LENGTH(name_str) == PyUnicode_GET_LENGTH(key))
        #endif
        {
            if (unlikely(name_str == key)) goto arg_passed_twice;
            int cmp = PyUnicode_Compare(name_str, key);
            if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
            if (cmp == 0) goto arg_passed_twice;
        }
        #endif
        name++;
    }
    return 0;
arg_passed_twice:
    __Pyx_RaiseDoubleKeywordsError(function_name, key);
    goto bad;
bad:
    return -1;
}
static int __Pyx_MatchKeywordArg_nostr(
    PyObject *key,
    PyObject ** const argnames[],
    PyObject ** const *first_kw_arg,
    size_t *index_found,
    const char *function_name)
{
    PyObject ** const *name;
    if (unlikely(!PyUnicode_Check(key))) goto invalid_keyword_type;
    name = first_kw_arg;
    while (*name) {
        int cmp = PyObject_RichCompareBool(**name, key, Py_EQ);
        if (cmp == 1) {
            *index_found = (size_t) (name - argnames);
            return 1;
        }
        if (unlikely(cmp == -1)) goto bad;
        name++;
    }
    name = argnames;
    while (name != first_kw_arg) {
        int cmp = PyObject_RichCompareBool(**name, key, Py_EQ);
        if (unlikely(cmp != 0)) {
            if (cmp == 1) goto arg_passed_twice;
            else goto bad;
        }
        name++;
    }
    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;
bad:
    return -1;
}
static CYTHON_INLINE int __Pyx_MatchKeywordArg(
    PyObject *key,
    PyObject ** const argnames[],
    PyObject ** const *first_kw_arg,
    size_t *index_found,
    const char *function_name)
{
    return likely(PyUnicode_CheckExact(key)) ?
        __Pyx_MatchKeywordArg_str(key, argnames, first_kw_arg, index_found, function_name) :
        __Pyx_MatchKeywordArg_nostr(key, argnames, first_kw_arg, index_found, function_name);
}
static void __Pyx_RejectUnknownKeyword(
    PyObject *kwds,
    PyObject ** const argnames[],
    PyObject ** const *first_kw_arg,
    const char *function_name)
{
    #if CYTHON_AVOID_BORROWED_REFS
    PyObject *pos = NULL;
    #else
    Py_ssize_t pos = 0;
    #endif
    PyObject *key = NULL;
    __Pyx_BEGIN_CRITICAL_SECTION(kwds);
    while (
        #if CYTHON_AVOID_BORROWED_REFS
        __Pyx_PyDict_NextRef(kwds, &pos, &key, NULL)
        #else
        PyDict_Next(kwds, &pos, &key, NULL)
        #endif
    ) {
        PyObject** const *name = first_kw_arg;
        while (*name && (**name != key)) name++;
        if (!*name) {
            size_t index_found = 0;
            int cmp = __Pyx_MatchKeywordArg(key, argnames, first_kw_arg, &index_found, function_name);
            if (cmp != 1) {
                if (cmp == 0) {
                    PyErr_Format(PyExc_TypeError,
                        "%s() got an unexpected keyword argument '%U'",
                        function_name, key);
                }
                #if CYTHON_AVOID_BORROWED_REFS
                Py_DECREF(key);
                #endif
                break;
            }
        }
        #if CYTHON_AVOID_BORROWED_REFS
        Py_DECREF(key);
        #endif
    }
    __Pyx_END_CRITICAL_SECTION();
    #if CYTHON_AVOID_BORROWED_REFS
    Py_XDECREF(pos);
    #endif
    assert(PyErr_Occurred());
}
static int __Pyx_ParseKeywordDict(
    PyObject *kwds,
    PyObject ** const argnames[],
    PyObject *values[],
    Py_ssize_t num_pos_args,
    Py_ssize_t num_kwargs,
    const char* function_name,
    int ignore_unknown_kwargs)
{
    PyObject** const *name;
    PyObject** const *first_kw_arg = argnames + num_pos_args;
    Py_ssize_t extracted = 0;
#if !CYTHON_COMPILING_IN_PYPY || defined(PyArg_ValidateKeywordArguments)
    if (unlikely(!PyArg_ValidateKeywordArguments(kwds))) return -1;
#endif
    name = first_kw_arg;
    while (*name && num_kwargs > extracted) {
        PyObject * key = **name;
        PyObject *value;
        int found = 0;
        #if __PYX_LIMITED_VERSION_HEX >= 0x030d0000
        found = PyDict_GetItemRef(kwds, key, &value);
        #else
        value = PyDict_GetItemWithError(kwds, key);
        if (value) {
            Py_INCREF(value);
            found = 1;
        } else {
            if (unlikely(PyErr_Occurred())) goto bad;
        }
        #endif
        if (found) {
            if (unlikely(found < 0)) goto bad;
            values[name-argnames] = value;
            extracted++;
        }
        name++;
    }
    if (num_kwargs > extracted) {
        if (ignore_unknown_kwargs) {
            if (unlikely(__Pyx_ValidateDuplicatePosArgs(kwds, argnames, first_kw_arg, function_name) == -1))
                goto bad;
        } else {
            __Pyx_RejectUnknownKeyword(kwds, argnames, first_kw_arg, function_name);
            goto bad;
        }
    }
    return 0;
bad:
    return -1;
}
static int __Pyx_ParseKeywordDictToDict(
    PyObject *kwds,
    PyObject ** const argnames[],
    PyObject *kwds2,
    PyObject *values[],
    Py_ssize_t num_pos_args,
    const char* function_name)
{
    PyObject** const *name;
    PyObject** const *first_kw_arg = argnames + num_pos_args;
    Py_ssize_t len;
#if !CYTHON_COMPILING_IN_PYPY || defined(PyArg_ValidateKeywordArguments)
    if (unlikely(!PyArg_ValidateKeywordArguments(kwds))) return -1;
#endif
    if (PyDict_Update(kwds2, kwds) < 0) goto bad;
    name = first_kw_arg;
    while (*name) {
        PyObject *key = **name;
        PyObject *value;
#if !CYTHON_COMPILING_IN_LIMITED_API && (PY_VERSION_HEX >= 0x030d00A2 || defined(PyDict_Pop))
        int found = PyDict_Pop(kwds2, key, &value);
        if (found) {
            if (unlikely(found < 0)) goto bad;
            values[name-argnames] = value;
        }
#elif __PYX_LIMITED_VERSION_HEX >= 0x030d0000
        int found = PyDict_GetItemRef(kwds2, key, &value);
        if (found) {
            if (unlikely(found < 0)) goto bad;
            values[name-argnames] = value;
            if (unlikely(PyDict_DelItem(kwds2, key) < 0)) goto bad;
        }
#else
    #if CYTHON_COMPILING_IN_CPYTHON
        value = _PyDict_Pop(kwds2, key, kwds2);
    #else
        value = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyDict_Type_pop, kwds2, key, kwds2);
    #endif
        if (value == kwds2) {
            Py_DECREF(value);
        } else {
            if (unlikely(!value)) goto bad;
            values[name-argnames] = value;
        }
#endif
        name++;
    }
    len = PyDict_Size(kwds2);
    if (len > 0) {
        return __Pyx_ValidateDuplicatePosArgs(kwds, argnames, first_kw_arg, function_name);
    } else if (unlikely(len == -1)) {
        goto bad;
    }
    return 0;
bad:
    return -1;
}
static int __Pyx_ParseKeywordsTuple(
    PyObject *kwds,
    PyObject * const *kwvalues,
    PyObject ** const argnames[],
    PyObject *kwds2,
    PyObject *values[],
    Py_ssize_t num_pos_args,
    Py_ssize_t num_kwargs,
    const char* function_name,
    int ignore_unknown_kwargs)
{
    PyObject *key = NULL;
    PyObject** const * name;
    PyObject** const *first_kw_arg = argnames + num_pos_args;
    for (Py_ssize_t pos = 0; pos < num_kwargs; pos++) {
#if CYTHON_AVOID_BORROWED_REFS
        key = __Pyx_PySequence_ITEM(kwds, pos);
#else
        key = __Pyx_PyTuple_GET_ITEM(kwds, pos);
#endif
#if !CYTHON_ASSUME_SAFE_MACROS
        if (unlikely(!key)) goto bad;
#endif
        name = first_kw_arg;
        while (*name && (**name != key)) name++;
        if (*name) {
            PyObject *value = kwvalues[pos];
            values[name-argnames] = __Pyx_NewRef(value);
        } else {
            size_t index_found = 0;
            int cmp = __Pyx_MatchKeywordArg(key, argnames, first_kw_arg, &index_found, function_name);
            if (cmp == 1) {
                PyObject *value = kwvalues[pos];
                values[index_found] = __Pyx_NewRef(value);
            } else {
                if (unlikely(cmp == -1)) goto bad;
                if (kwds2) {
                    PyObject *value = kwvalues[pos];
                    if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
                } else if (!ignore_unknown_kwargs) {
                    goto invalid_keyword;
                }
            }
        }
        #if CYTHON_AVOID_BORROWED_REFS
        Py_DECREF(key);
        key = NULL;
        #endif
    }
    return 0;
invalid_keyword:
    PyErr_Format(PyExc_TypeError,
        "%s() got an unexpected keyword argument '%U'",
        function_name, key);
    goto bad;
bad:
    #if CYTHON_AVOID_BORROWED_REFS
    Py_XDECREF(key);
    #endif
    return -1;
}

/* ParseKeywords */
static int __Pyx_ParseKeywords(
    PyObject *kwds,
    PyObject * const *kwvalues,
    PyObject ** const argnames[],
    PyObject *kwds2,
    PyObject *values[],
    Py_ssize_t num_pos_args,
    Py_ssize_t num_kwargs,
    const char* function_name,
    int ignore_unknown_kwargs)
{
    if (CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds)))
        return __Pyx_ParseKeywordsTuple(kwds, kwvalues, argnames, kwds2, values, num_pos_args, num_kwargs, function_name, ignore_unknown_kwargs);
    else if (kwds2)
        return __Pyx_ParseKeywordDictToDict(kwds, argnames, kwds2, values, num_pos_args, function_name);
    else
        return __Pyx_ParseKeywordDict(kwds, argnames, values, num_pos_args, num_kwargs, function_name, ignore_unknown_kwargs);
}

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

/* PyDictVersioning (used by GetModuleGlobalName) */
#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_COMPILING_IN_LIMITED_API
    if (unlikely(!__pyx_m)) {
        if (!PyErr_Occurred())
            PyErr_SetNone(PyExc_NameError);
        return NULL;
    }
    result = PyObject_GetAttr(__pyx_m, name);
    if (likely(result)) {
        return result;
    }
    PyErr_Clear();
#elif CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS
    if (unlikely(__Pyx_PyDict_GetItemRef(__pyx_mstate_global->__pyx_d, name, &result) == -1)) PyErr_Clear();
    __PYX_UPDATE_DICT_CACHE(__pyx_mstate_global->__pyx_d, result, *dict_cached_value, *dict_version)
    if (likely(result)) {
        return result;
    }
#else
    result = _PyDict_GetItem_KnownHash(__pyx_mstate_global->__pyx_d, name, ((PyASCIIObject *) name)->hash);
    __PYX_UPDATE_DICT_CACHE(__pyx_mstate_global->__pyx_d, result, *dict_cached_value, *dict_version)
    if (likely(result)) {
        return __Pyx_NewRef(result);
    }
    PyErr_Clear();
#endif
    return __Pyx_GetBuiltinName(name);
}

/* 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
    PyGILState_STATE state;
    if (nogil)
        state = PyGILState_Ensure();
    else state = (PyGILState_STATE)0;
    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);
    }
    ctx = PyUnicode_FromString(name);
    __Pyx_ErrRestore(old_exc, old_val, old_tb);
    if (!ctx) {
        PyErr_WriteUnraisable(Py_None);
    } else {
        PyErr_WriteUnraisable(ctx);
        Py_DECREF(ctx);
    }
    if (nogil)
        PyGILState_Release(state);
}

/* RejectKeywords */
static void __Pyx_RejectKeywords(const char* function_name, PyObject *kwds) {
    PyObject *key = NULL;
    if (CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds))) {
        key = __Pyx_PySequence_ITEM(kwds, 0);
    } else {
#if CYTHON_AVOID_BORROWED_REFS
        PyObject *pos = NULL;
#else
        Py_ssize_t pos = 0;
#endif
#if !CYTHON_COMPILING_IN_PYPY || defined(PyArg_ValidateKeywordArguments)
        if (unlikely(!PyArg_ValidateKeywordArguments(kwds))) return;
#endif
        __Pyx_PyDict_NextRef(kwds, &pos, &key, NULL);
#if CYTHON_AVOID_BORROWED_REFS
        Py_XDECREF(pos);
#endif
    }
    if (likely(key)) {
        PyErr_Format(PyExc_TypeError,
            "%s() got an unexpected keyword argument '%U'",
            function_name, key);
        Py_DECREF(key);
    }
}

/* 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 >= 0x030C0000
    local_value = tstate->current_exception;
    tstate->current_exception = 0;
  #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
#elif __PYX_LIMITED_VERSION_HEX > 0x030C0000
    local_value = PyErr_GetRaisedException();
#else
    PyErr_Fetch(&local_type, &local_value, &local_tb);
#endif
#if __PYX_LIMITED_VERSION_HEX > 0x030C0000
    if (likely(local_value)) {
        local_type = (PyObject*) Py_TYPE(local_value);
        Py_INCREF(local_type);
        local_tb = PyException_GetTraceback(local_value);
    }
#else
    PyErr_NormalizeException(&local_type, &local_value, &local_tb);
#if CYTHON_FAST_THREAD_STATE
    if (unlikely(tstate->curexc_type))
#else
    if (unlikely(PyErr_Occurred()))
#endif
        goto bad;
    if (local_tb) {
        if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
            goto bad;
    }
#endif // __PYX_LIMITED_VERSION_HEX > 0x030C0000
    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);
#elif __PYX_LIMITED_VERSION_HEX >= 0x030b0000
    PyErr_SetHandledException(local_value);
    Py_XDECREF(local_value);
    Py_XDECREF(local_type);
    Py_XDECREF(local_tb);
#else
    PyErr_SetExcInfo(local_type, local_value, local_tb);
#endif
    return 0;
#if __PYX_LIMITED_VERSION_HEX <= 0x030C0000
bad:
    *type = 0;
    *value = 0;
    *tb = 0;
    Py_XDECREF(local_type);
    Py_XDECREF(local_value);
    Py_XDECREF(local_tb);
    return -1;
#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();
}

/* PyObjectVectorCallKwBuilder */
#if CYTHON_VECTORCALL
static int __Pyx_VectorcallBuilder_AddArg(PyObject *key, PyObject *value, PyObject *builder, PyObject **args, int n) {
    (void)__Pyx_PyObject_FastCallDict;
    if (__Pyx_PyTuple_SET_ITEM(builder, n, key) != (0)) return -1;
    Py_INCREF(key);
    args[n] = value;
    return 0;
}
CYTHON_UNUSED static int __Pyx_VectorcallBuilder_AddArg_Check(PyObject *key, PyObject *value, PyObject *builder, PyObject **args, int n) {
    (void)__Pyx_VectorcallBuilder_AddArgStr;
    if (unlikely(!PyUnicode_Check(key))) {
        PyErr_SetString(PyExc_TypeError, "keywords must be strings");
        return -1;
    }
    return __Pyx_VectorcallBuilder_AddArg(key, value, builder, args, n);
}
static int __Pyx_VectorcallBuilder_AddArgStr(const char *key, PyObject *value, PyObject *builder, PyObject **args, int n) {
    PyObject *pyKey = PyUnicode_FromString(key);
    if (!pyKey) return -1;
    return __Pyx_VectorcallBuilder_AddArg(pyKey, value, builder, args, n);
}
#else // CYTHON_VECTORCALL
CYTHON_UNUSED static int __Pyx_VectorcallBuilder_AddArg_Check(PyObject *key, PyObject *value, PyObject *builder, CYTHON_UNUSED PyObject **args, CYTHON_UNUSED int n) {
    if (unlikely(!PyUnicode_Check(key))) {
        PyErr_SetString(PyExc_TypeError, "keywords must be strings");
        return -1;
    }
    return PyDict_SetItem(builder, key, value);
}
#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,
                                                              int wraparound, int boundscheck, int unsafe_shared) {
    CYTHON_MAYBE_UNUSED_VAR(unsafe_shared);
#if CYTHON_ASSUME_SAFE_SIZE
    Py_ssize_t wrapped_i = i;
    if (wraparound & unlikely(i < 0)) {
        wrapped_i += PyList_GET_SIZE(o);
    }
    if ((CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS || !CYTHON_ASSUME_SAFE_MACROS)) {
        return __Pyx_PyList_GetItemRefFast(o, wrapped_i, unsafe_shared);
    } else
    if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) {
        return __Pyx_NewRef(PyList_GET_ITEM(o, wrapped_i));
    }
    return __Pyx_GetItemInt_Generic(o, PyLong_FromSsize_t(i));
#else
    (void)wraparound;
    (void)boundscheck;
    return PySequence_GetItem(o, i);
#endif
}
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
                                                              int wraparound, int boundscheck, int unsafe_shared) {
    CYTHON_MAYBE_UNUSED_VAR(unsafe_shared);
#if CYTHON_ASSUME_SAFE_SIZE && 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)))) {
        return __Pyx_NewRef(PyTuple_GET_ITEM(o, wrapped_i));
    }
    return __Pyx_GetItemInt_Generic(o, PyLong_FromSsize_t(i));
#else
    (void)wraparound;
    (void)boundscheck;
    return PySequence_GetItem(o, i);
#endif
}
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list,
                                                     int wraparound, int boundscheck, int unsafe_shared) {
    CYTHON_MAYBE_UNUSED_VAR(unsafe_shared);
#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE
    if (is_list || PyList_CheckExact(o)) {
        Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
        if ((CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS)) {
            return __Pyx_PyList_GetItemRefFast(o, n, unsafe_shared);
        } else if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) {
            return __Pyx_NewRef(PyList_GET_ITEM(o, n));
        }
    } else
    #if !CYTHON_AVOID_BORROWED_REFS
    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)))) {
            return __Pyx_NewRef(PyTuple_GET_ITEM(o, n));
        }
    } else
    #endif
#endif
#if CYTHON_USE_TYPE_SLOTS && !CYTHON_COMPILING_IN_PYPY
    {
        PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping;
        PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence;
        if (!is_list && mm && mm->mp_subscript) {
            PyObject *r, *key = PyLong_FromSsize_t(i);
            if (unlikely(!key)) return NULL;
            r = mm->mp_subscript(o, key);
            Py_DECREF(key);
            return r;
        }
        if (is_list || 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
    (void)wraparound;
    (void)boundscheck;
    return __Pyx_GetItemInt_Generic(o, PyLong_FromSsize_t(i));
}

/* RaiseUnexpectedTypeError */
static int
__Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj)
{
    __Pyx_TypeName obj_type_name = __Pyx_PyType_GetFullyQualifiedName(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;
}

/* DictGetItem */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
    PyObject *value;
    if (unlikely(__Pyx_PyDict_GetItemRef(d, key, &value) == 0)) { // no value, no error
        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 value;
}
#endif

/* PyObjectCall2Args (used by CallUnboundCMethod1) */
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);
}

/* CallUnboundCMethod1 */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg) {
    int was_initialized =  __Pyx_CachedCFunction_GetAndSetInitializing(cfunc);
    if (likely(was_initialized == 2 && cfunc->func)) {
        int flag = cfunc->flag;
        if (flag == METH_O) {
            return __Pyx_CallCFunction(cfunc, self, arg);
        } else if (flag == METH_FASTCALL) {
            return __Pyx_CallCFunctionFast(cfunc, self, &arg, 1);
        } else if (flag == (METH_FASTCALL | METH_KEYWORDS)) {
            return __Pyx_CallCFunctionFastWithKeywords(cfunc, self, &arg, 1, NULL);
        }
    }
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    else if (unlikely(was_initialized == 1)) {
        __Pyx_CachedCFunction tmp_cfunc = {
#ifndef __cplusplus
            0
#endif
        };
        tmp_cfunc.type = cfunc->type;
        tmp_cfunc.method_name = cfunc->method_name;
        return __Pyx__CallUnboundCMethod1(&tmp_cfunc, self, arg);
    }
#endif
    PyObject* result = __Pyx__CallUnboundCMethod1(cfunc, self, arg);
    __Pyx_CachedCFunction_SetFinishedInitializing(cfunc);
    return result;
}
#endif
static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg){
    PyObject *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)) {
        PyObject *args = PyTuple_New(1);
        if (unlikely(!args)) return NULL;
        Py_INCREF(arg);
        PyTuple_SET_ITEM(args, 0, arg);
        if (cfunc->flag & METH_KEYWORDS)
            result = __Pyx_CallCFunctionWithKeywords(cfunc, self, args, NULL);
        else
            result = __Pyx_CallCFunction(cfunc, self, args);
        Py_DECREF(args);
    } else
#endif
    {
        result = __Pyx_PyObject_Call2Args(cfunc->method, self, arg);
    }
    return result;
}

/* dict_getitem_default */
static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value) {
    PyObject* value;
#if !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 (PyBytes_CheckExact(key) || PyUnicode_CheckExact(key) || PyLong_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_mstate_global->__pyx_umethod_PyDict_Type_get, d, key);
        else
            value = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__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 (used by object_ord) */
static void __Pyx_PyUnicode_AsPy_UCS4_error(Py_ssize_t length) {
    if (likely(length >= 0)) {
        PyErr_Format(PyExc_ValueError,
                     "only single character unicode strings can be converted to Py_UCS4, "
                     "got length %" CYTHON_FORMAT_SSIZE_T "d", length);
    }
}
static CYTHON_INLINE Py_UCS4 __Pyx_PyUnicode_AsPy_UCS4(PyObject* x) {
    Py_ssize_t length = __Pyx_PyUnicode_GET_LENGTH(x);
    if (unlikely(length != 1)) {
        __Pyx_PyUnicode_AsPy_UCS4_error(length);
        return (Py_UCS4)-1;
    }
    return __Pyx_PyUnicode_READ_CHAR(x, 0);
}

/* object_ord */
static long __Pyx__PyObject_Ord(PyObject* c) {
    Py_ssize_t size;
    if (PyBytes_Check(c)) {
        size = __Pyx_PyBytes_GET_SIZE(c);
        if (likely(size == 1)) {
#if CYTHON_ASSUME_SAFE_MACROS
            return (unsigned char) PyBytes_AS_STRING(c)[0];
#else
            char *data = PyBytes_AsString(c);
            if (unlikely(!data)) return -1;
            return (unsigned char) data[0];
#endif
        }
#if !CYTHON_ASSUME_SAFE_SIZE
        else if (unlikely(size < 0)) return -1;
#endif
    } else if (PyByteArray_Check(c)) {
        size = __Pyx_PyByteArray_GET_SIZE(c);
        if (likely(size == 1)) {
#if CYTHON_ASSUME_SAFE_MACROS
            return (unsigned char) PyByteArray_AS_STRING(c)[0];
#else
            char *data = PyByteArray_AsString(c);
            if (unlikely(!data)) return -1;
            return (unsigned char) data[0];
#endif
        }
#if !CYTHON_ASSUME_SAFE_SIZE
        else if (unlikely(size < 0)) return -1;
#endif
    } else {
        __Pyx_TypeName c_type_name = __Pyx_PyType_GetFullyQualifiedName(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;
}

/* PyUnicode_Substring */
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_Substring(
            PyObject* text, Py_ssize_t start, Py_ssize_t stop) {
    Py_ssize_t length;
    #if !CYTHON_COMPILING_IN_LIMITED_API
    if (unlikely(__Pyx_PyUnicode_READY(text) == -1)) return NULL;
    #endif
    length = __Pyx_PyUnicode_GET_LENGTH(text);
    #if !CYTHON_ASSUME_SAFE_SIZE
    if (unlikely(length < 0)) return NULL;
    #endif
    if (start < 0) {
        start += length;
        if (start < 0)
            start = 0;
    }
    if (stop < 0)
        stop += length;
    else if (stop > length)
        stop = length;
    if (stop <= start)
        return __Pyx_NewRef(__pyx_mstate_global->__pyx_empty_unicode);
    if (start == 0 && stop == length)
        return __Pyx_NewRef(text);
#if CYTHON_COMPILING_IN_LIMITED_API
    return PyUnicode_Substring(text, start, stop);
#else
    return PyUnicode_FromKindAndData(PyUnicode_KIND(text),
        PyUnicode_1BYTE_DATA(text) + start*PyUnicode_KIND(text), stop-start);
#endif
}

/* PyObjectFormatAndDecref */
static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatSimpleAndDecref(PyObject* s, PyObject* f) {
    if (unlikely(!s)) return NULL;
    if (likely(PyUnicode_CheckExact(s))) return s;
    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_uchar___Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char) {
#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 (unlikely(!(is_unsigned || value == 0 || value > 0) ||
                    !(sizeof(value) <= 2 || value & ~ (Py_ssize_t) 0x01fffff || __Pyx_CheckUnicodeValue((int) value)))) {
        PyErr_SetString(PyExc_OverflowError, "%c arg not in range(0x110000)");
        return NULL;
    }
    if (width <= 1) {
        return PyUnicode_FromOrdinal((int) value);
    }
    return __Pyx_PyUnicode_FromOrdinal_Padded((int) value, width, padding_char);
}
static CYTHON_INLINE PyObject* __Pyx____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);
}

/* CIntToPyUnicode */
static CYTHON_INLINE PyObject* __Pyx_uchar___Pyx_PyUnicode_From_MPI_Count(MPI_Count value, Py_ssize_t width, char padding_char) {
#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 (unlikely(!(is_unsigned || value == 0 || value > 0) ||
                    !(sizeof(value) <= 2 || value & ~ (MPI_Count) 0x01fffff || __Pyx_CheckUnicodeValue((int) value)))) {
        PyErr_SetString(PyExc_OverflowError, "%c arg not in range(0x110000)");
        return NULL;
    }
    if (width <= 1) {
        return PyUnicode_FromOrdinal((int) value);
    }
    return __Pyx_PyUnicode_FromOrdinal_Padded((int) value, width, padding_char);
}
static CYTHON_INLINE PyObject* __Pyx____Pyx_PyUnicode_From_MPI_Count(MPI_Count value, Py_ssize_t width, char padding_char, char format_char) {
    char digits[sizeof(MPI_Count)*3+2];
    char *dpos, *end = digits + sizeof(MPI_Count)*3+2;
    const char *hex_digits = DIGITS_HEX;
    Py_ssize_t length, ulength;
    int prepend_sign, last_one_off;
    MPI_Count remaining;
#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 (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 = (MPI_Count) (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 = (MPI_Count) (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 = (MPI_Count) (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_GetFullyQualifiedName(Py_TYPE(obj));
    type_name = __Pyx_PyType_GetFullyQualifiedName(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,
                                               int wraparound, int boundscheck, int unsafe_shared) {
    CYTHON_MAYBE_UNUSED_VAR(unsafe_shared);
#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE && !CYTHON_AVOID_BORROWED_REFS
    if (is_list || PyList_CheckExact(o)) {
        Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o));
        if ((CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS && !__Pyx_IS_UNIQUELY_REFERENCED(o, unsafe_shared))) {
            Py_INCREF(v);
            return PyList_SetItem(o, n, v);
        } else if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o)))) {
            PyObject* old;
            Py_INCREF(v);
            old = PyList_GET_ITEM(o, n);
            PyList_SET_ITEM(o, n, v);
            Py_DECREF(old);
            return 0;
        }
    } else
#endif
#if CYTHON_USE_TYPE_SLOTS && !CYTHON_COMPILING_IN_PYPY
    {
        PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping;
        PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence;
        if (!is_list && mm && mm->mp_ass_subscript) {
            int r;
            PyObject *key = PyLong_FromSsize_t(i);
            if (unlikely(!key)) return -1;
            r = mm->mp_ass_subscript(o, key, v);
            Py_DECREF(key);
            return r;
        }
        if (is_list || 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
    (void)wraparound;
    (void)boundscheck;
    return __Pyx_SetItemInt_Generic(o, PyLong_FromSsize_t(i), v);
}

/* tp_new */
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000
static PyObject* __Pyx_tp_new_fallback(PyObject* type_obj, PyObject* args, PyObject* kwargs) {
    PyObject *new_func = NULL, *new_args = NULL, *obj;
    Py_ssize_t i, nargs = PyTuple_Size(args);
    if (unlikely(nargs < 0)) goto bad;
    new_args = PyTuple_New(nargs + 1);
    if (unlikely(!new_args)) goto bad;
    for (i = 0; i < nargs + 1; i++) {
        PyObject *item = (i == 0) ? type_obj : PyTuple_GetItem(args, i - 1);
        if (unlikely(!item)) goto bad;
        Py_INCREF(item);
        if (unlikely(PyTuple_SetItem(new_args, i, item)) < 0) goto bad;
    }
    new_func = PyObject_GetAttrString(type_obj, "__new__");
    if (unlikely(!new_func)) goto bad;
    obj = PyObject_Call(new_func, new_args, kwargs);
    Py_DECREF(new_func);
    Py_DECREF(new_args);
    return obj;
 bad:
    Py_XDECREF(new_func);
    Py_XDECREF(new_args);
    return NULL;
}
#endif
static PyObject* __Pyx_tp_new_kwargs(PyObject* type_obj, PyObject* args, PyObject* kwargs) {
    newfunc tp_new = __Pyx_PyType_TryGetSlot((PyTypeObject*)type_obj, tp_new, newfunc);
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000
    if (!tp_new) return __Pyx_tp_new_fallback(type_obj, args, kwargs);
#else
    assert(tp_new != NULL);
#endif
    return tp_new((PyTypeObject*)type_obj, args, kwargs);
}

/* PyUnicode_Unicode */
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_Unicode(PyObject *obj) {
    if (unlikely(obj == Py_None))
        obj = __pyx_mstate_global->__pyx_kp_u_None;
    return __Pyx_NewRef(obj);
}

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

/* 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);
    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 >= 0x030d00A2 || defined(PyDict_Pop)
    PyObject *value;
    if (PyDict_Pop(d, key, &value) == 0) {
        if (default_value) {
            Py_INCREF(default_value);
        } else {
            PyErr_SetObject(PyExc_KeyError, key);
        }
        value = default_value;
    }
    return value;
#elif CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000
    return _PyDict_Pop(d, key, default_value);
#else
    if (default_value) {
        return __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyDict_Type_pop, d, key, default_value);
    } else {
        return __Pyx_CallUnboundCMethod1(&__pyx_mstate_global->__pyx_umethod_PyDict_Type_pop, d, key);
    }
#endif
}

/* ArgTypeTestFunc (used by ArgTypeTest) */
static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
{
    __Pyx_TypeName type_name;
    __Pyx_TypeName obj_type_name;
    PyObject *extra_info = __pyx_mstate_global->__pyx_empty_unicode;
    int from_annotation_subclass = 0;
    if (unlikely(!type)) {
        PyErr_SetString(PyExc_SystemError, "Missing type object");
        return 0;
    }
    else if (!exact) {
        if (likely(__Pyx_TypeCheck(obj, type))) return 1;
    } else if (exact == 2) {
        if (__Pyx_TypeCheck(obj, type)) {
            from_annotation_subclass = 1;
            extra_info = __pyx_mstate_global->__pyx_kp_u_Note_that_Cython_is_deliberately;
        }
    }
    type_name = __Pyx_PyType_GetFullyQualifiedName(type);
    obj_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(obj));
    PyErr_Format(PyExc_TypeError,
        "Argument '%.200s' has incorrect type (expected " __Pyx_FMT_TYPENAME
        ", got " __Pyx_FMT_TYPENAME ")"
#if __PYX_LIMITED_VERSION_HEX < 0x030C0000
        "%s%U"
#endif
        , name, type_name, obj_type_name
#if __PYX_LIMITED_VERSION_HEX < 0x030C0000
        , (from_annotation_subclass ? ". " : ""), extra_info
#endif
        );
#if __PYX_LIMITED_VERSION_HEX >= 0x030C0000
    if (exact == 2 && from_annotation_subclass) {
        PyObject *res;
        PyObject *vargs[2];
        vargs[0] = PyErr_GetRaisedException();
        vargs[1] = extra_info;
        res = PyObject_VectorcallMethod(__pyx_mstate_global->__pyx_kp_u_add_note, vargs, 2, NULL);
        Py_XDECREF(res);
        PyErr_SetRaisedException(vargs[0]);
    }
#endif
    __Pyx_DECREF_TypeName(type_name);
    __Pyx_DECREF_TypeName(obj_type_name);
    return 0;
}

/* CIntToPyUnicode */
static CYTHON_INLINE PyObject* __Pyx_uchar___Pyx_PyUnicode_From_MPI_Aint(MPI_Aint value, Py_ssize_t width, char padding_char) {
#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 (unlikely(!(is_unsigned || value == 0 || value > 0) ||
                    !(sizeof(value) <= 2 || value & ~ (MPI_Aint) 0x01fffff || __Pyx_CheckUnicodeValue((int) value)))) {
        PyErr_SetString(PyExc_OverflowError, "%c arg not in range(0x110000)");
        return NULL;
    }
    if (width <= 1) {
        return PyUnicode_FromOrdinal((int) value);
    }
    return __Pyx_PyUnicode_FromOrdinal_Padded((int) value, width, padding_char);
}
static CYTHON_INLINE PyObject* __Pyx____Pyx_PyUnicode_From_MPI_Aint(MPI_Aint value, Py_ssize_t width, char padding_char, char format_char) {
    char digits[sizeof(MPI_Aint)*3+2];
    char *dpos, *end = digits + sizeof(MPI_Aint)*3+2;
    const char *hex_digits = DIGITS_HEX;
    Py_ssize_t length, ulength;
    int prepend_sign, last_one_off;
    MPI_Aint remaining;
#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 (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 = (MPI_Aint) (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 = (MPI_Aint) (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 = (MPI_Aint) (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);
}

/* KeywordStringCheck */
static int __Pyx_CheckKeywordStrings(
    const char* function_name,
    PyObject *kw)
{
#if CYTHON_COMPILING_IN_PYPY && !defined(PyArg_ValidateKeywordArguments)
    CYTHON_UNUSED_VAR(function_name);
    CYTHON_UNUSED_VAR(kw);
    return 0;
#else
    if (CYTHON_METH_FASTCALL && likely(PyTuple_Check(kw))) {
#if PY_VERSION_HEX >= 0x03090000
        CYTHON_UNUSED_VAR(function_name);
#else
        Py_ssize_t kwsize;
        #if CYTHON_ASSUME_SAFE_SIZE
        kwsize = PyTuple_GET_SIZE(kw);
        #else
        kwsize = PyTuple_Size(kw);
        if (unlikely(kwsize < 0)) return -1;
        #endif
        for (Py_ssize_t pos = 0; pos < kwsize; pos++) {
            PyObject* key = NULL;
            #if CYTHON_ASSUME_SAFE_MACROS
            key = PyTuple_GET_ITEM(kw, pos);
            #else
            key = PyTuple_GetItem(kw, pos);
            if (unlikely(!key)) return -1;
            #endif
            if (unlikely(!PyUnicode_Check(key))) {
                PyErr_Format(PyExc_TypeError,
                    "%.200s() keywords must be strings", function_name);
                return -1;
            }
        }
#endif
    } else {
        if (unlikely(!PyArg_ValidateKeywordArguments(kw))) return -1;
    }
    return 0;
#endif
}

/* RaiseClosureNameError */
static void __Pyx_RaiseClosureNameError(const char *varname) {
    PyErr_Format(PyExc_NameError, "free variable '%s' referenced before assignment in enclosing scope", varname);
}

/* dict_setdefault (used by FetchCommonType) */
static CYTHON_INLINE PyObject *__Pyx_PyDict_SetDefault(PyObject *d, PyObject *key, PyObject *default_value) {
    PyObject* value;
#if __PYX_LIMITED_VERSION_HEX >= 0x030F0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4)
    PyDict_SetDefaultRef(d, key, default_value, &value);
#elif CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX >= 0x030C0000
    PyObject *args[] = {d, key, default_value};
    value = PyObject_VectorcallMethod(__pyx_mstate_global->__pyx_n_u_setdefault, args, 3 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL);
#elif CYTHON_COMPILING_IN_LIMITED_API
    value = PyObject_CallMethodObjArgs(d, __pyx_mstate_global->__pyx_n_u_setdefault, key, default_value, NULL);
#else
    value = PyDict_SetDefault(d, key, default_value);
    if (unlikely(!value)) return NULL;
    Py_INCREF(value);
#endif
    return value;
}

/* LimitedApiGetTypeDict (used by SetItemOnTypeDict) */
#if CYTHON_COMPILING_IN_LIMITED_API
static Py_ssize_t __Pyx_GetTypeDictOffset(void) {
    PyObject *tp_dictoffset_o;
    Py_ssize_t tp_dictoffset;
    tp_dictoffset_o = PyObject_GetAttrString((PyObject*)(&PyType_Type), "__dictoffset__");
    if (unlikely(!tp_dictoffset_o)) return -1;
    tp_dictoffset = PyLong_AsSsize_t(tp_dictoffset_o);
    Py_DECREF(tp_dictoffset_o);
    if (unlikely(tp_dictoffset == 0)) {
        PyErr_SetString(
            PyExc_TypeError,
            "'type' doesn't have a dictoffset");
        return -1;
    } else if (unlikely(tp_dictoffset < 0)) {
        PyErr_SetString(
            PyExc_TypeError,
            "'type' has an unexpected negative dictoffset. "
            "Please report this as Cython bug");
        return -1;
    }
    return tp_dictoffset;
}
static PyObject *__Pyx_GetTypeDict(PyTypeObject *tp) {
    static Py_ssize_t tp_dictoffset = 0;
    if (unlikely(tp_dictoffset == 0)) {
        tp_dictoffset = __Pyx_GetTypeDictOffset();
        if (unlikely(tp_dictoffset == -1 && PyErr_Occurred())) {
            tp_dictoffset = 0; // try again next time?
            return NULL;
        }
    }
    return *(PyObject**)((char*)tp + tp_dictoffset);
}
#endif

/* SetItemOnTypeDict (used by FixUpExtensionType) */
static int __Pyx__SetItemOnTypeDict(PyTypeObject *tp, PyObject *k, PyObject *v) {
    int result;
    PyObject *tp_dict;
#if CYTHON_COMPILING_IN_LIMITED_API
    tp_dict = __Pyx_GetTypeDict(tp);
    if (unlikely(!tp_dict)) return -1;
#else
    tp_dict = tp->tp_dict;
#endif
    result = PyDict_SetItem(tp_dict, k, v);
    if (likely(!result)) {
        PyType_Modified(tp);
        if (unlikely(PyObject_HasAttr(v, __pyx_mstate_global->__pyx_n_u_set_name))) {
            PyObject *setNameResult = PyObject_CallMethodObjArgs(v, __pyx_mstate_global->__pyx_n_u_set_name,  (PyObject *) tp, k, NULL);
            if (!setNameResult) return -1;
            Py_DECREF(setNameResult);
        }
    }
    return result;
}

/* FixUpExtensionType (used by FetchCommonType) */
static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type) {
#if __PYX_LIMITED_VERSION_HEX > 0x030900B1
    CYTHON_UNUSED_VAR(spec);
    CYTHON_UNUSED_VAR(type);
    CYTHON_UNUSED_VAR(__Pyx__SetItemOnTypeDict);
#else
    const PyType_Slot *slot = spec->slots;
    int changed = 0;
#if !CYTHON_COMPILING_IN_LIMITED_API
    while (slot && slot->slot && slot->slot != Py_tp_members)
        slot++;
    if (slot && slot->slot == Py_tp_members) {
#if !CYTHON_COMPILING_IN_CPYTHON
        const
#endif  // !CYTHON_COMPILING_IN_CPYTHON)
            PyMemberDef *memb = (PyMemberDef*) slot->pfunc;
        while (memb && memb->name) {
            if (memb->name[0] == '_' && memb->name[1] == '_') {
                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);
                    type->tp_vectorcall_offset = memb->offset;
                    changed = 1;
                }
#endif  // CYTHON_METH_FASTCALL
#if !CYTHON_COMPILING_IN_PYPY
                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;
                    int set_item_result = PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr);
                    Py_DECREF(descr);
                    if (unlikely(set_item_result < 0)) {
                        return -1;
                    }
                    changed = 1;
                }
#endif  // !CYTHON_COMPILING_IN_PYPY
            }
            memb++;
        }
    }
#endif  // !CYTHON_COMPILING_IN_LIMITED_API
#if !CYTHON_COMPILING_IN_PYPY
    slot = spec->slots;
    while (slot && slot->slot && slot->slot != Py_tp_getset)
        slot++;
    if (slot && slot->slot == Py_tp_getset) {
        PyGetSetDef *getset = (PyGetSetDef*) slot->pfunc;
        while (getset && getset->name) {
            if (getset->name[0] == '_' && getset->name[1] == '_' && strcmp(getset->name, "__module__") == 0) {
                PyObject *descr = PyDescr_NewGetSet(type, getset);
                if (unlikely(!descr))
                    return -1;
                #if CYTHON_COMPILING_IN_LIMITED_API
                PyObject *pyname = PyUnicode_FromString(getset->name);
                if (unlikely(!pyname)) {
                    Py_DECREF(descr);
                    return -1;
                }
                int set_item_result = __Pyx_SetItemOnTypeDict(type, pyname, descr);
                Py_DECREF(pyname);
                #else
                CYTHON_UNUSED_VAR(__Pyx__SetItemOnTypeDict);
                int set_item_result = PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr);
                #endif
                Py_DECREF(descr);
                if (unlikely(set_item_result < 0)) {
                    return -1;
                }
                changed = 1;
            }
            ++getset;
        }
    }
#else
    CYTHON_UNUSED_VAR(__Pyx__SetItemOnTypeDict);
#endif  // !CYTHON_COMPILING_IN_PYPY
    if (changed)
        PyType_Modified(type);
#endif  // PY_VERSION_HEX > 0x030900B1
    return 0;
}

/* AddModuleRef (used by FetchSharedCythonModule) */
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
  static PyObject *__Pyx_PyImport_AddModuleObjectRef(PyObject *name) {
      PyObject *module_dict = PyImport_GetModuleDict();
      PyObject *m;
      if (PyMapping_GetOptionalItem(module_dict, name, &m) < 0) {
          return NULL;
      }
      if (m != NULL && PyModule_Check(m)) {
          return m;
      }
      Py_XDECREF(m);
      m = PyModule_NewObject(name);
      if (m == NULL)
          return NULL;
      if (PyDict_CheckExact(module_dict)) {
          PyObject *new_m;
          (void)PyDict_SetDefaultRef(module_dict, name, m, &new_m);
          Py_DECREF(m);
          return new_m;
      } else {
           if (PyObject_SetItem(module_dict, name, m) != 0) {
                Py_DECREF(m);
                return NULL;
            }
            return m;
      }
  }
  static PyObject *__Pyx_PyImport_AddModuleRef(const char *name) {
      PyObject *py_name = PyUnicode_FromString(name);
      if (!py_name) return NULL;
      PyObject *module = __Pyx_PyImport_AddModuleObjectRef(py_name);
      Py_DECREF(py_name);
      return module;
  }
#elif __PYX_LIMITED_VERSION_HEX >= 0x030d0000
  #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name)
#else
  static PyObject *__Pyx_PyImport_AddModuleRef(const char *name) {
      PyObject *module = PyImport_AddModule(name);
      Py_XINCREF(module);
      return module;
  }
#endif

/* FetchSharedCythonModule (used by FetchCommonType) */
static PyObject *__Pyx_FetchSharedCythonABIModule(void) {
    return __Pyx_PyImport_AddModuleRef(__PYX_ABI_MODULE_NAME);
}

/* FetchCommonType (used by CommonTypesMetaclass) */
#if __PYX_LIMITED_VERSION_HEX < 0x030C0000
static PyObject* __Pyx_PyType_FromMetaclass(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases) {
    PyObject *result = __Pyx_PyType_FromModuleAndSpec(module, spec, bases);
    if (result && metaclass) {
        PyObject *old_tp = (PyObject*)Py_TYPE(result);
    Py_INCREF((PyObject*)metaclass);
#if __PYX_LIMITED_VERSION_HEX >= 0x03090000
        Py_SET_TYPE(result, metaclass);
#else
        result->ob_type = metaclass;
#endif
        Py_DECREF(old_tp);
    }
    return result;
}
#else
#define __Pyx_PyType_FromMetaclass(me, mo, s, b) PyType_FromMetaclass(me, mo, s, b)
#endif
static int __Pyx_VerifyCachedType(PyObject *cached_type,
                               const char *name,
                               Py_ssize_t expected_basicsize) {
    Py_ssize_t basicsize;
    if (!PyType_Check(cached_type)) {
        PyErr_Format(PyExc_TypeError,
            "Shared Cython type %.200s is not a type object", name);
        return -1;
    }
    if (expected_basicsize == 0) {
        return 0; // size is inherited, nothing useful to check
    }
#if CYTHON_COMPILING_IN_LIMITED_API
    PyObject *py_basicsize;
    py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__");
    if (unlikely(!py_basicsize)) return -1;
    basicsize = PyLong_AsSsize_t(py_basicsize);
    Py_DECREF(py_basicsize);
    py_basicsize = NULL;
    if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) return -1;
#else
    basicsize = ((PyTypeObject*) cached_type)->tp_basicsize;
#endif
    if (basicsize != expected_basicsize) {
        PyErr_Format(PyExc_TypeError,
            "Shared Cython type %.200s has the wrong size, try recompiling",
            name);
        return -1;
    }
    return 0;
}
static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases) {
    PyObject *abi_module = NULL, *cached_type = NULL, *abi_module_dict, *new_cached_type, *py_object_name;
    int get_item_ref_result;
    const char* object_name = strrchr(spec->name, '.');
    object_name = object_name ? object_name+1 : spec->name;
    py_object_name = PyUnicode_FromString(object_name);
    if (!py_object_name) return NULL;
    abi_module = __Pyx_FetchSharedCythonABIModule();
    if (!abi_module) goto done;
    abi_module_dict = PyModule_GetDict(abi_module);
    if (!abi_module_dict) goto done;
    get_item_ref_result = __Pyx_PyDict_GetItemRef(abi_module_dict, py_object_name, &cached_type);
    if (get_item_ref_result == 1) {
        if (__Pyx_VerifyCachedType(
              cached_type,
              object_name,
              spec->basicsize) < 0) {
            goto bad;
        }
        goto done;
    } else if (unlikely(get_item_ref_result == -1)) {
        goto bad;
    }
    cached_type = __Pyx_PyType_FromMetaclass(
        metaclass,
        CYTHON_USE_MODULE_STATE ? module : 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;
    new_cached_type = __Pyx_PyDict_SetDefault(abi_module_dict, py_object_name, cached_type);
    if (unlikely(new_cached_type != cached_type)) {
        if (unlikely(!new_cached_type)) goto bad;
        Py_DECREF(cached_type);
        cached_type = new_cached_type;
        if (__Pyx_VerifyCachedType(
                cached_type,
                object_name,
                spec->basicsize) < 0) {
            goto bad;
        }
        goto done;
    } else {
        Py_DECREF(new_cached_type);
    }
done:
    Py_XDECREF(abi_module);
    Py_DECREF(py_object_name);
    assert(cached_type == NULL || PyType_Check(cached_type));
    return (PyTypeObject *) cached_type;
bad:
    Py_XDECREF(cached_type);
    cached_type = NULL;
    goto done;
}

/* CommonTypesMetaclass (used by CythonFunctionShared) */
static PyObject* __pyx_CommonTypesMetaclass_get_module(CYTHON_UNUSED PyObject *self, CYTHON_UNUSED void* context) {
    return PyUnicode_FromString(__PYX_ABI_MODULE_NAME);
}
#if __PYX_LIMITED_VERSION_HEX < 0x030A0000
static PyObject* __pyx_CommonTypesMetaclass_call(CYTHON_UNUSED PyObject *self, CYTHON_UNUSED PyObject *args, CYTHON_UNUSED PyObject *kwds) {
    PyErr_SetString(PyExc_TypeError, "Cannot instantiate Cython internal types");
    return NULL;
}
static int __pyx_CommonTypesMetaclass_setattr(CYTHON_UNUSED PyObject *self, CYTHON_UNUSED PyObject *attr, CYTHON_UNUSED PyObject *value) {
    PyErr_SetString(PyExc_TypeError, "Cython internal types are immutable");
    return -1;
}
#endif
static PyGetSetDef __pyx_CommonTypesMetaclass_getset[] = {
    {"__module__", __pyx_CommonTypesMetaclass_get_module, NULL, NULL, NULL},
    {0, 0, 0, 0, 0}
};
static PyType_Slot __pyx_CommonTypesMetaclass_slots[] = {
    {Py_tp_getset, (void *)__pyx_CommonTypesMetaclass_getset},
    #if __PYX_LIMITED_VERSION_HEX < 0x030A0000
    {Py_tp_call, (void*)__pyx_CommonTypesMetaclass_call},
    {Py_tp_new, (void*)__pyx_CommonTypesMetaclass_call},
    {Py_tp_setattro, (void*)__pyx_CommonTypesMetaclass_setattr},
    #endif
    {0, 0}
};
static PyType_Spec __pyx_CommonTypesMetaclass_spec = {
    __PYX_TYPE_MODULE_PREFIX "_common_types_metatype",
    0,
    0,
    Py_TPFLAGS_IMMUTABLETYPE |
    Py_TPFLAGS_DISALLOW_INSTANTIATION |
    Py_TPFLAGS_DEFAULT,
    __pyx_CommonTypesMetaclass_slots
};
static int __pyx_CommonTypesMetaclass_init(PyObject *module) {
    __pyx_mstatetype *mstate = __Pyx_PyModule_GetState(module);
    PyObject *bases = PyTuple_Pack(1, &PyType_Type);
    if (unlikely(!bases)) {
        return -1;
    }
    mstate->__pyx_CommonTypesMetaclassType = __Pyx_FetchCommonTypeFromSpec(NULL, module, &__pyx_CommonTypesMetaclass_spec, bases);
    Py_DECREF(bases);
    if (unlikely(mstate->__pyx_CommonTypesMetaclassType == NULL)) {
        return -1;
    }
    return 0;
}

/* CallTypeTraverse (used by CythonFunctionShared) */
#if !CYTHON_USE_TYPE_SPECS || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x03090000)
#else
static int __Pyx_call_type_traverse(PyObject *o, int always_call, visitproc visit, void *arg) {
    #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x03090000
    if (__Pyx_get_runtime_version() < 0x03090000) return 0;
    #endif
    if (!always_call) {
        PyTypeObject *base = __Pyx_PyObject_GetSlot(o, tp_base, PyTypeObject*);
        unsigned long flags = PyType_GetFlags(base);
        if (flags & Py_TPFLAGS_HEAPTYPE) {
            return 0;
        }
    }
    Py_VISIT((PyObject*)Py_TYPE(o));
    return 0;
}
#endif

/* PyMethodNew (used by CythonFunctionShared) */
#if CYTHON_COMPILING_IN_LIMITED_API
static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) {
    PyObject *result;
    CYTHON_UNUSED_VAR(typ);
    if (!self)
        return __Pyx_NewRef(func);
    #if __PYX_LIMITED_VERSION_HEX >= 0x030C0000
    {
        PyObject *args[] = {func, self};
        result = PyObject_Vectorcall(__pyx_mstate_global->__Pyx_CachedMethodType, args, 2, NULL);
    }
    #else
    result = PyObject_CallFunctionObjArgs(__pyx_mstate_global->__Pyx_CachedMethodType, func, self, NULL);
    #endif
    return result;
}
#else
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);
}
#endif

/* PyVectorcallFastCallDict (used by CythonFunctionShared) */
#if CYTHON_METH_FASTCALL && CYTHON_VECTORCALL
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;
    #if CYTHON_AVOID_BORROWED_REFS
    PyObject *pos;
    #else
    Py_ssize_t pos;
    #endif
    size_t j;
    PyObject *key, *value;
    unsigned long keys_are_strings;
    #if !CYTHON_ASSUME_SAFE_SIZE
    Py_ssize_t nkw = PyDict_Size(kw);
    if (unlikely(nkw == -1)) return NULL;
    #else
    Py_ssize_t nkw = PyDict_GET_SIZE(kw);
    #endif
    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 = 0;
    i = 0;
    keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS;
    while (__Pyx_PyDict_NextRef(kw, &pos, &key, &value)) {
        keys_are_strings &=
        #if CYTHON_COMPILING_IN_LIMITED_API
            PyType_GetFlags(Py_TYPE(key));
        #else
            Py_TYPE(key)->tp_flags;
        #endif
        #if !CYTHON_ASSUME_SAFE_MACROS
        if (unlikely(PyTuple_SetItem(kwnames, i, key) < 0)) goto cleanup;
        #else
        PyTuple_SET_ITEM(kwnames, i, key);
        #endif
        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:
    #if CYTHON_AVOID_BORROWED_REFS
    Py_DECREF(pos);
    #endif
    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)
{
    Py_ssize_t kw_size =
        likely(kw == NULL) ?
        0 :
#if !CYTHON_ASSUME_SAFE_SIZE
        PyDict_Size(kw);
#else
        PyDict_GET_SIZE(kw);
#endif
    if (kw_size == 0) {
        return vc(func, args, nargs, NULL);
    }
#if !CYTHON_ASSUME_SAFE_SIZE
    else if (unlikely(kw_size == -1)) {
        return NULL;
    }
#endif
    return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw);
}
#endif

/* CythonFunctionShared (used by CythonFunction) */
#if CYTHON_COMPILING_IN_LIMITED_API
static CYTHON_INLINE int __Pyx__IsSameCyOrCFunctionNoMethod(PyObject *func, void (*cfunc)(void)) {
    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;
}
static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void (*cfunc)(void)) {
    if ((PyObject*)Py_TYPE(func) == __pyx_mstate_global->__Pyx_CachedMethodType) {
        int result;
        PyObject *newFunc = PyObject_GetAttr(func, __pyx_mstate_global->__pyx_n_u_func);
        if (unlikely(!newFunc)) {
            PyErr_Clear(); // It's only an optimization, so don't throw an error
            return 0;
        }
        result = __Pyx__IsSameCyOrCFunctionNoMethod(newFunc, cfunc);
        Py_DECREF(newFunc);
        return result;
    }
    return __Pyx__IsSameCyOrCFunctionNoMethod(func, cfunc);
}
#else
static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void (*cfunc)(void)) {
    if (PyMethod_Check(func)) {
        func = PyMethod_GET_FUNCTION(func);
    }
    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_locked(__pyx_CyFunctionObject *op)
{
    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) {
            op->func_doc = PyUnicode_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc);
            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 PyObject *
__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, void *closure) {
    PyObject *result;
    CYTHON_UNUSED_VAR(closure);
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    result = __Pyx_CyFunction_get_doc_locked(op);
    __Pyx_END_CRITICAL_SECTION();
    return result;
}
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_BEGIN_CRITICAL_SECTION(op);
    __Pyx_Py_XDECREF_SET(op->func_doc, value);
    __Pyx_END_CRITICAL_SECTION();
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_name_locked(__pyx_CyFunctionObject *op)
{
    if (unlikely(op->func_name == NULL)) {
#if CYTHON_COMPILING_IN_LIMITED_API
        op->func_name = PyObject_GetAttrString(op->func, "__name__");
#else
        op->func_name = PyUnicode_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 PyObject *
__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, void *context)
{
    PyObject *result = NULL;
    CYTHON_UNUSED_VAR(context);
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    result = __Pyx_CyFunction_get_name_locked(op);
    __Pyx_END_CRITICAL_SECTION();
    return result;
}
static int
__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, void *context)
{
    CYTHON_UNUSED_VAR(context);
    if (unlikely(value == NULL || !PyUnicode_Check(value))) {
        PyErr_SetString(PyExc_TypeError,
                        "__name__ must be set to a string object");
        return -1;
    }
    Py_INCREF(value);
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    __Pyx_Py_XDECREF_SET(op->func_name, value);
    __Pyx_END_CRITICAL_SECTION();
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, void *context)
{
    CYTHON_UNUSED_VAR(context);
    PyObject *result;
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    Py_INCREF(op->func_qualname);
    result = op->func_qualname;
    __Pyx_END_CRITICAL_SECTION();
    return result;
}
static int
__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, void *context)
{
    CYTHON_UNUSED_VAR(context);
    if (unlikely(value == NULL || !PyUnicode_Check(value))) {
        PyErr_SetString(PyExc_TypeError,
                        "__qualname__ must be set to a string object");
        return -1;
    }
    Py_INCREF(value);
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    __Pyx_Py_XDECREF_SET(op->func_qualname, value);
    __Pyx_END_CRITICAL_SECTION();
    return 0;
}
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000
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;
}
#endif
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_BEGIN_CRITICAL_SECTION(op);
    __Pyx_Py_XDECREF_SET(op->defaults_tuple, value);
    __Pyx_END_CRITICAL_SECTION();
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_defaults_locked(__pyx_CyFunctionObject *op) {
    PyObject* result = op->defaults_tuple;
    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 PyObject *
__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, void *context) {
    PyObject* result = NULL;
    CYTHON_UNUSED_VAR(context);
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    result = __Pyx_CyFunction_get_defaults_locked(op);
    __Pyx_END_CRITICAL_SECTION();
    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_BEGIN_CRITICAL_SECTION(op);
    __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value);
    __Pyx_END_CRITICAL_SECTION();
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_kwdefaults_locked(__pyx_CyFunctionObject *op) {
    PyObject* result = op->defaults_kwdict;
    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 PyObject *
__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, void *context) {
    PyObject* result;
    CYTHON_UNUSED_VAR(context);
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    result = __Pyx_CyFunction_get_kwdefaults_locked(op);
    __Pyx_END_CRITICAL_SECTION();
    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_BEGIN_CRITICAL_SECTION(op);
    __Pyx_Py_XDECREF_SET(op->func_annotations, value);
    __Pyx_END_CRITICAL_SECTION();
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_annotations_locked(__pyx_CyFunctionObject *op) {
    PyObject* result = op->func_annotations;
    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_annotations(__pyx_CyFunctionObject *op, void *context) {
    PyObject *result;
    CYTHON_UNUSED_VAR(context);
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    result = __Pyx_CyFunction_get_annotations_locked(op);
    __Pyx_END_CRITICAL_SECTION();
    return result;
}
static PyObject *
__Pyx_CyFunction_get_is_coroutine_value(__pyx_CyFunctionObject *op) {
    int is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE;
    if (is_coroutine) {
        PyObject *is_coroutine_value, *module, *fromlist, *marker = __pyx_mstate_global->__pyx_n_u_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_mstate_global->__pyx_n_u_asyncio_coroutines, NULL, NULL, fromlist, 0);
        Py_DECREF(fromlist);
        if (unlikely(!module)) goto ignore;
        is_coroutine_value = __Pyx_PyObject_GetAttrStr(module, marker);
        Py_DECREF(module);
        if (likely(is_coroutine_value)) {
            return is_coroutine_value;
        }
ignore:
        PyErr_Clear();
    }
    return __Pyx_PyBool_FromLong(is_coroutine);
}
static PyObject *
__Pyx_CyFunction_get_is_coroutine(__pyx_CyFunctionObject *op, void *context) {
    PyObject *result;
    CYTHON_UNUSED_VAR(context);
    if (op->func_is_coroutine) {
        return __Pyx_NewRef(op->func_is_coroutine);
    }
    result = __Pyx_CyFunction_get_is_coroutine_value(op);
    if (unlikely(!result))
        return NULL;
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    if (op->func_is_coroutine) {
        Py_DECREF(result);
        result = __Pyx_NewRef(op->func_is_coroutine);
    } else {
        op->func_is_coroutine = __Pyx_NewRef(result);
    }
    __Pyx_END_CRITICAL_SECTION();
    return result;
}
static void __Pyx_CyFunction_raise_argument_count_error(__pyx_CyFunctionObject *func, const char* message, Py_ssize_t size) {
#if CYTHON_COMPILING_IN_LIMITED_API
    PyObject *py_name = __Pyx_CyFunction_get_name(func, NULL);
    if (!py_name) return;
    PyErr_Format(PyExc_TypeError,
        "%.200S() %s (%" CYTHON_FORMAT_SSIZE_T "d given)",
        py_name, message, size);
    Py_DECREF(py_name);
#else
    const char* name = ((PyCFunctionObject*)func)->m_ml->ml_name;
    PyErr_Format(PyExc_TypeError,
        "%.200s() %s (%" CYTHON_FORMAT_SSIZE_T "d given)",
        name, message, size);
#endif
}
static void __Pyx_CyFunction_raise_type_error(__pyx_CyFunctionObject *func, const char* message) {
#if CYTHON_COMPILING_IN_LIMITED_API
    PyObject *py_name = __Pyx_CyFunction_get_name(func, NULL);
    if (!py_name) return;
    PyErr_Format(PyExc_TypeError,
        "%.200S() %s",
        py_name, message);
    Py_DECREF(py_name);
#else
    const char* name = ((PyCFunctionObject*)func)->m_ml->ml_name;
    PyErr_Format(PyExc_TypeError,
        "%.200s() %s",
        name, message);
#endif
}
#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[] = {
    {"func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
    {"__doc__",  (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
    {"func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
    {"__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
    {"__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0},
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000
    {"func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)PyObject_GenericSetDict, 0, 0},
    {"__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)PyObject_GenericSetDict, 0, 0},
#else
    {"func_dict", (getter)PyObject_GenericGetDict, (setter)PyObject_GenericSetDict, 0, 0},
    {"__dict__", (getter)PyObject_GenericGetDict, (setter)PyObject_GenericSetDict, 0, 0},
#endif
    {"func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
    {"__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
    {"func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
    {"__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
    {"func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
    {"__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
    {"func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
    {"__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
    {"__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0},
    {"__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0},
    {"_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
    {"__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0},
#endif
#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API
    {"__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict), READONLY, 0},
#endif
#if CYTHON_METH_FASTCALL
#if CYTHON_COMPILING_IN_LIMITED_API
    {"__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall), READONLY, 0},
#else
    {"__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0},
#endif
#if CYTHON_COMPILING_IN_LIMITED_API
    {"__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist), READONLY, 0},
#else
    {"__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)
{
    PyObject *result = NULL;
    CYTHON_UNUSED_VAR(args);
    __Pyx_BEGIN_CRITICAL_SECTION(m);
    Py_INCREF(m->func_qualname);
    result = m->func_qualname;
    __Pyx_END_CRITICAL_SECTION();
    return result;
}
static PyMethodDef __pyx_CyFunction_methods[] = {
    {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0},
    {0, 0, 0, 0}
};
#if 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
#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API
    op->func_dict = NULL;
#endif
    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 = 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
#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API
    Py_CLEAR(m->func_dict);
#elif PY_VERSION_HEX < 0x030d0000
    _PyObject_ClearManagedDict((PyObject*)m);
#else
    PyObject_ClearManagedDict((PyObject*)m);
#endif
    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);
    Py_CLEAR(m->defaults);
    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)
{
    {
        int e = __Pyx_call_type_traverse((PyObject*)m, 1, visit, arg);
        if (e) return e;
    }
    Py_VISIT(m->func_closure);
#if CYTHON_COMPILING_IN_LIMITED_API
    Py_VISIT(m->func);
#else
    Py_VISIT(((PyCFunctionObject*)m)->m_module);
#endif
#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API
    Py_VISIT(m->func_dict);
#else
    {
        int e =
#if PY_VERSION_HEX < 0x030d0000
            _PyObject_VisitManagedDict
#else
            PyObject_VisitManagedDict
#endif
                ((PyObject*)m, visit, arg);
        if (e != 0) return e;
    }
#endif
    __Pyx_VISIT_CONST(m->func_name);
    __Pyx_VISIT_CONST(m->func_qualname);
    Py_VISIT(m->func_doc);
    Py_VISIT(m->func_globals);
    __Pyx_VISIT_CONST(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);
    Py_VISIT(m->defaults);
    return 0;
}
static PyObject*
__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op)
{
    PyObject *repr;
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    repr = PyUnicode_FromFormat("<cyfunction %U at %p>",
                                op->func_qualname, (void *)op);
    __Pyx_END_CRITICAL_SECTION();
    return repr;
}
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;
    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(*)(void))meth)(self, arg, kw);
    case METH_NOARGS:
        if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
#if CYTHON_ASSUME_SAFE_SIZE
            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);
            __Pyx_CyFunction_raise_argument_count_error(
                (__pyx_CyFunctionObject*)func,
                "takes no arguments", size);
            return NULL;
        }
        break;
    case METH_O:
        if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
#if CYTHON_ASSUME_SAFE_SIZE
            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;
            }
            __Pyx_CyFunction_raise_argument_count_error(
                (__pyx_CyFunctionObject*)func,
                "takes exactly one argument", size);
            return NULL;
        }
        break;
    default:
        PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction");
        return NULL;
    }
    __Pyx_CyFunction_raise_type_error(
        (__pyx_CyFunctionObject*)func, "takes no keyword arguments");
    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 && CYTHON_VECTORCALL
     __pyx_vectorcallfunc vc = __Pyx_CyFunction_func_vectorcall(cyfunc);
    if (vc) {
#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE
        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_SIZE
        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);
            PyErr_Format(PyExc_TypeError,
                         "unbound method %.200S() needs an argument",
                         cyfunc->func_qualname);
            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 && CYTHON_VECTORCALL
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)) {
            __Pyx_CyFunction_raise_type_error(
                cyfunc, "needs an argument");
            return -1;
        }
        ret = 1;
    }
    if (unlikely(kwnames) && unlikely(__Pyx_PyTuple_GET_SIZE(kwnames))) {
        __Pyx_CyFunction_raise_type_error(
            cyfunc, "takes no keyword arguments");
        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;
    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
    PyObject *self;
#if CYTHON_COMPILING_IN_LIMITED_API
    PyCFunction meth = PyCFunction_GetFunction(cyfunc->func);
    if (unlikely(!meth)) return NULL;
#else
    PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth;
#endif
    switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) {
    case 1:
        self = args[0];
        args += 1;
        nargs -= 1;
        break;
    case 0:
#if CYTHON_COMPILING_IN_LIMITED_API
        self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func);
        if (unlikely(!self) && PyErr_Occurred()) return NULL;
#else
        self = ((PyCFunctionObject*)cyfunc)->m_self;
#endif
        break;
    default:
        return NULL;
    }
    if (unlikely(nargs != 0)) {
        __Pyx_CyFunction_raise_argument_count_error(
            cyfunc, "takes no arguments", nargs);
        return NULL;
    }
    return 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;
    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
    PyObject *self;
#if CYTHON_COMPILING_IN_LIMITED_API
    PyCFunction meth = PyCFunction_GetFunction(cyfunc->func);
    if (unlikely(!meth)) return NULL;
#else
    PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth;
#endif
    switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) {
    case 1:
        self = args[0];
        args += 1;
        nargs -= 1;
        break;
    case 0:
#if CYTHON_COMPILING_IN_LIMITED_API
        self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func);
        if (unlikely(!self) && PyErr_Occurred()) return NULL;
#else
        self = ((PyCFunctionObject*)cyfunc)->m_self;
#endif
        break;
    default:
        return NULL;
    }
    if (unlikely(nargs != 1)) {
        __Pyx_CyFunction_raise_argument_count_error(
            cyfunc, "takes exactly one argument", nargs);
        return NULL;
    }
    return 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;
    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
    PyObject *self;
#if CYTHON_COMPILING_IN_LIMITED_API
    PyCFunction meth = PyCFunction_GetFunction(cyfunc->func);
    if (unlikely(!meth)) return NULL;
#else
    PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth;
#endif
    switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) {
    case 1:
        self = args[0];
        args += 1;
        nargs -= 1;
        break;
    case 0:
#if CYTHON_COMPILING_IN_LIMITED_API
        self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func);
        if (unlikely(!self) && PyErr_Occurred()) return NULL;
#else
        self = ((PyCFunctionObject*)cyfunc)->m_self;
#endif
        break;
    default:
        return NULL;
    }
    return ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))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;
    PyTypeObject *cls = (PyTypeObject *) __Pyx_CyFunction_GetClassObj(cyfunc);
    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
    PyObject *self;
#if CYTHON_COMPILING_IN_LIMITED_API
    PyCFunction meth = PyCFunction_GetFunction(cyfunc->func);
    if (unlikely(!meth)) return NULL;
#else
    PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth;
#endif
    switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) {
    case 1:
        self = args[0];
        args += 1;
        nargs -= 1;
        break;
    case 0:
#if CYTHON_COMPILING_IN_LIMITED_API
        self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func);
        if (unlikely(!self) && PyErr_Occurred()) return NULL;
#else
        self = ((PyCFunctionObject*)cyfunc)->m_self;
#endif
        break;
    default:
        return NULL;
    }
    #if PY_VERSION_HEX < 0x030e00A6
    size_t nargs_value = (size_t) nargs;
    #else
    Py_ssize_t nargs_value = nargs;
    #endif
    return ((__Pyx_PyCMethod)(void(*)(void))meth)(self, cls, args, nargs_value, kwnames);
}
#endif
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 CYTHON_METH_FASTCALL
#if defined(Py_TPFLAGS_HAVE_VECTORCALL)
    Py_TPFLAGS_HAVE_VECTORCALL |
#elif defined(_Py_TPFLAGS_HAVE_VECTORCALL)
    _Py_TPFLAGS_HAVE_VECTORCALL |
#endif
#endif // CYTHON_METH_FASTCALL
#if PY_VERSION_HEX >= 0x030C0000 && !CYTHON_COMPILING_IN_LIMITED_API
    Py_TPFLAGS_MANAGED_DICT |
#endif
    Py_TPFLAGS_IMMUTABLETYPE | Py_TPFLAGS_DISALLOW_INSTANTIATION |
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE,
    __pyx_CyFunctionType_slots
};
static int __pyx_CyFunction_init(PyObject *module) {
    __pyx_mstatetype *mstate = __Pyx_PyModule_GetState(module);
    mstate->__pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec(
        mstate->__pyx_CommonTypesMetaclassType, module, &__pyx_CyFunctionType_spec, NULL);
    if (unlikely(mstate->__pyx_CyFunctionType == NULL)) {
        return -1;
    }
    return 0;
}
static CYTHON_INLINE PyObject *__Pyx_CyFunction_InitDefaults(PyObject *func, PyTypeObject *defaults_type) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->defaults = PyObject_CallObject((PyObject*)defaults_type, NULL); // _PyObject_New(defaults_type);
    if (unlikely(!m->defaults))
        return NULL;
    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_mstate_global->__pyx_CyFunctionType),
        ml, flags, qualname, closure, module, globals, code
    );
    if (likely(op)) {
        PyObject_GC_Track(op);
    }
    return op;
}

/* PyObjectGetMethod (used by PyObjectCallMethod1) */
#if !(CYTHON_VECTORCALL && (__PYX_LIMITED_VERSION_HEX >= 0x030C0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x03090000)))
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))
#else
        #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
#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_GetFullyQualifiedName(tp);
    PyErr_Format(PyExc_AttributeError,
                 "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'",
                 type_name, name);
    __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;
}
#endif

/* PyObjectCallMethod1 (used by StringJoin) */
#if !(CYTHON_VECTORCALL && (__PYX_LIMITED_VERSION_HEX >= 0x030C0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x03090000)))
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 >= 0x030C0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x03090000))
    PyObject *args[2] = {obj, arg};
    (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_LIMITED_API && PY_VERSION_HEX >= 0x030e0000 || defined(PyBytes_Join)
    return PyBytes_Join(sep, values);
#elif CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000 || defined(_PyBytes_Join)
    return _PyBytes_Join(sep, values);
#else
    return __Pyx_PyObject_CallMethod1(sep, __pyx_mstate_global->__pyx_n_u_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_mstate_global->__pyx_n_u_pop, py_ix);
}
#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE
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, PyLong_FromSsize_t(ix));
    } else {
        return __Pyx__PyObject_PopIndex(L, py_ix);
    }
}
#endif

/* PyObjectCallNoArg (used by PyObjectCallMethod0) */
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 (used by dict_iter) */
static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) {
#if CYTHON_VECTORCALL && (__PYX_LIMITED_VERSION_HEX >= 0x030C0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x03090000))
    PyObject *args[1] = {obj};
    (void) __Pyx_PyObject_CallOneArg;
    (void) __Pyx_PyObject_CallNoArg;
    return PyObject_VectorcallMethod(method_name, args, 1 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL);
#else
    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;
#endif
}

/* UnpackTupleError (used by UnpackTuple2) */
static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) {
    if (t == Py_None) {
      __Pyx_RaiseNoneNotIterableError();
    } else {
      Py_ssize_t size = __Pyx_PyTuple_GET_SIZE(t);
 #if !CYTHON_ASSUME_SAFE_SIZE
      if (unlikely(size < 0)) return;
 #endif
      if (size < index) {
        __Pyx_RaiseNeedMoreValuesError(size);
      } else {
        __Pyx_RaiseTooManyValuesError(index);
      }
    }
}

/* UnpackTuple2 (used by dict_iter) */
static CYTHON_INLINE int __Pyx_unpack_tuple2(
        PyObject* tuple, PyObject** value1, PyObject** value2, int is_tuple, int has_known_size, int decref_tuple) {
    if (likely(is_tuple || PyTuple_Check(tuple))) {
        Py_ssize_t size;
        if (has_known_size) {
            return __Pyx_unpack_tuple2_exact(tuple, value1, value2, decref_tuple);
        }
        size = __Pyx_PyTuple_GET_SIZE(tuple);
        if (likely(size == 2)) {
            return __Pyx_unpack_tuple2_exact(tuple, value1, value2, decref_tuple);
        }
        if (size >= 0) {
            __Pyx_UnpackTupleError(tuple, 2);
        }
        return -1;
    } else {
        return __Pyx_unpack_tuple2_generic(tuple, value1, value2, has_known_size, decref_tuple);
    }
}
static CYTHON_INLINE int __Pyx_unpack_tuple2_exact(
        PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2, int decref_tuple) {
    PyObject *value1 = NULL, *value2 = NULL;
#if CYTHON_AVOID_BORROWED_REFS || !CYTHON_ASSUME_SAFE_MACROS
    value1 = __Pyx_PySequence_ITEM(tuple, 0);  if (unlikely(!value1)) goto bad;
    value2 = __Pyx_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_AVOID_BORROWED_REFS || !CYTHON_ASSUME_SAFE_MACROS
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
#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;
#else
        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);
}
#if !CYTHON_AVOID_BORROWED_REFS
static CYTHON_INLINE int __Pyx_dict_iter_next_source_is_dict(
        PyObject* iter_obj, CYTHON_NCP_UNUSED Py_ssize_t orig_length, CYTHON_NCP_UNUSED Py_ssize_t* ppos,
        PyObject** pkey, PyObject** pvalue, PyObject** pitem) {
    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);
        #if CYTHON_ASSUME_SAFE_MACROS
        PyTuple_SET_ITEM(tuple, 0, key);
        PyTuple_SET_ITEM(tuple, 1, value);
        #else
        if (unlikely(PyTuple_SetItem(tuple, 0, key) < 0)) {
            Py_DECREF(value);
            Py_DECREF(tuple);
            return -1;
        }
        if (unlikely(PyTuple_SetItem(tuple, 1, value) < 0)) {
            Py_DECREF(tuple);
            return -1;
        }
        #endif
        *pitem = tuple;
    } else {
        if (pkey) {
            Py_INCREF(key);
            *pkey = key;
        }
        if (pvalue) {
            Py_INCREF(value);
            *pvalue = value;
        }
    }
    return 1;
}
#endif
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_AVOID_BORROWED_REFS
    if (source_is_dict) {
        int result;
#if PY_VERSION_HEX >= 0x030d0000 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_BEGIN_CRITICAL_SECTION(iter_obj);
#endif
        result = __Pyx_dict_iter_next_source_is_dict(iter_obj, orig_length, ppos, pkey, pvalue, pitem);
#if PY_VERSION_HEX >= 0x030d0000 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_END_CRITICAL_SECTION();
#endif
        return result;
    } else if (PyTuple_CheckExact(iter_obj)) {
        Py_ssize_t pos = *ppos;
        Py_ssize_t tuple_size = __Pyx_PyTuple_GET_SIZE(iter_obj);
        #if !CYTHON_ASSUME_SAFE_SIZE
        if (unlikely(tuple_size < 0)) return -1;
        #endif
        if (unlikely(pos >= tuple_size)) return 0;
        *ppos = pos + 1;
        #if CYTHON_ASSUME_SAFE_MACROS
        next_item = PyTuple_GET_ITEM(iter_obj, pos);
        #else
        next_item = PyTuple_GetItem(iter_obj, pos);
        if (unlikely(!next_item)) return -1;
        #endif
        Py_INCREF(next_item);
    } else if (PyList_CheckExact(iter_obj)) {
        Py_ssize_t pos = *ppos;
        Py_ssize_t list_size = __Pyx_PyList_GET_SIZE(iter_obj);
        #if !CYTHON_ASSUME_SAFE_SIZE
        if (unlikely(list_size < 0)) return -1;
        #endif
        if (unlikely(pos >= list_size)) return 0;
        *ppos = pos + 1;
        next_item = __Pyx_PyList_GetItemRef(iter_obj, pos);
        if (unlikely(!next_item)) return -1;
    } 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, 1);
    }
    if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) {
        __Pyx_TypeName index_type_name = __Pyx_PyType_GetFullyQualifiedName(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_mstate_global->__pyx_n_u_class_getitem);
        if (!meth) {
            PyErr_Clear();
        } else {
            PyObject *result = __Pyx_PyObject_CallOneArg(meth, key);
            Py_DECREF(meth);
            return result;
        }
    }
    obj_type_name = __Pyx_PyType_GetFullyQualifiedName(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, CYTHON_UNUSED int wraparound) {
    __Pyx_TypeName obj_type_name;
#if CYTHON_USE_TYPE_SLOTS
    PyMappingMethods* mp = Py_TYPE(obj)->tp_as_mapping;
    if (likely(mp && mp->mp_ass_subscript))
#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 = PyLong_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 = PyLong_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_GetFullyQualifiedName(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;
}

/* PyLongBinop */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_Fallback___Pyx_PyLong_MultiplyCObj(PyObject *op1, PyObject *op2, int inplace) {
    return (inplace ? PyNumber_InPlaceMultiply : PyNumber_Multiply)(op1, op2);
}
#if CYTHON_USE_PYLONG_INTERNALS
static PyObject* __Pyx_Unpacked___Pyx_PyLong_MultiplyCObj(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) {
    CYTHON_MAYBE_UNUSED_VAR(inplace);
    CYTHON_UNUSED_VAR(zerodivision_check);
    const long a = intval;
    long b;
    const PY_LONG_LONG lla = intval;
    PY_LONG_LONG llb;
    if (unlikely(__Pyx_PyLong_IsZero(op2))) {
        return __Pyx_NewRef(op2);
    }
    const int is_positive = __Pyx_PyLong_IsPos(op2);
    const digit* digits = __Pyx_PyLong_Digits(op2);
    const Py_ssize_t size = __Pyx_PyLong_DigitCount(op2);
    if (likely(size == 1)) {
        b = (long) digits[0];
        if (!is_positive) b *= -1;
    } else {
        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]));
                    if (!is_positive) b *= -1;
                    goto calculate_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]));
                    if (!is_positive) llb *= -1;
                    goto calculate_long_long;
                }
                break;
            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]));
                    if (!is_positive) b *= -1;
                    goto calculate_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]));
                    if (!is_positive) llb *= -1;
                    goto calculate_long_long;
                }
                break;
            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]));
                    if (!is_positive) b *= -1;
                    goto calculate_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]));
                    if (!is_positive) llb *= -1;
                    goto calculate_long_long;
                }
                break;
        }
        return PyLong_Type.tp_as_number->nb_multiply(op1, op2);
    }
    calculate_long:
        CYTHON_UNUSED_VAR(a);
        CYTHON_UNUSED_VAR(b);
        llb = b;
        goto calculate_long_long;
    calculate_long_long:
        {
            PY_LONG_LONG llx;
            llx = lla * llb;
            return PyLong_FromLongLong(llx);
        }
    
}
#endif
static PyObject* __Pyx_Float___Pyx_PyLong_MultiplyCObj(PyObject *float_val, long intval, int zerodivision_check) {
    CYTHON_UNUSED_VAR(zerodivision_check);
    const long a = intval;
    double b = __Pyx_PyFloat_AS_DOUBLE(float_val);
        double result;
        
        result = ((double)a) * (double)b;
        return PyFloat_FromDouble(result);
}
static CYTHON_INLINE PyObject* __Pyx_PyLong_MultiplyCObj(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) {
    CYTHON_MAYBE_UNUSED_VAR(intval);
    CYTHON_UNUSED_VAR(zerodivision_check);
    #if CYTHON_USE_PYLONG_INTERNALS
    if (likely(PyLong_CheckExact(op2))) {
        return __Pyx_Unpacked___Pyx_PyLong_MultiplyCObj(op1, op2, intval, inplace, zerodivision_check);
    }
    #endif
    if (PyFloat_CheckExact(op2)) {
        return __Pyx_Float___Pyx_PyLong_MultiplyCObj(op2, intval, zerodivision_check);
    }
    return __Pyx_Fallback___Pyx_PyLong_MultiplyCObj(op1, op2, inplace);
}
#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, CYTHON_UNUSED int wraparound) {
    __Pyx_TypeName obj_type_name;
#if CYTHON_USE_TYPE_SLOTS
    PyMappingMethods* mp = Py_TYPE(obj)->tp_as_mapping;
    if (likely(mp && mp->mp_subscript))
#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 = PyLong_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 = PyLong_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_GetFullyQualifiedName(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_mstate_global->__pyx_n_u_append, x);
        if (unlikely(!retval))
            return -1;
        Py_DECREF(retval);
    }
    return 0;
}

/* GetAttr */
static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
#if CYTHON_USE_TYPE_SLOTS
    if (likely(PyUnicode_Check(n)))
        return __Pyx_PyObject_GetAttrStr(o, n);
#endif
    return PyObject_GetAttr(o, n);
}

/* AllocateExtensionType */
static PyObject *__Pyx_AllocateExtensionType(PyTypeObject *t, int is_final) {
    if (is_final || likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
        allocfunc alloc_func = __Pyx_PyType_GetSlot(t, tp_alloc, allocfunc);
        return alloc_func(t, 0);
    } else {
        newfunc tp_new = __Pyx_PyType_TryGetSlot(&PyBaseObject_Type, tp_new, newfunc);
    #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000
        if (!tp_new) {
            PyObject *new_str = PyUnicode_FromString("__new__");
            if (likely(new_str)) {
                PyObject *o = PyObject_CallMethodObjArgs((PyObject *)&PyBaseObject_Type, new_str, t, NULL);
                Py_DECREF(new_str);
                return o;
            } else
                return NULL;
        } else
    #endif
        return tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
    }
}

/* FunctionExport */
static int __Pyx_ExportFunction(PyObject *api_dict, const char *name, void (*f)(void), const char *sig) {
    PyObject *cobj;
    union {
        void (*fp)(void);
        void *p;
    } tmp;
    tmp.fp = f;
    cobj = PyCapsule_New(tmp.p, sig, 0);
    if (!cobj)
        goto bad;
    if (PyDict_SetItemString(api_dict, name, cobj) < 0)
        goto bad;
    Py_DECREF(cobj);
    return 0;
bad:
    Py_XDECREF(cobj);
    return -1;
}

/* GetApiDict */
static PyObject *__Pyx_ApiExport_GetApiDict(void) {
    PyObject *d;
    if (__Pyx_PyDict_GetItemRef(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_pyx_capi, &d) == -1)
        return NULL;
    if (!d) {
        d = PyDict_New();
        if (!d)
            goto bad;
        if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_pyx_capi, d) < 0)
            goto bad;
    }
    return d;
bad:
    Py_XDECREF(d);
    return NULL;
}

/* ValidateBasesTuple (used by PyType_Ready) */
#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_SIZE
    n = PyTuple_GET_SIZE(bases);
#else
    n = PyTuple_Size(bases);
    if (unlikely(n < 0)) return -1;
#endif
    for (i = 1; i < n; i++)
    {
        PyTypeObject *b;
#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
        b = (PyTypeObject*) b0;
        if (!__Pyx_PyType_HasFeature(b, Py_TPFLAGS_HEAPTYPE))
        {
            __Pyx_TypeName b_name = __Pyx_PyType_GetFullyQualifiedName(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
            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_GetFullyQualifiedName(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
              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 */
CYTHON_UNUSED static int __Pyx_PyType_HasMultipleInheritance(PyTypeObject *t) {
    while (t) {
        PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*);
        if (bases) {
            return 1;
        }
        t = __Pyx_PyType_GetSlot(t, tp_base, PyTypeObject*);
    }
    return 0;
}
static int __Pyx_PyType_Ready(PyTypeObject *t) {
#if CYTHON_USE_TYPE_SPECS || !CYTHON_COMPILING_IN_CPYTHON || 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;
    if (!__Pyx_PyType_HasMultipleInheritance(t)) {
        return PyType_Ready(t);
    }
    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 !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 (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM+0 >= 0x07030400) &&\
                !CYTHON_COMPILING_IN_GRAAL
        gc = PyImport_GetModule(__pyx_mstate_global->__pyx_kp_u_gc);
        #endif
        if (unlikely(!gc)) gc = PyImport_Import(__pyx_mstate_global->__pyx_kp_u_gc);
        if (unlikely(!gc)) return -1;
        py_status = __Pyx_PyObject_CallMethod0(gc, __pyx_mstate_global->__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_mstate_global->__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 !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_mstate_global->__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
}

/* 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_mstate_global->__pyx_n_u_pyx_vtable, ob) < 0))
#else
    if (unlikely(PyDict_SetItem(type->tp_dict, __pyx_mstate_global->__pyx_n_u_pyx_vtable, ob) < 0))
#endif
        goto bad;
    Py_DECREF(ob);
    return 0;
bad:
    Py_XDECREF(ob);
    return -1;
}

/* GetVTable (used by MergeVTables) */
static void* __Pyx_GetVtable(PyTypeObject *type) {
    void* ptr;
#if CYTHON_COMPILING_IN_LIMITED_API
    PyObject *ob = PyObject_GetAttr((PyObject *)type, __pyx_mstate_global->__pyx_n_u_pyx_vtable);
#else
    PyObject *ob = PyObject_GetItem(type->tp_dict, __pyx_mstate_global->__pyx_n_u_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 */
static int __Pyx_MergeVtables(PyTypeObject *type) {
    int i=0;
    Py_ssize_t size;
    void** base_vtables;
    __Pyx_TypeName tp_base_name = NULL;
    __Pyx_TypeName base_name = NULL;
    void* unknown = (void*)-1;
    PyObject* bases = __Pyx_PyType_GetSlot(type, tp_bases, PyObject*);
    int base_depth = 0;
    {
        PyTypeObject* base = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*);
        while (base) {
            base_depth += 1;
            base = __Pyx_PyType_GetSlot(base, tp_base, PyTypeObject*);
        }
    }
    base_vtables = (void**) PyMem_Malloc(sizeof(void*) * (size_t)(base_depth + 1));
    base_vtables[0] = unknown;
#if CYTHON_COMPILING_IN_LIMITED_API
    size = PyTuple_Size(bases);
    if (size < 0) goto other_failure;
#else
    size = PyTuple_GET_SIZE(bases);
#endif
    for (i = 1; i < size; i++) {
        PyObject *basei;
        void* base_vtable;
#if CYTHON_AVOID_BORROWED_REFS
        basei = PySequence_GetItem(bases, i);
        if (unlikely(!basei)) goto other_failure;
#elif !CYTHON_ASSUME_SAFE_MACROS
        basei = PyTuple_GetItem(bases, i);
        if (unlikely(!basei)) goto other_failure;
#else
        basei = PyTuple_GET_ITEM(bases, i);
#endif
        base_vtable = __Pyx_GetVtable((PyTypeObject*)basei);
#if CYTHON_AVOID_BORROWED_REFS
        Py_DECREF(basei);
#endif
        if (base_vtable != NULL) {
            int j;
            PyTypeObject* base = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*);
            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 = __Pyx_PyType_GetSlot(base, tp_base, PyTypeObject*);
            }
        }
    }
    PyErr_Clear();
    PyMem_Free(base_vtables);
    return 0;
bad:
    {
        PyTypeObject* basei = NULL;
        PyTypeObject* tp_base = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*);
        tp_base_name = __Pyx_PyType_GetFullyQualifiedName(tp_base);
#if CYTHON_AVOID_BORROWED_REFS
        basei = (PyTypeObject*)PySequence_GetItem(bases, i);
        if (unlikely(!basei)) goto really_bad;
#elif !CYTHON_ASSUME_SAFE_MACROS
        basei = (PyTypeObject*)PyTuple_GetItem(bases, i);
        if (unlikely(!basei)) goto really_bad;
#else
        basei = (PyTypeObject*)PyTuple_GET_ITEM(bases, i);
#endif
        base_name = __Pyx_PyType_GetFullyQualifiedName(basei);
#if CYTHON_AVOID_BORROWED_REFS
        Py_DECREF(basei);
#endif
    }
    PyErr_Format(PyExc_TypeError,
        "multiple bases have vtable conflict: '" __Pyx_FMT_TYPENAME "' and '" __Pyx_FMT_TYPENAME "'", tp_base_name, base_name);
#if CYTHON_AVOID_BORROWED_REFS || !CYTHON_ASSUME_SAFE_MACROS
really_bad: // bad has failed!
#endif
    __Pyx_DECREF_TypeName(tp_base_name);
    __Pyx_DECREF_TypeName(base_name);
#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_AVOID_BORROWED_REFS || !CYTHON_ASSUME_SAFE_MACROS
other_failure:
#endif
    PyMem_Free(base_vtables);
    return -1;
}

/* 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_mstate_global->__pyx_n_u_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;
}

/* ListPack */
static PyObject *__Pyx_PyList_Pack(Py_ssize_t n, ...) {
    va_list va;
    PyObject *l = PyList_New(n);
    va_start(va, n);
    if (unlikely(!l)) goto end;
    for (Py_ssize_t i=0; i<n; ++i) {
        PyObject *arg = va_arg(va, PyObject*);
        Py_INCREF(arg);
        if (__Pyx_PyList_SET_ITEM(l, i, arg) != (0)) {
            Py_CLEAR(l);
            goto end;
        }
    }
    end:
    va_end(va);
    return l;
}

/* Py3UpdateBases */
static PyObject*
__Pyx_PEP560_update_bases(PyObject *bases)
{
    Py_ssize_t i, j, size_bases;
    PyObject *base = NULL, *meth, *new_base, *result, *new_bases = NULL;
#if CYTHON_ASSUME_SAFE_SIZE
    size_bases = PyTuple_GET_SIZE(bases);
#else
    size_bases = PyTuple_Size(bases);
    if (size_bases < 0) return NULL;
#endif
    for (i = 0; i < size_bases; i++) {
#if CYTHON_AVOID_BORROWED_REFS
        Py_CLEAR(base);
#endif
#if CYTHON_ASSUME_SAFE_MACROS
        base = PyTuple_GET_ITEM(bases, i);
#else
        base = PyTuple_GetItem(bases, i);
        if (!base) goto error;
#endif
#if CYTHON_AVOID_BORROWED_REFS
        Py_INCREF(base);
#endif
        if (PyType_Check(base)) {
            if (new_bases) {
                if (PyList_Append(new_bases, base) < 0) {
                    goto error;
                }
            }
            continue;
        }
        meth = __Pyx_PyObject_GetAttrStrNoError(base, __pyx_mstate_global->__pyx_n_u_mro_entries);
        if (!meth && PyErr_Occurred()) {
            goto error;
        }
        if (!meth) {
            if (new_bases) {
                if (PyList_Append(new_bases, base) < 0) {
                    goto error;
                }
            }
            continue;
        }
        new_base = __Pyx_PyObject_CallOneArg(meth, bases);
        Py_DECREF(meth);
        if (!new_base) {
            goto error;
        }
        if (!PyTuple_Check(new_base)) {
            PyErr_SetString(PyExc_TypeError,
                            "__mro_entries__ must return a tuple");
            Py_DECREF(new_base);
            goto error;
        }
        if (!new_bases) {
            if (!(new_bases = PyList_New(i))) {
                goto error;
            }
            for (j = 0; j < i; j++) {
                PyObject *base_from_list;
#if CYTHON_ASSUME_SAFE_MACROS
                base_from_list = PyTuple_GET_ITEM(bases, j);
                PyList_SET_ITEM(new_bases, j, base_from_list);
                Py_INCREF(base_from_list);
#else
                base_from_list = PyTuple_GetItem(bases, j);
                if (!base_from_list) goto error;
                Py_INCREF(base_from_list);
                if (PyList_SetItem(new_bases, j, base_from_list) < 0) goto error;
#endif
            }
        }
#if CYTHON_ASSUME_SAFE_SIZE
        j = PyList_GET_SIZE(new_bases);
#else
        j = PyList_Size(new_bases);
        if (j < 0) goto error;
#endif
        if (PyList_SetSlice(new_bases, j, j, new_base) < 0) {
            goto error;
        }
        Py_DECREF(new_base);
    }
    if (!new_bases) {
        Py_INCREF(bases);
        return bases;
    }
    result = PyList_AsTuple(new_bases);
    Py_DECREF(new_bases);
#if CYTHON_AVOID_BORROWED_REFS
    Py_XDECREF(base);
#endif
    return result;
error:
    Py_XDECREF(new_bases);
#if CYTHON_AVOID_BORROWED_REFS
    Py_XDECREF(base);
#endif
    return NULL;
}

/* CalculateMetaclass */
static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) {
    Py_ssize_t i, nbases;
#if CYTHON_ASSUME_SAFE_SIZE
    nbases = PyTuple_GET_SIZE(bases);
#else
    nbases = PyTuple_Size(bases);
    if (nbases < 0) return NULL;
#endif
    for (i=0; i < nbases; i++) {
        PyTypeObject *tmptype;
#if CYTHON_ASSUME_SAFE_MACROS
        PyObject *tmp = PyTuple_GET_ITEM(bases, i);
#else
        PyObject *tmp = PyTuple_GetItem(bases, i);
        if (!tmp) return NULL;
#endif
        tmptype = Py_TYPE(tmp);
        if (!metaclass) {
            metaclass = tmptype;
            continue;
        }
        if (PyType_IsSubtype(metaclass, tmptype))
            continue;
        if (PyType_IsSubtype(tmptype, metaclass)) {
            metaclass = tmptype;
            continue;
        }
        PyErr_SetString(PyExc_TypeError,
                        "metaclass conflict: "
                        "the metaclass of a derived class "
                        "must be a (non-strict) subclass "
                        "of the metaclasses of all its bases");
        return NULL;
    }
    if (!metaclass) {
        metaclass = &PyType_Type;
    }
    Py_INCREF((PyObject*) metaclass);
    return (PyObject*) metaclass;
}

/* Py3ClassCreate */
static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name,
                                           PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) {
    PyObject *ns;
    if (metaclass) {
        PyObject *prep = __Pyx_PyObject_GetAttrStrNoError(metaclass, __pyx_mstate_global->__pyx_n_u_prepare);
        if (prep) {
            PyObject *pargs[3] = {NULL, name, bases};
            ns = __Pyx_PyObject_FastCallDict(prep, pargs+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, mkw);
            Py_DECREF(prep);
        } else {
            if (unlikely(PyErr_Occurred()))
                return NULL;
            ns = PyDict_New();
        }
    } else {
        ns = PyDict_New();
    }
    if (unlikely(!ns))
        return NULL;
    if (unlikely(PyObject_SetItem(ns, __pyx_mstate_global->__pyx_n_u_module, modname) < 0)) goto bad;
    if (unlikely(PyObject_SetItem(ns, __pyx_mstate_global->__pyx_n_u_qualname, qualname) < 0)) goto bad;
    if (unlikely(doc && PyObject_SetItem(ns, __pyx_mstate_global->__pyx_n_u_doc, doc) < 0)) goto bad;
    return ns;
bad:
    Py_DECREF(ns);
    return NULL;
}
static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases,
                                      PyObject *dict, PyObject *mkw,
                                      int calculate_metaclass, int allow_py2_metaclass) {
    PyObject *result;
    PyObject *owned_metaclass = NULL;
    PyObject *margs[4] = {NULL, name, bases, dict};
    if (allow_py2_metaclass) {
        owned_metaclass = PyObject_GetItem(dict, __pyx_mstate_global->__pyx_n_u_metaclass);
        if (owned_metaclass) {
            metaclass = owned_metaclass;
        } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) {
            PyErr_Clear();
        } else {
            return NULL;
        }
    }
    if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) {
        metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases);
        Py_XDECREF(owned_metaclass);
        if (unlikely(!metaclass))
            return NULL;
        owned_metaclass = metaclass;
    }
    result = __Pyx_PyObject_FastCallDict(metaclass, margs+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, mkw);
    Py_XDECREF(owned_metaclass);
    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 (__Pyx_TypeCheck(method, &PyMethodDescr_Type))
#endif
    {
#if CYTHON_COMPILING_IN_LIMITED_API
        return PyErr_Format(
            PyExc_SystemError,
            "Cython cannot yet handle classmethod on a MethodDescriptorType (%S) in limited API mode. "
            "This is most likely a classmethod in a cdef class method with binding=False. "
            "Try setting 'binding' to True.",
            method);
#elif CYTHON_COMPILING_IN_GRAAL && defined(GRAALPY_VERSION_NUM) && GRAALPY_VERSION_NUM > 0x19000000
        PyTypeObject *d_type = GraalPyDescrObject_GetType(method);
        return PyDescr_NewClassMethod(d_type, GraalPyMethodDescrObject_GetMethod(method));
#elif CYTHON_COMPILING_IN_GRAAL
        PyTypeObject *d_type = PyDescrObject_GetType(method);
        return PyDescr_NewClassMethod(d_type, PyMethodDescrObject_GetMethod(method));
#else
        PyMethodDescrObject *descr = (PyMethodDescrObject *)method;
        PyTypeObject *d_type = descr->d_common.d_type;
        return PyDescr_NewClassMethod(d_type, descr->d_method);
#endif
    }
#endif
#if !CYTHON_COMPILING_IN_LIMITED_API
    else if (PyMethod_Check(method)) {
        return PyClassMethod_New(PyMethod_GET_FUNCTION(method));
    }
    else {
        return PyClassMethod_New(method);
    }
#else
    {
        PyObject *func=NULL;
        PyObject *builtins, *classmethod, *classmethod_str, *result=NULL;
        if (__Pyx_TypeCheck(method, __pyx_mstate_global->__Pyx_CachedMethodType)) {
            func = PyObject_GetAttrString(method, "__func__");
            if (!func) goto bad;
        } else {
            func = method;
            Py_INCREF(func);
        }
        builtins = PyEval_GetBuiltins(); // borrowed
        if (unlikely(!builtins)) goto bad;
        classmethod_str = PyUnicode_FromString("classmethod");
        if (unlikely(!classmethod_str)) goto bad;
        classmethod = PyObject_GetItem(builtins, classmethod_str);
        Py_DECREF(classmethod_str);
        if (unlikely(!classmethod)) goto bad;
        result = PyObject_CallFunctionObjArgs(classmethod, func, NULL);
        Py_DECREF(classmethod);
        bad:
        Py_XDECREF(func);
        return result;
    }
#endif
}

/* RegisterModuleCleanup */
#if 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 (used by AddTraceback) */
#if CYTHON_CLINE_IN_TRACEBACK && CYTHON_CLINE_IN_TRACEBACK_RUNTIME
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000
#define __Pyx_PyProbablyModule_GetDict(o) __Pyx_XNewRef(PyModule_GetDict(o))
#elif !CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
#define __Pyx_PyProbablyModule_GetDict(o) PyObject_GenericGetDict(o, NULL);
#else
PyObject* __Pyx_PyProbablyModule_GetDict(PyObject *o) {
    PyObject **dict_ptr = _PyObject_GetDictPtr(o);
    return dict_ptr ? __Pyx_XNewRef(*dict_ptr) : NULL;
}
#endif
static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) {
    PyObject *use_cline = NULL;
    PyObject *ptype, *pvalue, *ptraceback;
    PyObject *cython_runtime_dict;
    CYTHON_MAYBE_UNUSED_VAR(tstate);
    if (unlikely(!__pyx_mstate_global->__pyx_cython_runtime)) {
        return c_line;
    }
    __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
    cython_runtime_dict = __Pyx_PyProbablyModule_GetDict(__pyx_mstate_global->__pyx_cython_runtime);
    if (likely(cython_runtime_dict)) {
        __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
            use_cline, cython_runtime_dict,
            __Pyx_PyDict_SetDefault(cython_runtime_dict, __pyx_mstate_global->__pyx_n_u_cline_in_traceback, Py_False))
    }
    if (use_cline == NULL || use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
        c_line = 0;
    }
    Py_XDECREF(use_cline);
    Py_XDECREF(cython_runtime_dict);
    __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
    return c_line;
}
#endif

/* CodeObjectCache (used by AddTraceback) */
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 __Pyx_CachedCodeObjectType *__pyx__find_code_object(struct __Pyx_CodeObjectCache *code_cache, int code_line) {
    __Pyx_CachedCodeObjectType* code_object;
    int pos;
    if (unlikely(!code_line) || unlikely(!code_cache->entries)) {
        return NULL;
    }
    pos = __pyx_bisect_code_objects(code_cache->entries, code_cache->count, code_line);
    if (unlikely(pos >= code_cache->count) || unlikely(code_cache->entries[pos].code_line != code_line)) {
        return NULL;
    }
    code_object = code_cache->entries[pos].code_object;
    Py_INCREF(code_object);
    return code_object;
}
static __Pyx_CachedCodeObjectType *__pyx_find_code_object(int code_line) {
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && !CYTHON_ATOMICS
    (void)__pyx__find_code_object;
    return NULL; // Most implementation should have atomics. But otherwise, don't make it thread-safe, just miss.
#else
    struct __Pyx_CodeObjectCache *code_cache = &__pyx_mstate_global->__pyx_code_cache;
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    __pyx_nonatomic_int_type old_count = __pyx_atomic_incr_acq_rel(&code_cache->accessor_count);
    if (old_count < 0) {
        __pyx_atomic_decr_acq_rel(&code_cache->accessor_count);
        return NULL;
    }
#endif
    __Pyx_CachedCodeObjectType *result = __pyx__find_code_object(code_cache, code_line);
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    __pyx_atomic_decr_acq_rel(&code_cache->accessor_count);
#endif
    return result;
#endif
}
static void __pyx__insert_code_object(struct __Pyx_CodeObjectCache *code_cache, int code_line, __Pyx_CachedCodeObjectType* code_object)
{
    int pos, i;
    __Pyx_CodeObjectCacheEntry* entries = code_cache->entries;
    if (unlikely(!code_line)) {
        return;
    }
    if (unlikely(!entries)) {
        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
        if (likely(entries)) {
            code_cache->entries = entries;
            code_cache->max_count = 64;
            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(code_cache->entries, code_cache->count, code_line);
    if ((pos < code_cache->count) && unlikely(code_cache->entries[pos].code_line == code_line)) {
        __Pyx_CachedCodeObjectType* tmp = entries[pos].code_object;
        entries[pos].code_object = code_object;
        Py_INCREF(code_object);
        Py_DECREF(tmp);
        return;
    }
    if (code_cache->count == code_cache->max_count) {
        int new_max = code_cache->max_count + 64;
        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
            code_cache->entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry));
        if (unlikely(!entries)) {
            return;
        }
        code_cache->entries = entries;
        code_cache->max_count = new_max;
    }
    for (i=code_cache->count; i>pos; i--) {
        entries[i] = entries[i-1];
    }
    entries[pos].code_line = code_line;
    entries[pos].code_object = code_object;
    code_cache->count++;
    Py_INCREF(code_object);
}
static void __pyx_insert_code_object(int code_line, __Pyx_CachedCodeObjectType* code_object) {
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && !CYTHON_ATOMICS
    (void)__pyx__insert_code_object;
    return; // Most implementation should have atomics. But otherwise, don't make it thread-safe, just fail.
#else
    struct __Pyx_CodeObjectCache *code_cache = &__pyx_mstate_global->__pyx_code_cache;
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    __pyx_nonatomic_int_type expected = 0;
    if (!__pyx_atomic_int_cmp_exchange(&code_cache->accessor_count, &expected, INT_MIN)) {
        return;
    }
#endif
    __pyx__insert_code_object(code_cache, code_line, code_object);
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    __pyx_atomic_sub(&code_cache->accessor_count, INT_MIN);
#endif
#endif
}

/* AddTraceback */
#include "compile.h"
#include "frameobject.h"
#include "traceback.h"
#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API && !defined(PYPY_VERSION)
  #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 = PyObject_Call(replace, __pyx_mstate_global->__pyx_empty_tuple, scratch_dict);
        Py_DECREF(replace);
        return result;
    }
    PyErr_Clear();
    return NULL;
}
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) {
        c_line = __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line);
    }
    PyErr_Fetch(&exc_type, &exc_value, &exc_traceback);
    code_object = __pyx_find_code_object(c_line ? -c_line : py_line);
    if (!code_object) {
        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;
        if (c_line) {
            py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
        } else {
            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;
        __pyx_insert_code_object(c_line ? -c_line : py_line, code_object);
    } else {
        dict = PyDict_New();
    }
    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 (c_line) {
        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;
    }
    py_code = PyCode_NewEmpty(filename, funcname, py_line);
    Py_XDECREF(py_funcname);
    return py_code;
bad:
    Py_XDECREF(py_funcname);
    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_mstate_global->__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_PyLong_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 (unlikely(!PyLong_Check(x))) {
        int val;
        PyObject *tmp = __Pyx_PyNumber_Long(x);
        if (!tmp) return (int) -1;
        val = __Pyx_PyLong_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))
        } else if ((sizeof(int) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
        }
    } 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))
        } else if ((sizeof(int) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x))
        }
    }
    {
        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_PyLong_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 (unlikely(!PyLong_Check(x))) {
        MPI_Aint val;
        PyObject *tmp = __Pyx_PyNumber_Long(x);
        if (!tmp) return (MPI_Aint) -1;
        val = __Pyx_PyLong_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))
        } else if ((sizeof(MPI_Aint) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(MPI_Aint, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
        }
    } 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))
        } else if ((sizeof(MPI_Aint) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(MPI_Aint, PY_LONG_LONG, PyLong_AsLongLong(x))
        }
    }
    {
        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_PyLong_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 PyLong_FromLong((long) value);
        } else if (sizeof(MPI_Aint) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#if !CYTHON_COMPILING_IN_PYPY
        } 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 PyLong_FromLong((long) value);
        } else if (sizeof(MPI_Aint) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
        }
    }
    {
        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, *kwds = NULL;
        PyObject *py_bytes = 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;
        {
            PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str };
            if (!is_unsigned) {
                kwds = __Pyx_MakeVectorcallBuilderKwds(1);
                if (!kwds) goto limited_bad;
                if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad;
            }
            result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds);
        }
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyLong_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 PyLong_FromLong((long) value);
        } else if (sizeof(int) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#if !CYTHON_COMPILING_IN_PYPY
        } 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 PyLong_FromLong((long) value);
        } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
        }
    }
    {
        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, *kwds = NULL;
        PyObject *py_bytes = 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;
        {
            PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str };
            if (!is_unsigned) {
                kwds = __Pyx_MakeVectorcallBuilderKwds(1);
                if (!kwds) goto limited_bad;
                if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad;
            }
            result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds);
        }
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyLong_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 PyLong_FromLong((long) value);
        } else if (sizeof(int) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#if !CYTHON_COMPILING_IN_PYPY
        } 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 PyLong_FromLong((long) value);
        } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
        }
    }
    {
        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, *kwds = NULL;
        PyObject *py_bytes = 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;
        {
            PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str };
            if (!is_unsigned) {
                kwds = __Pyx_MakeVectorcallBuilderKwds(1);
                if (!kwds) goto limited_bad;
                if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad;
            }
            result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds);
        }
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntFromPy */
static CYTHON_INLINE MPI_Count __Pyx_PyLong_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 (unlikely(!PyLong_Check(x))) {
        MPI_Count val;
        PyObject *tmp = __Pyx_PyNumber_Long(x);
        if (!tmp) return (MPI_Count) -1;
        val = __Pyx_PyLong_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))
        } else if ((sizeof(MPI_Count) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(MPI_Count, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
        }
    } 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))
        } else if ((sizeof(MPI_Count) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(MPI_Count, PY_LONG_LONG, PyLong_AsLongLong(x))
        }
    }
    {
        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;
}

/* CIntFromPy */
static CYTHON_INLINE MPI_Offset __Pyx_PyLong_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 (unlikely(!PyLong_Check(x))) {
        MPI_Offset val;
        PyObject *tmp = __Pyx_PyNumber_Long(x);
        if (!tmp) return (MPI_Offset) -1;
        val = __Pyx_PyLong_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))
        } else if ((sizeof(MPI_Offset) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(MPI_Offset, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
        }
    } 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))
        } else if ((sizeof(MPI_Offset) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(MPI_Offset, PY_LONG_LONG, PyLong_AsLongLong(x))
        }
    }
    {
        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_PyLong_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 PyLong_FromLong((long) value);
        } else if (sizeof(long) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#if !CYTHON_COMPILING_IN_PYPY
        } 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 PyLong_FromLong((long) value);
        } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
        }
    }
    {
        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, *kwds = NULL;
        PyObject *py_bytes = 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;
        {
            PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str };
            if (!is_unsigned) {
                kwds = __Pyx_MakeVectorcallBuilderKwds(1);
                if (!kwds) goto limited_bad;
                if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad;
            }
            result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds);
        }
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntFromPy */
static CYTHON_INLINE unsigned int __Pyx_PyLong_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 (unlikely(!PyLong_Check(x))) {
        unsigned int val;
        PyObject *tmp = __Pyx_PyNumber_Long(x);
        if (!tmp) return (unsigned int) -1;
        val = __Pyx_PyLong_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))
        } else if ((sizeof(unsigned int) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(unsigned int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
        }
    } 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))
        } else if ((sizeof(unsigned int) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(unsigned int, PY_LONG_LONG, PyLong_AsLongLong(x))
        }
    }
    {
        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_PyLong_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 PyLong_FromLong((long) value);
        } else if (sizeof(unsigned int) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#if !CYTHON_COMPILING_IN_PYPY
        } 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 PyLong_FromLong((long) value);
        } else if (sizeof(unsigned int) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
        }
    }
    {
        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, *kwds = NULL;
        PyObject *py_bytes = 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;
        {
            PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str };
            if (!is_unsigned) {
                kwds = __Pyx_MakeVectorcallBuilderKwds(1);
                if (!kwds) goto limited_bad;
                if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad;
            }
            result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds);
        }
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntFromPy */
static CYTHON_INLINE unsigned char __Pyx_PyLong_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 (unlikely(!PyLong_Check(x))) {
        unsigned char val;
        PyObject *tmp = __Pyx_PyNumber_Long(x);
        if (!tmp) return (unsigned char) -1;
        val = __Pyx_PyLong_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))
        } else if ((sizeof(unsigned char) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(unsigned char, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
        }
    } 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))
        } else if ((sizeof(unsigned char) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(unsigned char, PY_LONG_LONG, PyLong_AsLongLong(x))
        }
    }
    {
        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_PyLong_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 PyLong_FromLong((long) value);
        } else if (sizeof(MPI_Count) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#if !CYTHON_COMPILING_IN_PYPY
        } 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 PyLong_FromLong((long) value);
        } else if (sizeof(MPI_Count) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
        }
    }
    {
        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, *kwds = NULL;
        PyObject *py_bytes = 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;
        {
            PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str };
            if (!is_unsigned) {
                kwds = __Pyx_MakeVectorcallBuilderKwds(1);
                if (!kwds) goto limited_bad;
                if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad;
            }
            result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds);
        }
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyLong_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 PyLong_FromLong((long) value);
        } else if (sizeof(MPI_Offset) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#if !CYTHON_COMPILING_IN_PYPY
        } 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 PyLong_FromLong((long) value);
        } else if (sizeof(MPI_Offset) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
        }
    }
    {
        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, *kwds = NULL;
        PyObject *py_bytes = 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;
        {
            PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str };
            if (!is_unsigned) {
                kwds = __Pyx_MakeVectorcallBuilderKwds(1);
                if (!kwds) goto limited_bad;
                if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad;
            }
            result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds);
        }
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntFromPy */
static CYTHON_INLINE size_t __Pyx_PyLong_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 (unlikely(!PyLong_Check(x))) {
        size_t val;
        PyObject *tmp = __Pyx_PyNumber_Long(x);
        if (!tmp) return (size_t) -1;
        val = __Pyx_PyLong_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))
        } else if ((sizeof(size_t) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
        }
    } 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))
        } else if ((sizeof(size_t) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(size_t, PY_LONG_LONG, PyLong_AsLongLong(x))
        }
    }
    {
        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_PyLong_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 PyLong_FromLong((long) value);
        } else if (sizeof(MPI_Fint) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#if !CYTHON_COMPILING_IN_PYPY
        } 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 PyLong_FromLong((long) value);
        } else if (sizeof(MPI_Fint) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
        }
    }
    {
        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, *kwds = NULL;
        PyObject *py_bytes = 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;
        {
            PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str };
            if (!is_unsigned) {
                kwds = __Pyx_MakeVectorcallBuilderKwds(1);
                if (!kwds) goto limited_bad;
                if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad;
            }
            result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds);
        }
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntFromPy */
static CYTHON_INLINE MPI_Fint __Pyx_PyLong_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 (unlikely(!PyLong_Check(x))) {
        MPI_Fint val;
        PyObject *tmp = __Pyx_PyNumber_Long(x);
        if (!tmp) return (MPI_Fint) -1;
        val = __Pyx_PyLong_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))
        } else if ((sizeof(MPI_Fint) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(MPI_Fint, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
        }
    } 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))
        } else if ((sizeof(MPI_Fint) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(MPI_Fint, PY_LONG_LONG, PyLong_AsLongLong(x))
        }
    }
    {
        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;
}

/* FormatTypeName */
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030d0000
static __Pyx_TypeName
__Pyx_PyType_GetFullyQualifiedName(PyTypeObject* tp)
{
    PyObject *module = NULL, *name = NULL, *result = NULL;
    #if __PYX_LIMITED_VERSION_HEX < 0x030b0000
    name = __Pyx_PyObject_GetAttrStr((PyObject *)tp,
                                               __pyx_mstate_global->__pyx_n_u_qualname);
    #else
    name = PyType_GetQualName(tp);
    #endif
    if (unlikely(name == NULL) || unlikely(!PyUnicode_Check(name))) goto bad;
    module = __Pyx_PyObject_GetAttrStr((PyObject *)tp,
                                               __pyx_mstate_global->__pyx_n_u_module);
    if (unlikely(module == NULL) || unlikely(!PyUnicode_Check(module))) goto bad;
    if (PyUnicode_CompareWithASCIIString(module, "builtins") == 0) {
        result = name;
        name = NULL;
        goto done;
    }
    result = PyUnicode_FromFormat("%U.%U", module, name);
    if (unlikely(result == NULL)) goto bad;
  done:
    Py_XDECREF(name);
    Py_XDECREF(module);
    return result;
  bad:
    PyErr_Clear();
    if (name) {
        result = name;
        name = NULL;
    } else {
        result = __Pyx_NewRef(__pyx_mstate_global->__pyx_kp_u__135);
    }
    goto done;
}
#endif

/* CIntFromPy */
static CYTHON_INLINE long __Pyx_PyLong_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 (unlikely(!PyLong_Check(x))) {
        long val;
        PyObject *tmp = __Pyx_PyNumber_Long(x);
        if (!tmp) return (long) -1;
        val = __Pyx_PyLong_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))
        } else if ((sizeof(long) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
        }
    } 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))
        } else if ((sizeof(long) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x))
        }
    }
    {
        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;
}

/* GetRuntimeVersion */
#if __PYX_LIMITED_VERSION_HEX < 0x030b0000
void __Pyx_init_runtime_version(void) {
    if (__Pyx_cached_runtime_version == 0) {
        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;
        }
        __Pyx_cached_runtime_version = version;
    }
}
#endif
static unsigned long __Pyx_get_runtime_version(void) {
#if __PYX_LIMITED_VERSION_HEX >= 0x030b0000
    return Py_Version & ~0xFFUL;
#else
    return __Pyx_cached_runtime_version;
#endif
}

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

/* NewCodeObj */
#if CYTHON_COMPILING_IN_LIMITED_API
    static 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, "iiiiiOOOOOOiOOO", 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, "iiiiiiOOOOOOiOOO", 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, "iiiiiiOOOOOOOiOOOO", 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;
    }
#elif PY_VERSION_HEX >= 0x030B0000
  static 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;
    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, __pyx_mstate_global->__pyx_empty_bytes);
    #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030c00A1
    if (likely(result))
        result->_co_firsttraceable = 0;
    #endif
    return result;
  }
#elif !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
static PyObject* __Pyx_PyCode_New(
        const __Pyx_PyCode_New_function_description descr,
        PyObject * const *varnames,
        PyObject *filename,
        PyObject *funcname,
        PyObject *line_table,
        PyObject *tuple_dedup_map
) {
    PyObject *code_obj = NULL, *varnames_tuple_dedup = NULL, *code_bytes = NULL;
    Py_ssize_t var_count = (Py_ssize_t) descr.nlocals;
    PyObject *varnames_tuple = PyTuple_New(var_count);
    if (unlikely(!varnames_tuple)) return NULL;
    for (Py_ssize_t i=0; i < var_count; i++) {
        Py_INCREF(varnames[i]);
        if (__Pyx_PyTuple_SET_ITEM(varnames_tuple, i, varnames[i]) != (0)) goto done;
    }
    #if CYTHON_COMPILING_IN_LIMITED_API
    varnames_tuple_dedup = PyDict_GetItem(tuple_dedup_map, varnames_tuple);
    if (!varnames_tuple_dedup) {
        if (unlikely(PyDict_SetItem(tuple_dedup_map, varnames_tuple, varnames_tuple) < 0)) goto done;
        varnames_tuple_dedup = varnames_tuple;
    }
    #else
    varnames_tuple_dedup = PyDict_SetDefault(tuple_dedup_map, varnames_tuple, varnames_tuple);
    if (unlikely(!varnames_tuple_dedup)) goto done;
    #endif
    #if CYTHON_AVOID_BORROWED_REFS
    Py_INCREF(varnames_tuple_dedup);
    #endif
    if (__PYX_LIMITED_VERSION_HEX >= (0x030b0000) && line_table != NULL && !CYTHON_COMPILING_IN_GRAAL) {
        Py_ssize_t line_table_length = __Pyx_PyBytes_GET_SIZE(line_table);
        #if !CYTHON_ASSUME_SAFE_SIZE
        if (unlikely(line_table_length == -1)) goto done;
        #endif
        Py_ssize_t code_len = (line_table_length * 2 + 4) & ~3LL;
        code_bytes = PyBytes_FromStringAndSize(NULL, code_len);
        if (unlikely(!code_bytes)) goto done;
        char* c_code_bytes = PyBytes_AsString(code_bytes);
        if (unlikely(!c_code_bytes)) goto done;
        memset(c_code_bytes, 0, (size_t) code_len);
    }
    code_obj = (PyObject*) __Pyx__PyCode_New(
        (int) descr.argcount,
        (int) descr.num_posonly_args,
        (int) descr.num_kwonly_args,
        (int) descr.nlocals,
        0,
        (int) descr.flags,
        code_bytes ? code_bytes : __pyx_mstate_global->__pyx_empty_bytes,
        __pyx_mstate_global->__pyx_empty_tuple,
        __pyx_mstate_global->__pyx_empty_tuple,
        varnames_tuple_dedup,
        __pyx_mstate_global->__pyx_empty_tuple,
        __pyx_mstate_global->__pyx_empty_tuple,
        filename,
        funcname,
        (int) descr.first_line,
        (__PYX_LIMITED_VERSION_HEX >= (0x030b0000) && line_table) ? line_table : __pyx_mstate_global->__pyx_empty_bytes
    );
done:
    Py_XDECREF(code_bytes);
    #if CYTHON_AVOID_BORROWED_REFS
    Py_XDECREF(varnames_tuple_dedup);
    #endif
    Py_DECREF(varnames_tuple);
    return code_obj;
}

/* DecompressString */
static PyObject *__Pyx_DecompressString(const char *s, Py_ssize_t length, int algo) {
    PyObject *module = NULL, *decompress, *compressed_bytes, *decompressed;
    const char* module_name = algo == 3 ? "compression.zstd" : algo == 2 ? "bz2" : "zlib";
    PyObject *methodname = PyUnicode_FromString("decompress");
    if (unlikely(!methodname)) return NULL;
    #if __PYX_LIMITED_VERSION_HEX >= 0x030e0000
    if (algo == 3) {
        PyObject *fromlist = Py_BuildValue("[O]", methodname);
        if (unlikely(!fromlist)) goto bad;
        module = PyImport_ImportModuleLevel("compression.zstd", NULL, NULL, fromlist, 0);
        Py_DECREF(fromlist);
    } else
    #endif
        module = PyImport_ImportModule(module_name);
    if (unlikely(!module)) goto import_failed;
    decompress = PyObject_GetAttr(module, methodname);
    if (unlikely(!decompress)) goto import_failed;
    {
        #ifdef __cplusplus
            char *memview_bytes = const_cast<char*>(s);
        #else
            #if defined(__clang__)
              #pragma clang diagnostic push
              #pragma clang diagnostic ignored "-Wcast-qual"
            #elif !defined(__INTEL_COMPILER) && defined(__GNUC__)
              #pragma GCC diagnostic push
              #pragma GCC diagnostic ignored "-Wcast-qual"
            #endif
            char *memview_bytes = (char*) s;
            #if defined(__clang__)
              #pragma clang diagnostic pop
            #elif !defined(__INTEL_COMPILER) && defined(__GNUC__)
              #pragma GCC diagnostic pop
            #endif
        #endif
        #if CYTHON_COMPILING_IN_LIMITED_API && !defined(PyBUF_READ)
        int memview_flags = 0x100;
        #else
        int memview_flags = PyBUF_READ;
        #endif
        compressed_bytes = PyMemoryView_FromMemory(memview_bytes, length, memview_flags);
    }
    if (unlikely(!compressed_bytes)) {
        Py_DECREF(decompress);
        goto bad;
    }
    decompressed = PyObject_CallFunctionObjArgs(decompress, compressed_bytes, NULL);
    Py_DECREF(compressed_bytes);
    Py_DECREF(decompress);
    Py_DECREF(module);
    Py_DECREF(methodname);
    return decompressed;
import_failed:
    PyErr_Format(PyExc_ImportError,
        "Failed to import '%.20s.decompress' - cannot initialise module strings. "
        "String compression was configured with the C macro 'CYTHON_COMPRESS_STRINGS=%d'.",
        module_name, algo);
bad:
    Py_XDECREF(module);
    Py_DECREF(methodname);
    return NULL;
}

#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_UTF8
static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
    if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL;
#if CYTHON_COMPILING_IN_LIMITED_API
    {
        const char* result;
        Py_ssize_t unicode_length;
        CYTHON_MAYBE_UNUSED_VAR(unicode_length); // only for __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
        #if __PYX_LIMITED_VERSION_HEX < 0x030A0000
        if (unlikely(PyArg_Parse(o, "s#", &result, length) < 0)) return NULL;
        #else
        result = PyUnicode_AsUTF8AndSize(o, length);
        #endif
        #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
        unicode_length = PyUnicode_GetLength(o);
        if (unlikely(unicode_length < 0)) return NULL;
        if (unlikely(unicode_length != *length)) {
            PyUnicode_AsASCIIString(o);
            return NULL;
        }
        #endif
        return result;
    }
#else
#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_UTF8
    if (PyUnicode_Check(o)) {
        return __Pyx_PyUnicode_AsStringAndSize(o, length);
    } else
#endif
    if (PyByteArray_Check(o)) {
#if (CYTHON_ASSUME_SAFE_SIZE && CYTHON_ASSUME_SAFE_MACROS) || (CYTHON_COMPILING_IN_PYPY && (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)))
        *length = PyByteArray_GET_SIZE(o);
        return PyByteArray_AS_STRING(o);
#else
        *length = PyByteArray_Size(o);
        if (*length == -1) return NULL;
        return PyByteArray_AsString(o);
#endif
    } else
    {
        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_LongWrongResultType(PyObject* result) {
    __Pyx_TypeName result_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(result));
    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;
    }
    PyErr_Format(PyExc_TypeError,
                 "__int__ returned non-int (type " __Pyx_FMT_TYPENAME ")",
                 result_type_name);
    __Pyx_DECREF_TypeName(result_type_name);
    Py_DECREF(result);
    return NULL;
}
static CYTHON_INLINE PyObject* __Pyx_PyNumber_Long(PyObject* x) {
#if CYTHON_USE_TYPE_SLOTS
  PyNumberMethods *m;
#endif
  PyObject *res = NULL;
  if (likely(PyLong_Check(x)))
      return __Pyx_NewRef(x);
#if CYTHON_USE_TYPE_SLOTS
  m = Py_TYPE(x)->tp_as_number;
  if (likely(m && m->nb_int)) {
      res = m->nb_int(x);
  }
#else
  if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) {
      res = PyNumber_Long(x);
  }
#endif
  if (likely(res)) {
      if (unlikely(!PyLong_CheckExact(res))) {
          return __Pyx_PyNumber_LongWrongResultType(res);
      }
  }
  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 (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 = PyLong_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);
  } else {
    Py_ssize_t ival;
    PyObject *x;
    x = PyNumber_Index(o);
    if (!x) return -1;
    ival = PyLong_AsLong(x);
    Py_DECREF(x);
    return ival;
  }
}
static CYTHON_INLINE PyObject *__Pyx_Owned_Py_None(int b) {
    CYTHON_UNUSED_VAR(b);
    return __Pyx_NewRef(Py_None);
}
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
  return __Pyx_NewRef(b ? Py_True: Py_False);
}
static CYTHON_INLINE PyObject * __Pyx_PyLong_FromSize_t(size_t ival) {
    return PyLong_FromSize_t(ival);
}


/* MultiPhaseInitModuleState */
#if CYTHON_PEP489_MULTI_PHASE_INIT && CYTHON_USE_MODULE_STATE
#ifndef CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
#if (CYTHON_COMPILING_IN_LIMITED_API || PY_VERSION_HEX >= 0x030C0000)
  #define CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE 1
#else
  #define CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE 0
#endif
#endif
#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE && !CYTHON_ATOMICS
#error "Module state with PEP489 requires atomics. Currently that's one of\
 C11, C++11, gcc atomic intrinsics or MSVC atomic intrinsics"
#endif
#if !CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
#define __Pyx_ModuleStateLookup_Lock()
#define __Pyx_ModuleStateLookup_Unlock()
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d0000
static PyMutex __Pyx_ModuleStateLookup_mutex = {0};
#define __Pyx_ModuleStateLookup_Lock() PyMutex_Lock(&__Pyx_ModuleStateLookup_mutex)
#define __Pyx_ModuleStateLookup_Unlock() PyMutex_Unlock(&__Pyx_ModuleStateLookup_mutex)
#elif defined(__cplusplus) && __cplusplus >= 201103L
#include <mutex>
static std::mutex __Pyx_ModuleStateLookup_mutex;
#define __Pyx_ModuleStateLookup_Lock() __Pyx_ModuleStateLookup_mutex.lock()
#define __Pyx_ModuleStateLookup_Unlock() __Pyx_ModuleStateLookup_mutex.unlock()
#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ > 201112L) && !defined(__STDC_NO_THREADS__)
#include <threads.h>
static mtx_t __Pyx_ModuleStateLookup_mutex;
static once_flag __Pyx_ModuleStateLookup_mutex_once_flag = ONCE_FLAG_INIT;
static void __Pyx_ModuleStateLookup_initialize_mutex(void) {
    mtx_init(&__Pyx_ModuleStateLookup_mutex, mtx_plain);
}
#define __Pyx_ModuleStateLookup_Lock()\
  call_once(&__Pyx_ModuleStateLookup_mutex_once_flag, __Pyx_ModuleStateLookup_initialize_mutex);\
  mtx_lock(&__Pyx_ModuleStateLookup_mutex)
#define __Pyx_ModuleStateLookup_Unlock() mtx_unlock(&__Pyx_ModuleStateLookup_mutex)
#elif defined(HAVE_PTHREAD_H)
#include <pthread.h>
static pthread_mutex_t __Pyx_ModuleStateLookup_mutex = PTHREAD_MUTEX_INITIALIZER;
#define __Pyx_ModuleStateLookup_Lock() pthread_mutex_lock(&__Pyx_ModuleStateLookup_mutex)
#define __Pyx_ModuleStateLookup_Unlock() pthread_mutex_unlock(&__Pyx_ModuleStateLookup_mutex)
#elif defined(_WIN32)
#include <Windows.h>  // synchapi.h on its own doesn't work
static SRWLOCK __Pyx_ModuleStateLookup_mutex = SRWLOCK_INIT;
#define __Pyx_ModuleStateLookup_Lock() AcquireSRWLockExclusive(&__Pyx_ModuleStateLookup_mutex)
#define __Pyx_ModuleStateLookup_Unlock() ReleaseSRWLockExclusive(&__Pyx_ModuleStateLookup_mutex)
#else
#error "No suitable lock available for CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE.\
 Requires C standard >= C11, or C++ standard >= C++11,\
 or pthreads, or the Windows 32 API, or Python >= 3.13."
#endif
typedef struct {
    int64_t id;
    PyObject *module;
} __Pyx_InterpreterIdAndModule;
typedef struct {
    char interpreter_id_as_index;
    Py_ssize_t count;
    Py_ssize_t allocated;
    __Pyx_InterpreterIdAndModule table[1];
} __Pyx_ModuleStateLookupData;
#define __PYX_MODULE_STATE_LOOKUP_SMALL_SIZE 32
#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
static __pyx_atomic_int_type __Pyx_ModuleStateLookup_read_counter = 0;
#endif
#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
static __pyx_atomic_ptr_type __Pyx_ModuleStateLookup_data = 0;
#else
static __Pyx_ModuleStateLookupData* __Pyx_ModuleStateLookup_data = NULL;
#endif
static __Pyx_InterpreterIdAndModule* __Pyx_State_FindModuleStateLookupTableLowerBound(
        __Pyx_InterpreterIdAndModule* table,
        Py_ssize_t count,
        int64_t interpreterId) {
    __Pyx_InterpreterIdAndModule* begin = table;
    __Pyx_InterpreterIdAndModule* end = begin + count;
    if (begin->id == interpreterId) {
        return begin;
    }
    while ((end - begin) > __PYX_MODULE_STATE_LOOKUP_SMALL_SIZE) {
        __Pyx_InterpreterIdAndModule* halfway = begin + (end - begin)/2;
        if (halfway->id == interpreterId) {
            return halfway;
        }
        if (halfway->id < interpreterId) {
            begin = halfway;
        } else {
            end = halfway;
        }
    }
    for (; begin < end; ++begin) {
        if (begin->id >= interpreterId) return begin;
    }
    return begin;
}
static PyObject *__Pyx_State_FindModule(CYTHON_UNUSED void* dummy) {
    int64_t interpreter_id = PyInterpreterState_GetID(__Pyx_PyInterpreterState_Get());
    if (interpreter_id == -1) return NULL;
#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
    __Pyx_ModuleStateLookupData* data = (__Pyx_ModuleStateLookupData*)__pyx_atomic_pointer_load_relaxed(&__Pyx_ModuleStateLookup_data);
    {
        __pyx_atomic_incr_acq_rel(&__Pyx_ModuleStateLookup_read_counter);
        if (likely(data)) {
            __Pyx_ModuleStateLookupData* new_data = (__Pyx_ModuleStateLookupData*)__pyx_atomic_pointer_load_acquire(&__Pyx_ModuleStateLookup_data);
            if (likely(data == new_data)) {
                goto read_finished;
            }
        }
        __pyx_atomic_decr_acq_rel(&__Pyx_ModuleStateLookup_read_counter);
        __Pyx_ModuleStateLookup_Lock();
        __pyx_atomic_incr_relaxed(&__Pyx_ModuleStateLookup_read_counter);
        data = (__Pyx_ModuleStateLookupData*)__pyx_atomic_pointer_load_relaxed(&__Pyx_ModuleStateLookup_data);
        __Pyx_ModuleStateLookup_Unlock();
    }
  read_finished:;
#else
    __Pyx_ModuleStateLookupData* data = __Pyx_ModuleStateLookup_data;
#endif
    __Pyx_InterpreterIdAndModule* found = NULL;
    if (unlikely(!data)) goto end;
    if (data->interpreter_id_as_index) {
        if (interpreter_id < data->count) {
            found = data->table+interpreter_id;
        }
    } else {
        found = __Pyx_State_FindModuleStateLookupTableLowerBound(
            data->table, data->count, interpreter_id);
    }
  end:
    {
        PyObject *result=NULL;
        if (found && found->id == interpreter_id) {
            result = found->module;
        }
#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
        __pyx_atomic_decr_acq_rel(&__Pyx_ModuleStateLookup_read_counter);
#endif
        return result;
    }
}
#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
static void __Pyx_ModuleStateLookup_wait_until_no_readers(void) {
    while (__pyx_atomic_load(&__Pyx_ModuleStateLookup_read_counter) != 0);
}
#else
#define __Pyx_ModuleStateLookup_wait_until_no_readers()
#endif
static int __Pyx_State_AddModuleInterpIdAsIndex(__Pyx_ModuleStateLookupData **old_data, PyObject* module, int64_t interpreter_id) {
    Py_ssize_t to_allocate = (*old_data)->allocated;
    while (to_allocate <= interpreter_id) {
        if (to_allocate == 0) to_allocate = 1;
        else to_allocate *= 2;
    }
    __Pyx_ModuleStateLookupData *new_data = *old_data;
    if (to_allocate != (*old_data)->allocated) {
         new_data = (__Pyx_ModuleStateLookupData *)realloc(
            *old_data,
            sizeof(__Pyx_ModuleStateLookupData)+(to_allocate-1)*sizeof(__Pyx_InterpreterIdAndModule));
        if (!new_data) {
            PyErr_NoMemory();
            return -1;
        }
        for (Py_ssize_t i = new_data->allocated; i < to_allocate; ++i) {
            new_data->table[i].id = i;
            new_data->table[i].module = NULL;
        }
        new_data->allocated = to_allocate;
    }
    new_data->table[interpreter_id].module = module;
    if (new_data->count < interpreter_id+1) {
        new_data->count = interpreter_id+1;
    }
    *old_data = new_data;
    return 0;
}
static void __Pyx_State_ConvertFromInterpIdAsIndex(__Pyx_ModuleStateLookupData *data) {
    __Pyx_InterpreterIdAndModule *read = data->table;
    __Pyx_InterpreterIdAndModule *write = data->table;
    __Pyx_InterpreterIdAndModule *end = read + data->count;
    for (; read<end; ++read) {
        if (read->module) {
            write->id = read->id;
            write->module = read->module;
            ++write;
        }
    }
    data->count = write - data->table;
    for (; write<end; ++write) {
        write->id = 0;
        write->module = NULL;
    }
    data->interpreter_id_as_index = 0;
}
static int __Pyx_State_AddModule(PyObject* module, CYTHON_UNUSED void* dummy) {
    int64_t interpreter_id = PyInterpreterState_GetID(__Pyx_PyInterpreterState_Get());
    if (interpreter_id == -1) return -1;
    int result = 0;
    __Pyx_ModuleStateLookup_Lock();
#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
    __Pyx_ModuleStateLookupData *old_data = (__Pyx_ModuleStateLookupData *)
            __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, 0);
#else
    __Pyx_ModuleStateLookupData *old_data = __Pyx_ModuleStateLookup_data;
#endif
    __Pyx_ModuleStateLookupData *new_data = old_data;
    if (!new_data) {
        new_data = (__Pyx_ModuleStateLookupData *)calloc(1, sizeof(__Pyx_ModuleStateLookupData));
        if (!new_data) {
            result = -1;
            PyErr_NoMemory();
            goto end;
        }
        new_data->allocated = 1;
        new_data->interpreter_id_as_index = 1;
    }
    __Pyx_ModuleStateLookup_wait_until_no_readers();
    if (new_data->interpreter_id_as_index) {
        if (interpreter_id < __PYX_MODULE_STATE_LOOKUP_SMALL_SIZE) {
            result = __Pyx_State_AddModuleInterpIdAsIndex(&new_data, module, interpreter_id);
            goto end;
        }
        __Pyx_State_ConvertFromInterpIdAsIndex(new_data);
    }
    {
        Py_ssize_t insert_at = 0;
        {
            __Pyx_InterpreterIdAndModule* lower_bound = __Pyx_State_FindModuleStateLookupTableLowerBound(
                new_data->table, new_data->count, interpreter_id);
            assert(lower_bound);
            insert_at = lower_bound - new_data->table;
            if (unlikely(insert_at < new_data->count && lower_bound->id == interpreter_id)) {
                lower_bound->module = module;
                goto end;  // already in table, nothing more to do
            }
        }
        if (new_data->count+1 >= new_data->allocated) {
            Py_ssize_t to_allocate = (new_data->count+1)*2;
            new_data =
                (__Pyx_ModuleStateLookupData*)realloc(
                    new_data,
                    sizeof(__Pyx_ModuleStateLookupData) +
                    (to_allocate-1)*sizeof(__Pyx_InterpreterIdAndModule));
            if (!new_data) {
                result = -1;
                new_data = old_data;
                PyErr_NoMemory();
                goto end;
            }
            new_data->allocated = to_allocate;
        }
        ++new_data->count;
        int64_t last_id = interpreter_id;
        PyObject *last_module = module;
        for (Py_ssize_t i=insert_at; i<new_data->count; ++i) {
            int64_t current_id = new_data->table[i].id;
            new_data->table[i].id = last_id;
            last_id = current_id;
            PyObject *current_module = new_data->table[i].module;
            new_data->table[i].module = last_module;
            last_module = current_module;
        }
    }
  end:
#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
    __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, new_data);
#else
    __Pyx_ModuleStateLookup_data = new_data;
#endif
    __Pyx_ModuleStateLookup_Unlock();
    return result;
}
static int __Pyx_State_RemoveModule(CYTHON_UNUSED void* dummy) {
    int64_t interpreter_id = PyInterpreterState_GetID(__Pyx_PyInterpreterState_Get());
    if (interpreter_id == -1) return -1;
    __Pyx_ModuleStateLookup_Lock();
#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
    __Pyx_ModuleStateLookupData *data = (__Pyx_ModuleStateLookupData *)
            __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, 0);
#else
    __Pyx_ModuleStateLookupData *data = __Pyx_ModuleStateLookup_data;
#endif
    if (data->interpreter_id_as_index) {
        if (interpreter_id < data->count) {
            data->table[interpreter_id].module = NULL;
        }
        goto done;
    }
    {
        __Pyx_ModuleStateLookup_wait_until_no_readers();
        __Pyx_InterpreterIdAndModule* lower_bound = __Pyx_State_FindModuleStateLookupTableLowerBound(
            data->table, data->count, interpreter_id);
        if (!lower_bound) goto done;
        if (lower_bound->id != interpreter_id) goto done;
        __Pyx_InterpreterIdAndModule *end = data->table+data->count;
        for (;lower_bound<end-1; ++lower_bound) {
            lower_bound->id = (lower_bound+1)->id;
            lower_bound->module = (lower_bound+1)->module;
        }
    }
    --data->count;
    if (data->count == 0) {
        free(data);
        data = NULL;
    }
  done:
#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
    __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, data);
#else
    __Pyx_ModuleStateLookup_data = data;
#endif
    __Pyx_ModuleStateLookup_Unlock();
    return 0;
}
#endif

/* #### Code section: utility_code_pragmas_end ### */
#ifdef _MSC_VER
#pragma warning( pop )
#endif



/* #### Code section: end ### */
#endif /* Py_PYTHON_H */
